Re: New to the idea of programming
Lew wrote:
A programmer should start out with assembler and C, then learn FORTRAN
and COBOL, then Java and/or C#.
Arved Sandstrom wrote:
Well, no, they shouldn't. Why don't we just stick to languages that would be
reasonable, in 2010, for a novice to start with?
Point taken.
Lew wrote:
The problem with learning Java first is that you never get screwed by
wild pointers.
Arved Sandstrom wrote:
Your sarcasm aside, if a programmer can't manage pointers in C/C++, they sure
as hell can't manage reference type variables in Java either. The effects will
be somewhat different in Java - NPEs and expensive debugging to pin down
business logic errors - but no less damaging.
It wasn't total sarcasm. It's more metonymy - "wild pointers" is meant to
include the sort of thing you mention. You are, of course, right, but it's
those sorts of things one wants new programmers to understand.
The problem to which I sarcastically pointed is the lack of architectural
context in programmers' training. For Java it's the JVM, and enough of its
architecture to comprehend Java-style pointers, a.k.a. references, and the
abstract notion of an address. I had an assembler programming course in
college that was worth the semester's tuition by itself. They spent a lot of
time explaining the "indirection bit", a key foundation for me in my use of C
pointers.
Another aspect is to understand the purpose of garbage collection and that one
should not universally rely on having it. Learn the advantages,
disadvantages, and alternatives.
It has value to study some of the wide world of programming - machine
language, compiler writing, data structures, algorithms, Donald Knuth -
concurrently with one's major focus on Python, Java, or any other specific
tactical target.
General competence will come early if you have an aptitude and keep at it. It
needn't take five years, but you shouldn't stop at general competence anyway.
Being somewhat holistic in your studies will accelerate both short-term and
long-term skills.
--
Lew
Ceci n'est pas une pipe.