Learning Computer Science via Assembly Language
johnnyb writes "
A new book was just released which is based on a new concept - teaching computer science through assembly language (Linux x86 assembly language, to be exact). This book teaches how the machine itself operates, rather than just the language. I've found that the key difference between mediocre and excellent programmers is whether or not they know assembly language. Those that do tend to understand computers themselves at a much deeper level.
Although unheard of today, this concept isn't really all that new -- there used to not be much choice in years past. Apple computers came with only BASIC and assembly language, and there were books available on assembly language for kids.
This is why the old-timers are often viewed as 'wizards': they had to know assembly language programming. Perhaps this current obsession with learning using 'easy' languages is the wrong way to do things. High-level languages are great, but learning them will never teach you about computers. Perhaps it's time that computer science curriculums start teaching assembly language first."
for one thing, it would certainly knock a lot of people out of the profession if the first language that they tried to learn was assembly ... though this might mean that eventually the only people writing code at least know what they're doing, therefore producing better products for the users
"but money is the God of Algiers & Mahomet their prophet." - Rich. O'Bryen June 8th 1786
Could anyone comment on the use of assembly in major open source projects? Is there any now? Will its use increase to take advantage of vector units and the like? What about cross-platform assembler? Could we one day see an assembly dialect with the traditional 'raw' access to the machine which hard core developers love, coupled with a Java-like virtual machine for cross platform compatibility? I look forward to the community's response!
Forget Computer Science, Computer Engineering is the way to go.
First year starting with Digital circuitry, electrical stuff, engineering maths, heck, even physics. And concurrently? Teaching us how to program (not a programming language) with Pascal.
--- Follow on to Object Orientated programming, a dash of graphics programming - all concurrent with more digital stuff (onto microcontrollers etc) and micro-controller assembly language. More horrific calculus. --- Onto Operating System architecture, file systems, software engineering (UML and all that horror), Hardware Description Languages. Oh yes, telecomms, networks, etc. --- Language Processors (compilers, parsing, etc.), Artificial Intelligence. More networking. Computer Architecture.
That's some stuff - I've left out a lot. Not bad for 4 years. Basically everything from how semiconductors work and electrical circuitry, and most steps through to high level software design and object orientated programming. Plenty of side routes too like Digital circuit design, microcontrollers and using HDLs.
It's all been good bar the calculus. Oh, and the UML stuff - i.e. waffle for waffle's sake.
-- *~()____) This message will self-destruct in 5 seconds...
Bill wants you to renew your MSDN subscription and use C# and .NET so your apps can run on heterogeneous systems.
Do Bill's bidding. Do it now.
Trolling aside, go to Gibson Research and download some of their apps. They're most if not all written in assembly language, and they're fast. They'll portscan your system for you, too.
DT
Is this thing on? Hello?