http://www.guardian.co.uk/comment/story/0,3604,1078616,00.html
Follow-up article, by yours truly:
To be truly free in the 21st Century, we have to ignore the high-level abstractions of modern programming languages and really get inside our computers.
Ari Wilson
Saturday November 8, 2003
The current level of computer illiteracy is shocking, especially among those who call themselves “programmers.” Sure, most of us can write code. We all know how to make a “Hello World” application in C or Java. Hell, some of us even know Perl or Ruby. But what would happen if you were left without your fancy compilers? Would you know what to do if you saw nothing but raw op codes? What would you do?
If your answer is “cry,” then you’re in the majority. One of hundreds of thousands of coders throughout the world that don’t know x86 assembly, let alone the myriad other assembly languages like MIPS or ARM. Like the folks in the Matrix, who think they’re l33t because they independently came up with the idea that Tasty Wheat might actually be chicken.
Things can only get worse. As society becomes more dependent on microcode, the gulf between those who know assembly and those who don’t will get ever wider. In 50 years, if you don’t know assembly, you’ll be eaten by your children in bizarre pagan rituals. Your dependence on “for” loops and “classes” will make it impossible for you to operate the machine on your desk. Which isn’t really your desk, anyway, because it’s run by computers!
Modern compilers are a dangerous commodity. They make us think that we know how to code, but you know what? We don’t! Microsoft, GNU, Borland et al make us think that with their fancy development environments and preprocessors, that we can make our user experience easier and less time-consuming. But all of us high-level programmers will be first up against the wall when the revolution comes.
We wait patiently while our software crashes, which is obviously the fault of data abstraction, when we could be writing absolutely perfect code the first time, every time, in assembly.
And while we’re at it, why are we using fancy editors like Emacs or VI to program? Ed was perfectly good. Come on, you don’t *really* need to be able to edit more than one line at a time. Hell, keyboards are unnecessary. Switches worked fine for the folks at MIT. Monitors? Why, when you could use a teletype to interface with your machine? Insisting otherwise makes you dependent on the work of others, which is a sin in today’s mature, do-it-yourself world.
Isn’t this too hard for the average coder? Shouldn’t we try to develop high-level constructs to express our problems and solutions? Fine, commie. It’s perfectly easy to find a book on your assembly of choice, and since I proved earlier (by yelling at you) that data abstraction is unnecessary, there’s no reason for you not to start writing all your software that way.