Hacker News new | past | comments | ask | show | jobs | submit login
Assembly Language Step By Step, for Linux (duntemann.com)
59 points by nkurz on Jan 12, 2010 | hide | past | web | favorite | 11 comments

"The idea behind the book, nutty as it might seem, is to teach assembly language as your first programming language."

This is a really interesting idea.

In the debate over whether every programmer should still learn C, a common argument for is "managed languages don't teach you about pointers and memory". Learning assembler would surely do that even better than learning C (albeit probably less practically useful overall). I can't decide whether that's a reductio ad absurdum for the pro-C argument, or support for this book's thesis.

It's different but using assembly language as a basis for instruction is what Knuth chose to do. See the "Why have a machine language?" section:


I really like the idea of teaching asm first for adults. I really didn't understand what I was doing in C until I'd learned assembly.

I think it would be interesting to have a college curriculum that started out in asm the first year, and eventually ended in a symbolic/lambda language like lisp.

In my CS intro course at college, the professor started describing a very generic computer and its assembly language. Then he wrote simple programs with that language, to teach what was a loop, a condition, or a function call. Ever since, I used this simple model to understand every language I learned in college, such as C or Pascal.

sir assembly at the first year would scare away people from majoring in EE or CS. I think C is much better than asm to start with. But if they want student can be given a choice to learn asm as a elective in the first year. A choice bases credit system comes real handy in such a situation.Also we can have the same course taught in asm and C and students can be given a choice to learn which ever they want. So we would have to conduct fewer separate classes if the course focus is on the theory of computation.

From the perspective of a CS student I can understand abstrating the computational theroy from the applied science of programming for a particluar ISA and agree with your point. A similar arguement can potentially be made for Software Engineering.

However, if your discipline is EE or CE I'd have to disagree. Perhaps my educational experience and focus on embedded system design has distroted my view, but without starting with a basic understanding of computer and instruction set architectures I don't think I would have or could have been successful.

Yes, assembly is tedious and modern compilers do a much better job optimizing for 99% of all cases. But knolwedge of computer architecture as well as an understanding of how to represent common high level program structures (if, for, while...) coupled with a basic understanding of stacks and how C utilizes them at runtime is nothing short of foundational. It is the kind of information that has allowed me to transition to from different platforms and high level languages with very little effort because they are all built upon the same principles.

To be cliche about it, its simply learning to crawl before you can walk.

I personally parallel your views sir, and that too to a very great extent. But to a general high school student programming and computation is more about java and/or c++ or other such high level language. The bombarding the poor fellow with asm at the very first semester would be way too much for most of them.

Not everyone is able to understand and appreciate the beauty in the functionality of asm. I do not wish to deny that this is the best way to put forth the world of CS but we must first understand is the student ready for it or not.

I learned Assembly from a book called Mastering Turbo Assembler by a guy named Tom Swan. That was for DOS (early nineties). I'm definitely going to buy this book even if it's just for nostalgic reasons.

you can: http://www.amazon.com/Mastering-Turbo-Assembler-Tom-Swan/dp/...

The cover looks familiar. Maybe I have bought this book too back then but never got around to read. However I did read the Borland C book by him: http://www.amazon.com/Tom-Swans-Mastering-Borland-Swan/dp/06...

Yeah, sorry for not linking. Tom's a good writer. I also read his Mastering Turbo Pascal (http://www.amazon.com/Mastering-Turbo-Pascal-Tom-Swan/dp/067...).

Sweet!! I got started on his DOS assembly book an eon ago. I'm buying this today.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact