Assembler as a first "language" ?

I participated recently in a discussion where someone suggested to teach programming to beginners with assembler as the first language. There were far many more negative than positive reactions. My opinion is that assembler is just a tool to show concepts in practice. If used properly, it serves as well as any other tool (ie. high-level programming language). Here are Knuth's reasons for using assembler in his TAOCP books.

Now, I agree that it is much harder to make a good course with assembler - topics, examples and problems must be chosen much more carefully than for a high-level programming language. And x86 is a wrong choice as a first architecture - something like Knuth's MMIX or the MIPS architecture would be much better.

Bottom line is that, while there are admittedly many traps, I don't see anything fundamentally wrong with such approach. Your opinions?


Anonymous said...

Wrong? Fundamentally wrong? Au contraire, it would be of great benefit.

Teaching software engineering without assembler is not unlike teaching some older engineering discipline and skipping physics or chemistry.


namedp said...

I think it's important to learn assembly, specially if you're going to be a software engineer and/or computer scientist.

Not learning assembly would be like showing a mechanie how to drive a car, but not how the engine works.