• 2023 QUANTNET RANKINGS OF TOP MFE PROGRAMS is now available.

  • C++ Programming for Financial Engineering
    Highly recommended by thousands of MFE students. Covers essential C++ topics with applications to financial engineering. Learn more Join!
    Python for Finance with Intro to Data Science
    Gain practical understanding of Python to read, understand, and write professional Python code for your first day on the job. Learn more Join!
    An Intuition-Based Options Primer for FE
    Ideal for entry level positions interviews and graduate studies, specializing in options trading arbitrage and options valuation models. Learn more Join!

Which laguage: C++ or Java?

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?

Thanks

Raffaele
 

DominiConnor

Quant Headhunter
C++ Wins

I'm a headhunter, and I'm here to tell you that C++ outclasses Java big time.
Java is for those who are weak and patient, as content to live on a modest income.
 
You should study C++. Later you can also take VBA. ;)

That is a quote from Mark Joshi advice:
"The standard programming approach is object-oriented C++. A wannable quant must learn C++ (I have no opinion on whether this should be the correct language for implementing; it is merely the correct language for getting job). Some place use MatLab and that is also useful skill, but less important. VBA is also used a lot, but there is a general attitude that you can pick it up on the job."

-V-
 
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?

Thanks

Raffaele

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.
 

Yuriy

MFE Alum
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.

One of my friends is a GUI programmer at JPMorgan, but he has no clue about C++, but knows Java. I wonder what is he doing with Java :) will probably ask him next time.
 
GUI dev

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.
 

Yuriy

MFE Alum
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.

That is probably what my friend is doing. When I asked him if he wants do get a degree in MFE, he said "no", being comfortable with what he is doing.
 

DominiConnor

Quant Headhunter
It was the case some years ago that most GUI development was in C++, but that is long gone, and except at the very high end of GUIs it is overkill.

In the last year my firm has handled exactly 1 C++ GUI job, even then we asked them if they really meant it.
GUI development is a noticeable part of quant finance, yes really, I'd forecast that Baruch grads will spend 5-10% of their working life doing GUI of some form, but don't sweat if you have no skills in GUI, since any hiring manager who asked about GUI would expose the fact that it's a crap "pseudo quant" role.

If you have basic skills in Excel GUI development, it will make you a marginally more useful employee.

Java is a far from ideal GUI tool, but that doesn't stop it being common...

The friend of Yuriy may be happy, but it is worth pointing out that some employers and headhunters will try to suck you into pure IT roles.
They blur the line between a quant/developer and a straight developer.
In the first year the base salaries will be the same, but the net present value of an IT role is massively less than most quant jobs.

It's not always easy to spot that difference, since I have to sadly say that some HHs will lie to you on this, though fortunately they usually do this with profound incompetence.
What's more difficult is when the hiring manager isn't that straight with you.
As well as being asked about GUI, it's a bad sign when the programming aspect of the interview is too dominant.

There are a couple of banks who use Java in real quant work, but in most cases it is a bad sign if they explicitly ask for it.

This comes about since there are a lot of "bouncer" jobs out there.
Most doormen on clubs have a really boring role, standing in the rain dealing with irritating drunk people.
But occasionally they have a really exciting time, when it gets violent.

Same with mock-quant roles. 90% of the time is the heavy lifting of investment banking work. Feeding data into packages, debugging, altering parameters, and knocking up little GUIs to allow your betters to use some part of the system. Quant skills are prized because tyou understand the language and don't have to be told that if you see a bond price of 5.87, it's actually the yield.
 

kean

Mathematics Student
I know C++ is difficult to master if we want to write good programming code. I understand some C++ guru is in this forum. I wonder how many incoming students actually know C++ before they begin the MFE program at Baruch.

Stupid question: Can someone share his or her experience on tackling the learning curve or master this programming language?

Thank you,
K
 

Yuriy

MFE Alum
Prior to MFE, I took two semesters of C++ as an undergrad, plus worked as a Research Assistant for one of my professors doing C++ coding. I'm not sure if it is possible to learn C++ on your own, you need at least one semester of intro C++.

However, my other friend, who works as a Java programmer says that it is not hard to become one, just take a course and read a couple of books.
 

alain

Older and Wiser
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.
 

kean

Mathematics Student
Thanks

Agreed 100%. I get used to C#. Now, I need to switch to C++. Thank you for sharing your thought.


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.
 

msj

Researcher
for what it's worth I taught myself C++ without knowing C or java. But i did know a few other languages: basic, pascal, lisp, assembler.

My suggested program of books on learning it is on Mark Joshi's Home Page

In terms of time, there are so many different levels of knowing is the problem.
 
Why we interview for C++ skills

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#.

http://www.joelonsoftware.com/articles/ThePerilsofJavaSchools.html

Joel's blog is consistently excellent - articulate, entertaining and thought-provoking.

I also read

http://www.codinghorror.com/blog/

and (for light relief)

http://worsethanfailure.com/default.aspx

This used to be called TheDailyWTF.com but I guess political correctness caught up with them.
 

alain

Older and Wiser
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.
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.
 
Top