In the next 10 years - when the boy finishes a degree and is ready to enter
the workforce, whatever he learns now will have been superceeded or changed
to the point of being very different from what is chosen now. The computing
landscape will be very different to today...
The skills, confidence, interest, and knowledge gained will be invaluable.
The first programming language is the most "difficult" to learn - it only
gets easier after that, so learning any language now is a good investment
although it would Not be wise to learn a language that is at its peak or on
its way out as the language specific knowledge would be relegated to history
Personally, I would not waiste my time with C. I'll explain why later.
VB 6 - an excellent langauge (6 is the version number of the compiler /
IDE). It is very easy to learn and create Windows GUI applications. It has
its failings in terms of what programmers can do that fall into the Bad
Habits category, and as "The Other Guy" sort of pointed out, anyone (almost)
can learn [programming] VB6, but just because they can program in VB6 does
not make them a good programmer. Once one learns VB6 one needs to then spend
2-3 years learning technique to become a good programmer. (This is true of
all languages, but one can know 100% about VB6 language and be a crudy
programmer). VB6 is an excellent language, but the days of major new
projects in VB6 starting are numbered due to VB.Net and C#.
VB.Net enforces better programming technique and is an upcoming language.
You can download the full repertoire of learning edition .Net development
products from Microsoft. VB.Net is a substantially different language from
VB6 and its predecessors. You cannot normally use VB on Linux.
Delphi - those that use it swear by it. Free learning editions of Delphi are
often available on computer magazine cover CD's. I'll let someone else point
out its strengths as I have never really used it. I believe Delphi is
available on Linux.
C++ - A substantially powerful language that was architected to overcome the
many failings of C. C++ is the reason not to learn C. By the time one has
learnt C++, one has also learnt C++ and will be a better C programmer than a
person that only learns C - because you learn about the failings of C, what
C++ does to overcome these failings and so what you can expect. The C++
compilers also push aside many of the failings that exist in the C
compilers. At this point although C++ is my favourite language, given the
choice I would probably err on learning the next language. Most major
applications, operating systems and server systems are written in C++. It is
not for the faint hearted or the wishful thinker. In VB6 you can write and
start learning in minutes, in C++ to really get started takes a few weeks of
study. (C+ is available on an extremely wide range of computing hardware and
the smallest of systems - right down to the chips used to control your
washing machine. Any operating system or hardware that does not support C++
should not be contemplated). C++ is common on Linux.
C# (C Sharp). This is the New Microsoft language. It is aimed at first time
programmers for professional use. It embodies the best points of C++ and VB6
/ VB.Net and overcomes many of the shortfalls of VB6. C# is an enormously
powerful language suitable for whipping up the smallest / simplest programs
through to the largest of programs with enterprise level facilities. No
Linux I am afraid. C# is similar in many ways to C++ - in fact the
differences are not huge. If one learns C#, then learning C++ is easy (and
Jade. Jade is an object oriented database and embodies a programming
language similar to Delphi. I have included it for the sake of completeness
as a learning edition is available for free, but there are restrictions on
the size of database one can create with it (10,000 nodes last time I
looked). There are also restrictions on the style of application one can
create with Jade - someone correct me if I am wrong here. Linux? Dunno?
It is important to learn the fundamentals of programming - some people learn
these implicitly without any help. So a well run training course would be a
good investment. It is important to concentrate on a) Programming and b) the
Language before embarking on c) what you can do with it. With a GUI system
such as VB6 one can go straight into writing programs that are shockingly
structured, impossible to maintain and fragile.
At the end of the day, one needs to ask about the motivation of the 10 year
old - is it the parent or is it the child? If one learns how to hack out a
program at 10 years old then this may destroy any ability and motivation to
properly learn a language in later years. While my nephew achieved this
without assistance on an Acorn, he maintained a balanced life style and in
later years has proven to be a brilliant programmer.
Everything here has been covered from the perspective of Windows
programming. Comments for Linux are there to show what alternatives /
portabililty the knowledge has. C++ has the greatest practical portability
(of knowledge and programming investment).
My recommendation would be C#, and a good book with training. Don't go to a
book store and ask, ask the people that really know - those that lurk in the
microsoft.public.languages.csharp news group would be the best by far to
ask, and some language specific training would be excellent. If the kid is
really smart then bung him on a professional 1 week training course that
concentrates on C# (EG Aldhouse) once he has grasped enough of what is going
on to be able to push out some simple programs.
Many (everyone) regards their child as bright. If he is really bright, a
computer, good book and a learning edition of say C# will be enough for him
to get started. Its not a competition and a balanced life style is
Post by Bob
As I said in the Subject, I have a friend with a 10yr old son who is
interested in learning to program. I thought VB might be a good choice.
There used to be a Learning Edition available with a book.
Perhaps there are courses that kids can attend (North Shore, Auckland)?
Can anyone with kids perhaps give me a bit of guidance.