|Home » Resources » Rants
Why Assembly Language Is BAAAD
Week of July 9, 2001
OK kiddies, it's time to gather round. We're going to have fun again today! And what are we going to have fun with today? Assembly language!
Do any of you little darlings know what assembly language is? No? You've heard your parents talk about it? Yes, it has something to do with computers. A programming language? Actually no it isn't. Now gather round in a circle and we'll all learn together.
ssembly language is not a programming language at all, but instead a convenient way of working with a processor's native instruction set, using mnemonics such as 'ADD' instead of raw instruction codes such as '0101100010000001' and doing the tedious task of keeping track of symbolic addresses, 'assembling' all of these into a coherent program.
n the beginning of time when IBM ruled the world, software development was much cheaper than the cost of hardware and software was bundled together with the hardware at no extra charge. In those days the only instruction set worth worrying about was that of the IBM mainframe.
ut this situation was reversed by the early 1970's: The costs of software development went ballistic while hardware costs dropped. As Brian W. Kernighan pointed out already then, it takes only a few man-months to create a new compiler for a new platform, while the cost of migrating developers to a new platform spirals indefinitely. And IBM was no longer the undisputed king of the hill, other platforms emerging as serious contenders and making platform migration even more unreasonable.
oday in our increasingly platform independent open source world, assembler makes less sense than ever. What was initially assessed in the 1970's as a 10% trade-off has since been more than eliminated: Only the most meticulously coded assembler programs can compete with today's compilers.
hen working with macros the situation gets worse. This Betty Crocker cookbook application development may sound fantastic, but it cannot compete with modern optimizers. More bloat is added to executables.
ut assembly language may make sense as a marketing move, for most ordinary people have not worked in the industry, will not grasp the contingencies involved, will not have read writings on the subject, will not know assembler was officially passé twenty nine years ago, will not have come into contact with current compiler technology, LALR(1) language parsers, loop optimisation, et al.
nd for ordinary people, that is their right: No one demands they understand all of this. But there exists for those who are in the know a moral duty to not disguise, confuse, muddle or twist the issues at hand for personal gain. To do so would be to become - as your Uncle Fyodor expressed it - 'a charlatan'.
Phew! That was a lot! But now we all know about assembly language and why it is BAAAD! And we sure don't want to be called a charlatan, do we? We want to be NICE boys and girls, we know we should be seen and not heard, we should never shout and we should never play that BAAAD game 'Temper Temper!' and we should never be attention-getters, right? Good! OK, class is over for today. Teacher will unlock your handcuffs and you can all go home now!