On 5/25/2011 12:04 AM, Russel Winder wrote:
On Tue, 2011-05-24 at 14:56 -0700, Walter Bright wrote:
On 5/23/2011 11:30 AM, Russel Winder wrote:
Yes and no.  To those that "get it", it is simple and straightforward.
Experience shows that very few people actually "get it".  Syntax is a
factor but not the only one.  The very nature of the concept stumps some
people.

I suspect that those people who never get it are people who fundamentally do not
know how a von neuman architecture computer works. I came to C from writing
embedded systems in assembler language, and C was immediately obvious to me.

Or Harvard architecture for that matter :-)

I completely agree with the direction of you point but would put it
slightly more abstractly.  In order to be able to use a programming
language effectively and efficiently you must have an operational
semantics for the language.  This need not be the actual semantics of
the processor executing the code, it just has to be consistent with it
or else you are doomed to write broken code.

Interestingly, before I learned assembly I programmed in Basic and Fortran. While my programs worked, I really had no idea how the underlying machine worked. I was completely baffled by it.

When I learned to program a 6800 microprocessor, suddenly all the lights came 
on.

While learning assembler isn't going to help much with, say, comprehending monads, I venture to say that writing effective C programs without knowing assembler is like trying to drive a race car without knowing how a car works. You can probably get it around the track, but you have no hope of winning, or even being competitive.

(Test pilot Chuck Yeager remarked in his autobiography how being intimately familiar with how his airplane worked saved his life many times.)

Reply via email to