Free Republic
Browse · Search
News/Activism
Topics · Post Article

To: jimt
There's also a factor related to the quality of education today. I recently met a computer science major who responded "What's that?" when I asked him if he messed with assembly much.

LOL - that has less to do with quality education than you think. For anything more than a few hundred lines of code, a good globally-optimizing compiler will produce tighter code than any assembly programmer. Period. Therefore, there's no real reason to teach assembly any more, since there's no real reason to program in assembly any more.

Hate to say it, but the world changed when you weren't looking ;)

116 posted on 12/27/2002 9:02:03 AM PST by general_re
[ Post Reply | Private Reply | To 16 | View Replies ]


To: general_re
optimizer n. A compiler with three switches for controlling its object code output: big, slow, and both. Compare PESSIMIZING COMPILER.

-- Stan Kelly-Bootle, The Computer Contradictionary.


117 posted on 12/27/2002 9:11:40 AM PST by dighton
[ Post Reply | Private Reply | To 116 | View Replies ]

To: general_re
LOL - that has less to do with quality education than you think. For anything more than a few hundred lines of code, a good globally-optimizing compiler will produce tighter code than any assembly programmer. Period.

I don't think so. A usable rule of thumb is that hand-tuned assembler will run twice as fast as code generated by a good C-compiler. There are reasons that this will generally be the case that aren't going away any time soon. However, this is not a good reason to write everything in assembly since economics is the primary concern, not execution speed, particularly since you can just move the code to a faster system a few months later and get the same results. For extremely performance sensitive programming, key sections of the code may be re-written from C (or whatever) into assembly code or Fortran (which often compiles into faster code than C for some things).

Therefore, there's no real reason to teach assembly any more, since there's no real reason to program in assembly any more.

There still are some types of work that require knowledge of assembly programming, but not much.

However, there is a good reason to still teach assembly languages. I've noticed an alarming trend in that a lot of young people coming out of schools now HAVEN'T been taught assembly code, with the noticeable consequence that they have no clue how software ACTUALLY interacts with the hardware. Instead they continue using the assumption that they are programming for an idealized abstraction of hardware, having no other way of looking at it. 99% of the time, this works fine, but there is that 1% of cases where they become totally lost when bumping up against some intrinsic limitations of whatever architecture they are working on. This is a failing of this type of education. Without carnal knowledge of what the hardware and software are actually doing on modern system architectures, there are many cases where you cannot make intelligent design choices. A lot of times this weakness is covered up by the ever increasing power of systems that software runs on, but when they hit a wall, they have to talk to people like me to tell them why they've hit a wall and explain to them what they need to do to get around it. Sometimes fixing these problems requires a very expensive redesign effort that could have been avoided if they truly understood the internals of what they were using in the first place.

Even worse, some places have stopped teaching C, which is the only high-level facsimile of assembly language in most important aspects (being the Universal Assembly language that it is).

120 posted on 12/27/2002 10:10:51 AM PST by tortoise
[ Post Reply | Private Reply | To 116 | View Replies ]

Free Republic
Browse · Search
News/Activism
Topics · Post Article


FreeRepublic, LLC, PO BOX 9771, FRESNO, CA 93794
FreeRepublic.com is powered by software copyright 2000-2008 John Robinson