Things to do when the time machine arrives:
- (1976) Convince Gary Kildall to use LF for a newline separator, not CRLF, and “-” for command line switches, not “/”.
- (mid 70s) Give Bjarne Stroustrup (age 15) a Xerox Alto to play with, running SmallTalk 76
- (1978) Intel needed 24 bits of address space on the 8086, simply by making their paragraph sizes 8 bits instead of 4 bits
- (1971 or so) Have K&R provide C with a native string type
These are all just very minor tweaks, things that wouldn’t have taken much effort at the time, but that would have paid off handsomely if only we had known what the consequences of arbitrary decisions were going to be.
#1 means that file interoperability between Unix and MSDOS/NT/etc. systems would have been vastly improved. Whole classes of bugs would simply not have existed.
#2 would have meant that C++ would have been much more usable from the beginning. If Bjarne had shipped collection classes with the first vesion of C++, we would be ten years ahead of the game today. The language would have been much more dynamic than C++ is, and coupled with the next item, we would have had more robust operating systems and applications far earlier than we actually did.
#3 would have meant no 640K barrier in the PC industry. Applications would have been able to grow without the horrible consequences (in terms of bugs and performance) of “memory management” in MSDOS.
#4 would mean that nobody would be coding and re-coding and re-re-coding basic string operations in every stupid application written in C, all slightly different and slightly buggy.
Of course, the cynical amongst you will say, “Well, if we’d gotten those things right, we’d just have a different set of problems to complain about.” It’s true — we got a lot of things right along the way.