Re: Introduction
Dave wrote:
If I was teaching somebody how to program, I would probably teach them
the following languages in this order:
1. Basic or Pascal---these are good starting languages that teach
variables, functions, and thinking algorithmically. IMO, starting with
functional languages is easiest for people to grasp.
How about 1.5 - Assembly Language?
Once you "get it" and have a good feeling for what "it" is,
essentially, it makes sense to expand ones knowledge right up to the
boundary where it does not make sense to go any further. Electrical
engineers have an inherent advantage here - there are certain nuances
of low-level programming that might mystify a traditional programmer
but would not confuse an electrical engineer. For example, in a
recently class in C++ at a large software corporation, I ask, "What
does 64-bit mean anyway?", and only 2 of 17 students were able to
answer. It was a bit embarrassing, as many of them had studied
computer science. I think every C/C++ programmer should be well-versed
in at least one assembly language. The boundary is very sharp and
terminal, and knowing assembly language (and hence computer
architecture) will make disccusions about many elements of C++ a lot
more pleasant.
2. C---this is the "next level" when it comes to functional languages.
I would teach basic machine organization, memory, pointers, and data
structures with it.
3. Python or Ruby--these are easy OOP languages to learn. I would use
them to introduce higher-order OOP concepts such as classes,
inheritence, and polymorphism.
Ufff! Why waste time on these languaes?. Life is short. Go to the
good stuff hard and fast. If anything, it is easier to learn downhill
than to learn uphill.
4. C++---lastly, I would teach them C++ to bring everything together:
the machine organization, memory management, and OOP concepts and
design.
Note how I alternated loosely typed with strongly typed languages.
That's an important "background" topic to always be talking about
through the whole process.
Yep. The most desirable objective in all of programming, IMO, is to
achieve a good form in the resulting system. Since type is that which
facilitates structure, an affinity for type is generally better than
the the "it's just all data" philosophy.
-Le Chaud Lapin-
[ See http://www.gotw.ca/resources/clcm.htm for info about ]
[ comp.lang.c++.moderated. First time posters: Do this! ]