Monday, January 17, 2005

Preliminary thoughts on Assembly

Computers are fascinating machines. I now have a profound gratitude for those people who figured out how to make them work for us. For the past year or so I have been programming in Java. Happily plunking out functions as they come to my head, compiling the programs and then running the program I made. On occasion, I had questions about how the computer carried out my program. Sometimes, my professor would be teaching about something, and we would ask him how the memory actually worked inside the processor. He would often state that it was beyond the scope of our course, and tell us that we would learn later, giving us just enough information to help us understand what we needed to for the moment. The phrase that was commonly used in that class was “no free lunch,” meaning that somewhere a long the line, someone had to cover every detail.

I am just about to finish the second chapter of my Computer Organization book. Yes indeed, there is no free lunch. I now know why in last semester’s classes my professor opted to just cover the basics of the “memory model.” I had no idea it would be so intense, and so delicate. Computers really are dumb. They only do what they are told to do. You may say yes, I know that. But do you really? Every single instruction has to be programmed. EVERY ONE. It is absolutely amazing, a true wonder. People who write software compilers must be amazingly detail oriented, and very good with their understanding of computer hardware. Assembly is by far the most interesting language I have had the opportunity to study to date, but thank the heavens for good high level languages. I couldn’t imagine having to make programs for a living in Assembly. Thank goodness not many do.

Here’s to the modern computer, and all of the people who figured out how to make them work!

No comments: