Slashdot Mirror


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."

4 of 1,328 comments (clear)

  1. well, by ak3ldama · · Score: 0, Troll

    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
  2. Assembly vs. compiler speed by Debian+Troll's+Best · · Score: 0, Troll
    For the purposes of teaching computer architecture, assembly language may be just the ticket. But out there in the 'real world', assembly language is usually limited to 'embedded' type systems, and for small sections of absolutely performance critical code where a developer must make use of absolutely every last CPU feature and nuance to really wring extra oomph from their code. However, with a fresh crop of graduate students becoming more familiar with assembly, might we see a return to the 'good old days' where a lot more software was developed in assembler? Could anyone foresee a day when a major open source project, such as the Linux kernel or Apache, is recoded in assembly to really boost overall performance beyond those levels able to be achieved by compilers such as gcc? I for one would love to see an MMX/SSE optimized version of apt-get built in hand-tuned x86 assembler...vectorization of package installs would be the killer app for me.

    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!

  3. Forget Computer Science! by zoney_ie · · Score: 1, Troll

    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...
  4. Bill doesn't want you to know assembly by DuctTape · · Score: 1, Troll
    Bill doesn't want you to know assembly language.

    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?