Bad Tools - From Day 162 Q&A

naikrovek
gingerBill
C0D3
I think the problem with software and game is that people do a half-a** jobs with their games,software and tools. They also don't understanding whats happening in the low level.


I completely agree. I think part of the problem is that they expect the compiler or OS to "just handle it". The compiler can optimize basic things but not completely change what algorithm you use.

I don't know what the cause of the problem is. Teaching? Crap blogs? "Best practices"?

- Bill & his rant



"Not understanding whats happening in the low level" and "people doing half-ass jobs with their games, software, and tools" are two completely different things. Neither is necessarily a cause of, nor an effect of, the other. I've seen folks without any low level understanding do ACTUAL MAGIC in Java, and I've seen people who know by heart all the register names and most x86 instructions relevant to their work write code that is absolutely awful. An analogy: knowing how to properly use a screwdriver does not prevent you from stabbing yourself in the eye with it.


I don't agree with this at all and pretty sure if a Java program was actually good then that programmer prob went into C / C++ first because people who go into these high languages first often make the big mistake of error checking and either never error checked or use "try{}" which is a problem when going from something like Java to C or C++.

Of course we all have different opinions of what good software is and by saying something is good can mean it's not good for somebody else. For me, I don't play the game of fanboyism or going with the crowd that usually leads to ignoring the flaws of programs or language. In my experience I have ran into people's code I had to fix because they were thinking of how to program in Java rather than C++ in C++ and it was horrible because it cause memory leaks and caused the program to crash.
Yes, I am a "fanboy" of C and C++ but I know the problems of these languages and how horrible it can be and accept it but at least C and C++ has enough control of what you can do in order to avoid these flaws (if you are a good programmer), unlike not be able to ctrl-c out of a program and not having control of that.
Saying you don't want to understand low level is like a somebody not wanting to learn basic math before going to algebra, because that person thinks you don't need to know the basic because that person is so smart that you can skip ahead and everything will be fine. It's just snobby, IMO. It's the reason why they teach you assembly and basic computer system in Computer Science. You DO need to know some basic low level stuff.

Edited by popcorn on
Though this also means you need to be willing to pay for this educated people. I don't want to defend hacks and dirty jobs, but often this seems what people want to pay for.

To reiterate my earlier point, we seem to be living in a world where many people want "quick & cheap", not "quickest possible while retaining high quality"

Web-Dev came up a few times. I am not a web developer, but my personal perception is that "Web Development is easy, so we hire the cheapest person to give us the quickest result" is rampant there.
With that you either of course discourage anyone who is more expensive but professional. And on the other end you encourage people with no background doing a sloppy job for some cash.
From Anton Gerdelan blog :

"Cross-platform IDEs are dreadful software - they're a security blankey for bad programmers at best. Typical transgressions: {take ages to load, giant project files, bat-shit insane menu systems for adding libraries and paths, time-wasting "enhancement" tools, time-sucking Intellisense-type database building (RTFM!), frequent crashes, incredibly slow debugging steps, clunky clicking interface}.

Why Modern Software Sucks So Badly

The reason all of the modern choices annoy me, including Visual Studio, is because in the early 90s on MS-DOS machines with 7MHz we had an infinitely better debugger. On a computer 1000x less powerful we had a faster debugger for debugging the exact same software! Something has gone seriously wrong in the way we make software. Yes, we've educated a generation of really bad programmers. I was certainly one of them for about 10 years. Most modern programmers will come up with some argument about abstraction to defend why they never even use a debugger or need to have any idea about how their software works on the computer's hardware. Yes, it's because OOP and middleware philosophies have run away with themselves and the solution is just to keep buying more powerful computers - how ridiculous! [color=#ff0000]Do re-invent the wheel! Do write specific software! Do not use other people's general solutions![/color]It's tempting to create a modern, windowed, application, but as soon as you do you engage some abominable colossus of bad software like Qt, and you lose all your speed advantages to something which only has the job to render boxes and text! The greatest ever debugger was Borland's simple DOS-based thing. The TurboVision library for console applications was great. Stepping through code was super fast - much faster than now. Why can't we just recreate that?

Writing a GDB Front-End

NCurses
https://youtu.be/aOoRzioO4Tg

I'd never written a colourful terminal application, but I'd always wanted to, so it was fun trying Ncurses. Ncurses is kind of crummy compared to TurboVision - none of the windowing and panel stuff works reliably, so I just wrote every individual character to absolute positions. Yup. Lame. I've since found out that TurboVision has been ported to Linux/open-source so maybe it would work. Anyway, I quickly smashed together a scrolling text-file viewer from first principles - it could load a 1GB text file in under 5 seconds, and scroll text instantly! Good luck doing that in any IDE or any modern text editor! I knew I was onto the right philosophy at that point. I tried opening the same file in XCode - 5 minutes later it loaded and each line change or scroll caused it to hang for several seconds! This crashes most text editors, so XCode was probably better than most.