Learning Computer Science via Assembly Language 1328
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."
Assembly Language (Score:-1, Funny)
Ouch (Score:1, Funny)
Wussies (Score:5, Funny)
Re:Not necessarily the mark of a great programmer (Score:4, Funny)
ps. Don't make them learn x86 assembly. I think that's banned under the Geneva convention.
Whatever (Score:2, Funny)
*Author's note: Brainfuck can be replaced with Perl.
From the linked page (Score:5, Funny)
Yeah. Give my GF a book on Linux Assembly programming. That should get those panties off in a hurry.
real programmers (Score:2, Funny)
real programmers do:
copy con myprogram.exe
Re:Wussies (Score:5, Funny)
REAL programmers use cat >
Re:Somewhere in the middle... (Score:2, Funny)
Re:Somewhere in the middle... (Score:5, Funny)
Just say to him "Well Grandpa, my motto is anyone who can't describe, with exacting detail, all the functions of every organ in the human body doesn't deserve to live."
Re:Linux x86 assembly? (Score:1, Funny)
And a win kernel is the road to Hades.
Re:Wussies (Score:2, Funny)
all, 1 byte at a time.
How about an alternate? (Score:3, Funny)
Re:Probably a bad idea (Score:2, Funny)
Re:Not So New Concept (Score:1, Funny)
To be a programmer without ever... (Score:4, Funny)
To be a programmer without ever learning assembly language is like being a professional race car driver without understanding how your carburetor (sic) works.
To which I reply: To be a book writer without ever learning how to spell properly is like trying to teach programming by starting with assembly languages.
Re:Not So New Concept (Score:5, Funny)
flexibility of assembly language with the power of assembly language."
The way I heard it was far drier humor: "C: The language combining the power of assembly with the ease of use of assembly."
Re:From the linked page (Score:3, Funny)
Re:Not the point! (Score:4, Funny)
x86? That's not a real instruction set (Score:2, Funny)
x86 is just an abortion that got to full term.
Re:Somewhere in the middle... (Score:3, Funny)
You're confusing 3D artists for Mac users.
Re:From the linked page (Score:2, Funny)
If you had these [thinkgeek.com] waiting for you wouldn't you want to give her the book?
Re:uhm (Score:1, Funny)
Re:Linux x86 assembly? (Score:3, Funny)
Lusers...I programin BINARY!!! (Score:2, Funny)
Bad analogy in the book description (Score:3, Funny)
To be a programmer without ever learning assembly language is like being a professional race car driver without understanding how your carburetor works.
My corollary:
To program in assembly language is like driving in the Indy 500 in a car that doesn't have fuel injection.
Forgetting the Most Important Point (Score:5, Funny)
Nothing else in the Universe can make students grateful -- grateful! -- to be allowed to use C
Re:Not the point! (Score:1, Funny)
The Misfits of Science... (Score:2, Funny)
Re:Linux x86 assembly? (Score:5, Funny)
What, you don't build your own processors? What fun is that?
Re:Vacume tubes? (Score:5, Funny)
4-bit Full Adder Using Relays or Vacuum Tubes (Score:5, Funny)
However, in the real world, NANDS are cheap (2-3 transistors), so that's what everyone uses.
Well, NANDs are easy to make with MOSFETs or vacuum tubes.
But I suggest that, in order to simplify the learning of digital logic and avoid this whole nastiness of DeMorgan, we should adopt relays as our primary logic device.
Think about it: two relays with their contacts in parallel = OR. Two relays with their contacts in series = AND. A relay with normally-closed contacts = NOT.
In this way, all design work can be done with natural logic (AND, OR, NOT) rather than "efficient" NAND, NOR, etc.
On top of that, your computer would make satisfying clicking sounds reminiscent of a pinball machine's scorekeeping system or an old elevator contoller, while you're crunching SETI@Home units.
I'm building a 4-bit binary full adder with nothing but relays in order to demonstrate their sheer computing power, and was hoping that someone could write me drivers to allow it to have practical uses.
Oh, Wow. Deja Vu Again (Score:2, Funny)
Afterward a cute Pembroker in a really short skirt came up to introduce herself. I don't know if she agreed with our argument, but she's been my wife for quite awhile now. I don't teach much any more, but when I teach beginning CS, I teach assembler. The students we taught machine programming to back then have held positions like VP at Microsoft, CS Department Head at MIT, Princeton, Washington, UNH, and Waterloo.
I wish people wouldn't keep referring to C as a "programming language;" it's a pathology.
Re:Assembly for speed? (Score:3, Funny)
A very efficient algorithm for you is to do a google search [google.com] and you have a solution.
Google: thousands of times faster than Assembler.
Re:From a ring counter to OOP (Score:1, Funny)
512 Megs of L1 cache? Where the fuck are you hiding your time machine?