The following represents an opinion based solely on my own experiences:
I have been a computer science student for quite some time and have spent
quite a number of months and years writing programs using everything from
Pascal and Basic, to Ada, C, C++ and Cobol (icky imho). In each class
there were two types of programmers. . there are the hardcore Microsoft
supporters who do everything in Visual this or Visual that or Delphi or
whatever application they chose to use and there was me who typically did
everything by hand. During most of this time my tools were notepad.exe and
bcc.exe (command line compiler). . eventually as the programming classes
and assignments became more complex and more difficult, I moved over to
using Linux (which didnt really make my assignments any easier and probably
caused me much too much stress). . all this time my classmates would laugh
at me because I would spend 20 or 30 hours on a project and they would
finish it in 5 or 10 using some of the shortcuts offered by using the
Microsoft (or other visual) type products. Back then the primary (and
only) goal was to complete the program and get it to work. Now that
writing the program has become almost second nature, a new aspect has
arisen, size and stability. Back in those days when I was spending 3 x's
as much time was well spent, because I learned the language itself (and in
many cases I learned way more than I was ever taught because I was
encountering problems that nobody else had to contend with). Most of my
classes are now based on competition. . who can -write the fastest,
smallest, most stable program that does x recursively (or some other wacky
problem). The same guys that laughed at me are now amazed that my programs
are so much smaller and faster and constantly ask me for advice on how to
do certain things (we also get bonus for porting our applications to other
platforms which puts me way ahead of the competition) and I just tell them
to 'Learn the language' and they never understand what I'm getting at.
Granted, these guys produce some really pretty applications with all their
windows and buttons and stuff but I would easily sacrifice that to be able
to write applications which can run on *nix (being that Linux is now my
primary os of choice), Win95, Mac, or any other os with limited changes.
I would highly suggest learning C first, as once you know C, it is a small
jump to C++ and up from there. If you have no prior experience with any
type of 'higher' level programming then I would even suggest beginning with
pascal as it is quite friendly and can be learned in less than a month no
problem. This will get you started in "thinking" like a programmer. . once
you get to that point, then everything is just learning how to 'speak' the
other languages.
This is all just my opinions and Im sure there are many who would offer
alternative opinions or experiences. . All I can say is that this has
worked fairly well for me (but that is probably because I am stubborn and
will learn how to do things the hard way just because I hate not being able
to see what is happening in the background. . .same reason i moved from MS
to Linux I guess)
>I think a good programmer should know how to program in C.
>If you know C++, you are at an advantage, but I tend
>to think of C and C++ as seperate languages. C++ isn't
>as streamlined as C, and you won't find many low-level drivers
>written in C++.
This is a good statement. . C++ is good for writing higher end
applications, but understanding C will allow you more freedom to mess up
really bad :) (and learn from the experience)
>As for learning Visual c++, do you mean programming C++
>in the Visual C++ IDE, or actually learning MFC. There are
>problems in either, but both could be rewarding. First of all,
>Visual C++, as an IDE, is just a tool. If you look at the first
>versions of Visual C++, and look at the current version, you will
>notice that It has changed significantly. It will continue to
>do so. Actually, the same is true for the MFC. I highly
>doubt that Visual C++, or MFC will be around 10 years from now.
>They may not last half that time. C/C++, as languages, will
>outlive the MicroSoft stuff.
Learning the programs is of little use unless you are planning on doing MS
development or planning on writing huge programs. . and even then you still
need an understanding of the language and not the program.
>I'm not saying you shouldn't bother learning visual C++,
>but Visual c++ is an application. At least for me, my time is
>better spent learning languages than learning applications.
This is a good point, as I mentioned above, all that extra time was very
well spent as I have a more firm grasp on the language itself.
Sorry all for the length of this email. . . hope it helped a little :)
Jeff Bailey
Supervisor
Technical Support Quality Assurance
EarthLink-Sprint Network Inc.
"No one has ever written, painted, sculpted, modeled,
built, or invented except literally to get out of hell."
~Antonin Artaud~