Hi to everybody. I'm starting to study Quant subjects, so I just want to ask you with which language do you suggest me to start with: C++ or Java.
Any other suggestions to a newbie?
If you learn to program in Java or C#, it may be hard for you to move to C++ later. The converse is not true.
I believe most GUIs in investment banks are developed in Java or C# these days. Our system uses a Java front-end connected to a Windows C++ back-end.
here is my own opinion about learning a programming language (any).
If you know any programming language, learning the basics of another language is not that hard. Now, if you want to master any programming language, you will have to spend "butt hours" in front of a computer coding and finding the nitty gritty details.
It becomes an easier task if you know the concepts well (algorithms, data structures, design issues). For instance, Java, C++, C# are all object oriented languages. If you know the OO concepts well, you won't have problem switching from one to another one. You will still need to work at mastering the details though, that's the time consuming part.
The levels of difficulty from one language to another one are different. Java and C# are easier in comparison to C++. It also helps that there are huge libraries for JAVA and C#. BASIC is extremely easy in any shape or form. Assembly language is a pain in the ass regardless. C is easy to learn but hard to master. C++ is hard because it covers a lot of ground (OO, meta programming, etc).
Then, there are esoteric languages that have their own niche (logic languages, functional languages). They can bend your mind backwards if you are not used to them.
This is a great test for programming knowledge "The Pointers and Recursion Test". I learned pointers by coding in assembly language (if you know assembly language, you know pointers... it's the geekiest thing ever). I learned recursion really well with a two fold approach "Graphs" and Functional languages.Here is an eloquent argument about why checking a candidate's C++ proficiency is a better test of a programmer's talent for building software (versus their skillset) than testing for Java or C#.
The Perils of JavaSchools - Joel on Software
Joel's blog is consistently excellent - articulate, entertaining and thought-provoking.