Saturday, May 17, 2008

History of Computer Programming, Part III: Second Generation Languages

The fact is, most people don't enjoy thinking and writing in binary. Plus, its verbose and complex as all get out--especially when your trying to move beyond basic counting into an array of functions. Who wants to memorize the hundreds of machine codes corresponding to every instruction? Not me.

Enter 2nd Generation Computer Programming--aka assembly languages. After WWII, as folks were playing around with circuit board computing logic (sometimes aware, sometimes unaware of Shannon's work), they realized that you could set up a family of processors to enable programmer friendly coding. These machines could take a set of human-friendly instructions (such as "ADD, or TOTAL") and translate--assemble--them into machine level code. Sure, this adds a step and slows the process down, but this cost is nicely outweighed by the mnemonic joy programming with human words.

But let's not get ahead of ourselves, there's only so much you can do with 2nd gen computer languages. The language scope is directly defined by the physical shape of the processing hardware you're writing for. Thus we call assembly language a "low level" programming language; it provides minimal (a single step of) abstraction from machine level instructions--mapping in a one-to-one manner your instruction words into binary.

Some Resources
http://en.wikipedia.org/wiki/First-generation_programming_language

No comments: