Hi. A verbose post from me here. What I'm trying to do here is give you some perspective over why learning multiple languages is a wise move. I'm also partially arguing for C++.
No single language will guaranty you a job. What you need to learn is the techniques required to handle most problems in any language. Most of these can be learned in any of C++, Python, Ruby, Haskell or what have you. If you know how to do object orientation (A common way to structure programs), for instance, it doesn't matter if you do it in C++ or Python. Or if you know how a map/hash table (A common way to store data) works in C++, figuring out how it works in Java is trivial. (But what might seem like a contradiction, is that to gain the ability to see the language independent features of programming, you will have to learn more than one language.)
This really applies to specific APIs too. For instance OpenGL contra Java 3D. This summer I've been working for a research institute where they develop tools for control room designing. They use Java 3D. I've used Java in the past, but I've never done any Java 3D programming before. My only 3D programming experience has been using OpenGL in C++. But it took me less than three days to get up to speed in Java 3D to the point where I could start doing stuff that was useful for my employer.
The advantage of learning C++, contra a lot of other languages, is that the spectra of different ways to program a c++ program is large. Bigger than for instance Java, where you are (dead) locked to object orientation. In C++ you can do low level code and fiddle with pointers (direct access to the computer memory). Learning the object oriented approach gives you a basic mind-tool-kit, to handle the programs. This is just the same as in Java. Templates gives you a whole new way to think about many things. (Generics in Java just isn't strong enough for my needs.) All this might be be both a source for headache and moments of true euphoria (which is what I get when I realize a cool way of programming something. Guess I am a programming junkie.).
Another thing I would like to point out is that if you would like to make Graphical User Interfaces (GUI), TrollTech's Qt is the way to go. Qt is an open source, cross platform library for GUI in C++ that has everything. It's not really difficult to learn once you've grasped object orientation. Qt is also ported to other languages. A bit of googling will give you a list. None of the GUI libraries for Java come close in my mind.
(The following is really the important part)
For me, learning C++ really elevated my understanding of programming. I cannot guaranty the same for you, since I don't know you. But if you decide it worth your while, I really recommend buying A BOOK. Every online tutorials I've seen, has been been inadequate to raise your C++ skills to what they need to be to be able to get a job. Reading a book (or even better, reading several books), gives you more in depth knowledge. It will also tell you about, and guide you around the traps and gotchas of the language.
This goes for any programming language. Read a book, type off the examples, play with them and do the exercises! This way you will have some examples you can peek at, customize and improve when you make your own programs later.
(The following section is more of an afterthought)
I might sound a lot like the world is all C++ vs Java here, but it's not. That is, it is some times, some places. A lot of job requirements will say that Java or C++ knowledge is preferred. But there are a lot of other languages out there that will give you new ways to look at programming. If you learn a new language, you'll learn things that you can take advantage of even when coding C++ or Java.
My favorite language is Haskell, it really takes programming to a whole other level of abstraction. But learning it took patience. At times I felt that all my years of doing C++, Perl, PHP, Java and BASIC didn't help me at all when I was to code a Haskell program. But now that I've got the hang of it, I really don't want to program in neither Java or C++ any more. They seem too verbose and rigid. The ideas and the mathematical foundation (Yes, programming has a lot to do with maths. But often it is very simple math.), for Haskell are really new and very innovative. So learning Haskell I really felt that I learned programming for the 21th century.
Another cool language is Python. It is more like C++ and Java, with object orientation and all, but it works on a higher level. Giving you more time to figure out how you want to solve the problem at hand, not struggling with getting every index variable bounds etc correct.
Hope this is of some help.
Ichor
|
|
Bookmarks