Category:How Your Code *Really* Works
From ByteWiki
The biggest aspect of programming missing from today's education is assembly language. Unfortunately it does not look likely to be reinstated in the near future. This is a shame, not because of the language, but because much more emphasis is placed on abstraction and patterns than on understanding what the code is actually doing.
This is most often excused by saying that available memory and processor power makes knowledge of the underlying system irrelevant. While this is quite often true, it is not in every case. The best example is device drivers. Even with a huge amount of load on the system, the mouse should respond without noticeable delay. In most cases it does. If, however, the mouse was implemented using abstractions and not precise knowledge of the hardware involved, the delays would be extremely apparent. The next best example is operating systems. The underlying OS is not yet produced in anything above C, for the simple reason that abstraction equals generalisation which equals time delays. If an OS had to refer context changes through an generalised OO implementation such as C++ or Java, multitasking would not exist.
In general, most programmers don't have to worry about these details. However, even a basic understanding can greatly affect the mindset of a programmer, causing them to think less about the abstractions and more about what the computer system is doing.
Throughout these articles, quasi-C has been used for examples. Examples might compile but they may not.
