Why Learning Assembly Language Is Still a Good Idea
Subject:   Why learning assembly language is useful in like 1 case out of tens of thousands
Date:   2004-05-18 07:48:14
From:   Betelgeuse
I learned assembly language back in the 8 bit microcomputer era. I started on a Commodore 64 learning the 6502 processor and eventually graduated to an IBM PC learning 80x86 assembly. I retain a significant amount of information from this era. This has come handy a few times during my career when looking at mixed source/assembly. While at Microsoft (yes I spent time there) I had occasion to identify a bug in the Visual Studio debugger which would not have been possible without my previous experience. Debug points are set in the Intel 80x86 through an INT 9 software interrupt. The debugger needs to replace values in a code segment and when it ultimately handles the breakpoint needs to put back the values it overwrite. I had some C++ template code where clearly this was not happening.

Nevertheless assembly language knowledge has become extremely niche. Unless you are working on embedded devices it has become mostly irrelevant. And with virtual machines (Java's and Microsoft's CLR) becoming accepted due to the high computing power afforded people's code people are that much further removed from having visibility into this layer of computing.

I could say, "Yeah, you should learn hardware digital design and Karnaugh maps since it will improve your understanding." Yes I suppose learning hardware design will give you even MORE insight into computing but assembly language is starting to go in this direction - diminishing returns.

Hey, I'm all for expanding my horizons through learning but in this time of dozens upon dozens of APIs that software people have to worry about, specialization is key and assembly language has become mostly irrelevant given its very low priority to get the job done.

Sure there are certain instances where it can be handy but those times have been very few and very far between.

Full Threads Oldest First

Showing messages 1 through 1 of 1.

  • Why learning assembly language is useful in like 1 case out of tens of thousands
    2004-05-27 11:17:49  belze [View]

    Based on my experience I believe there are lots of instances where the knowledge of assembler is very helpful (certainly a lot more than just "very few and very far between"). For example I often see horribly inefficient C++ programs written by people who don't understand when passing parameters by value is slower than passing by reference and when not. Without any basic understanding of the way passing arguments to a function is actually implemented it is probably quite difficult to write a good C++ program. This was just one example but I can provide a lot more.

    It is true that these days virtual machines are becoming more and pore popular. But this doesn't remove the need to know how the computer operates. Virtual machine can be thought of as a type of a computer with its own assembler (called "bytecode" in JVM, i don't know how it is called in .NET). So for example failure to understand how JVM operates will result in bad Java code (many Java programmers don't know how to use a proper object allocation strategy to greatly improve the speed of Java programs and its memory usage, etc, etc.).