On 12/17/2011 11:23 PM, Russel Winder wrote:
It's the indirection thing again:  rather than provide a C toolchain for
each platform, you load Java (or Python, Ruby, ...) which is already
precompiled for the platform which then allows a single toolchain across
all platforms.

If you can compile the JVM for a machine, then C exists on that machine (even if you do not make the C tools available).

BTW, if I was King of the World, universities would teach assembler programming
first.

I think that sort of worked in the 1980s when computers were
(relatively) simple, but I don't think it works now.  Clearly any
self-respecting programmer should be able to work with assembly
language, so it needs to be taught, but these days it comes as the link
between hardware and software rather than being the language of
software.

The ones that don't know assembler tend to have peculiar deficits and blind spots when they program. This is as true today on modern machines as it was 30 years ago.

I see it over and over.


I learned BASIC first, then FORTRAN, then I learned assembler (6800) and it was
like someone turned the lights on.

It's all about the operational semantics.  Some people are happy with
very abstract semantics and so can work with the likes of Fortran very
well without knowing assembly language.  For others the link to how the
computer actually works is critically important.

Yes, they can program, but they have peculiar deficits. It's like having the letter 'q' broken on his keyboard, and he has learned to avoid using any words that contain 'q'. It takes a while to notice it.


I liken it to trying to teach kids algebra first, give them a calculator, and
never bother teaching them arithmetic.

A programmer who doesn't know assembler is never going to write better than
second rate programs.

I am not sure I'd go quite that far but I agree that all programmers
really ought to have worked with assembly language at least once in
their lives.

Exactly, which is why I'd make it a first or second course in programming for a professional programming education.

Reply via email to