Hello Hakim.
My name is Hakim Singhji and I am currently a student at New York
University. I am majoring in Information Systems concentrating on
Application Development. However, I have not completely decided on
which application langauage to concentrate on (yet!). I am fluent in
Unix shell scripting with ksh, bash and tcsh; I know a little Perl; I
also am very fond of SQL and Oracle's PL/SQL however I am looking to
focus my studies on either C++ or Java and I am looking for a little
bit of advice in this area.
Perl is similar to procedural languages such as C. Knowing Perl and tcsh
scripting will lend itself to learning C. Languages like Python or Jython
would have taught you object oriented concepts like C++ or Java.
It appears that Java is easy to learn and it's popularity is steadily
increasing because of its speed and ease of use. However, C and C++ are
industry standards which will undoubtedly be used for a long time.
Quite true. C have been around for a long time. You have to look at where
C is being used and decide if it is where you want to be. For example, if
I want to program Digital Signal Processors (DSPs) or embedded devices
then I might want to learn C language (others will argue you want to use
Ada but we won't go there). But knowing *A* language is not all you will
need to be successful in a job. For DSPs you will need to understand many
other things including a bit of hardware and assembly language. Here you
are moving further and further from the world of C++ and Java.
C++ has been around for a long time but again, what is being programmed in
it? Is this the field you want to enter?
Finally, these languages have been around a long time but so have the
programmers who support them. Can you compete in this arena? Learning C
has a steep learning curve. Are you willing to sturggle for years until
you become as good as the guys who have been doing it for 20 years?
On a different note, some will point out that C have been around for
something like 27 years. It cannot last much longer... talk to the COBOL
programmers. They have been around even longer and people were saying the
same thing about them.
I asked one of my Unix professors this same question and he suggested
starting with C then C++. He made a comparison between C and Java using
an analogy of German and Yiddish as he explained, "Learning C is like
learning German if you know German than you know Yiddish (i.e., Java)
by default."
I think you mean, "If you know C then you know C++." There is little or no
comparison between C and Java. Additionally, the majority of things you
learn in C are very different from C++. A C programmer can use a C++
compiler to write programs but this does not mean they are C++
programmers. Anyone that claims this is not teaching you C++. Learning C++
should be very different from learning C. A good C++ programmer will use
very little from the C support that exists.
His explanation makes sense however, he is also a C++ Professor and has
written books on C and C++. So I think there may be a bias. Is this the
general feeling of Java as it relates to C and C++ among developers?
Every language has its benefits. Sometimes it is on the limits or lack of
limits imposed by the language. Other things would include the libraries
included with the language, the extra libraries that exist within the
community, the tools available for development, etc.
What you really should be deciding is what do you want to do and then pick
the language that best serves you. Some examples (assuming you only have
the three languages to choice from):
* Embedded Systems - C
* Web Applications - Java
* Desktop Applications - C++
If you are just looking at your first programming language, pick whatever.
A good school should teach you have to learn. I'm not sure if you are
familar with the saying:
"Give a man a fish and he is fed for the day.
Teach a man to fish and he is fed for life."
A good school will teach you how to program. The language they choose is
just for them to have you prove you can program. It is not about the
language but the skills to use that language.