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