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."
This is akin to learning medical science by practicing on yourself :)
Real programmers learn machine code.
I'm not a great programmer, but I never really understood programming -- especially C programming -- until I took 68000 assembly. It also took a digital logic course so I could imagine how a processor was built. It's just abstract manipulation of symbols until you can imagine exactly how your printf("Hello World!\n"); gets broken up into neat little binary chunks.
ps. Don't make them learn x86 assembly. I think that's banned under the Geneva convention.
Toronto-area transit rider? Rate your ride.
If it isn't worth doing in Brainfuck*, then it isn't worth doing.
*Author's note: Brainfuck can be replaced with Perl.
Comparing it to Windows will be a moot point, since El Dorado is going to have a 40% larger code base than XP.
Get it to your Valentine on time! Choose UPS 2 DAY and pay the price of Ground.
Yeah. Give my GF a book on Linux Assembly programming. That should get those panties off in a hurry.
"Quotation is a serviceable substitute for wit." --Oscar Wilde
real programmers do:
copy con myprogram.exe
Your grandpa just clicked on the attachment I sent him inadvertently after I got the MyDoom virus after my wife clicked on the attachment her mom sent her after her husband opened the attachment your grandpa's system sent him.
His motto is "Anyone who doesn't know machine language has no business using a computer."
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."
And a win kernel is the road to Hades.
Just learn C instead. It combines the readability of assembly with the ease of use of assembly.
The language you're referring to is spelled LISP.
What a pity that Basic English was not on the menu either.
From the book's presentation page:
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.
A message from the system administrator: 'I've upped my priority. Now up yours.'
"The C Programming Language -- A language which combines the
:)
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."
Luxury! In my day we had to make our own AND gates out of OR and XOR gates!
Ewh! Yuckky. Teach them a *REAL* assembly language like MIPS or ARM.
x86 is just an abortion that got to full term.
"Never fear a guy with a goatee, a black turtleneck, and a beret."
You're confusing 3D artists for Mac users.
"Derp de derp."
how about I correct you if you're anal?
I don't know why, but just saying the words 'assembly language', sends a chill down my spine. I guess I am too weak minded to learn it.
Anyone who cannot simultaneously consider the position of every logic gate and every memory register has NO business being in the same time zone as a computer.
From the description:
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.
WARNING: there is a trojan on your
Nothing else in the Universe can make students grateful -- grateful! -- to be allowed to use C
Uphill...BOTH ways!
JohnnyB, use your lightning powers to teach us ASM!
What, you don't build your own processors? What fun is that?
One man's -1 Flamebait is another man's +5 Funny.
When *I* was young we didn't *have* vacuum in space yet! You post-big-bang kids don't know how easy you have it!
--AROS is an Open Source AmigaOS clone, and source compatible with AmigaOS! Try the x86 build at http://www.aros.org
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.
Fire and Meat. Yummy.
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.
A very efficient algorithm for you is to do a google search and you have a solution.
Google: thousands of times faster than Assembler.
512 Megs of L1 cache? Where the fuck are you hiding your time machine?