Chilkat Software wrote:

> 
> About 20 years ago, when I graduated from University of Illinois'
> with a BS in Computer Science / Engineering,
> the department's philosophy was for students to acquire an
> understanding of computers and programming
> from the ground up.  That meant from the electronic circuit level, to
> the logic level (NAND and NOR gates),
> to assembly programming, and on up.  My answer to the original
> question is based on this philosophy.
> I recommend starting at the C/C++ level simply to gain a fundamental
> understanding of the bits & bytes,
> pointers, pointer arithmetic, structure layouts, byte ordering,
> structure member alignment, dynamic memory
> allocation on the heap as opposed to the stack, etc.   Understanding
> this gives you a good idea
> as to what's going on "under the hood" with higher-level
> languages.  Things won't be so mysterious.
> It'll pay off in the long run.

The OP is not trying to become a programmer qua programmer. He wants to be
able to write some very specific kinds of software in a particular a field.
In such a case I recommend that the student learn a language that conveys
the essence of programming, without necessarily conveying the essence of
the underlying hardware.

For such a person, understanding a bit-flip is far below the priority of
understanding encapsulation and top-down design.

-- 
Paul Lutus
http://www.arachnoid.com