C# or C++

markchan

New Member
My friends working in JP Morgan told me that the quant team there program mainly with C# and JAVA, instead of C++. Is there any trend towards this transition in other companies?
 

kean

Mathematics Student
...

see growing demand in Java.


My friends working in JP Morgan told me that the quant team there program mainly with C# and JAVA, instead of C++. Is there any trend towards this transition in other companies?
 

DominiConnor

Quant Headhunter
The quants I talk to about leaving JPM don't mention Java, though they have mentioned C#
I don't think it's widespread there. Remember that IBs are huge things, and for instance JPM has hugely important SmallTalk applications, some F#, and VC++ 6 which is barely C++ at all.

Demand for Java is indeed growing but from a tiny base, and not all that fast.

There is a lot of Java in banks, and you may find yourself doing it, since it grabbing a chunk of the market for forms, data pumping, and other general housekeeping. One bank has a large risk system in Java, but it doesn't hardly work at all.

If C++ just seems too tough learn C#, Java is not going to help you find the job you want, unless you like the idea of being in the IT department.
 

markchan

New Member
Thanks for your comments, Dominic.
I assume that it doesn't make much difference for recruiter to highlight experience of C++ or C# in the CV.
 

DominiConnor

Quant Headhunter
It does make a difference between highlighting C++ over C#
People will consider C++ developers for C# roles but far less often C# for C++ jobs.
 

Henderson

New Member
I believe that C++ is still more widely accepted. I consider it more useful when we consider candidates.
 

Ice Viking

New Member
C#, no question about it.
starting a new project is definitely easier in C#. Development will be a lot quicker and bug fixing is a lot easier.


From someone much wiser than me :

"I've spent alot of time benchmarking C++ vs. C# in a gazillion different ways and, to sum it up in a nutshell, there really isn't any advantage C++ has in the enterprise. C# beats C++ hands down.
Enterprise programming is about productivity, maintainability, stability and ease of use. There's no way a good C++ programmer can beat a good C# programmer in the above criteria.
People used to think the advantage of C++ was speed and that if they used c++ they were really clever and "hardcore".
But with the advent of 2.0 the compiler has made a huge leap. As a matter of fact, we created several benchmarks where compiler optimized C# beat compiler optimized C++ speed wise (processor dependent). (And it makes sense why this should actually be so)."

But Mark Joshi *halleluja* when confronted with the same quesion simply answered "there are more jobs in quant for C++ programmers"
Here's reference for a quick start tutorial.

http://www.c-sharpcorner.com/UploadFile/anandnarayanswamy/CSTutorial1AN11282005015140AM/CSTutorial1AN.aspx
My personal feeling is don't be too confident if you've finished one course in C++. It's kind of like taking one 3 month karate class, you feel bad ass but you really aren't ready for a fight.
 

kean

Mathematics Student
C#, no question about it.
But Mark Joshi *halleluja* when confronted with the same quesion simply answered "there are more jobs in quant for C++ programmers"
Here's reference for a quick start tutorial.

http://www.c-sharpcorner.com/UploadFile/anandnarayanswamy/CSTutorial1AN11282005015140AM/CSTutorial1AN.aspx
My personal feeling is don't be too confident if you've finished one course in C++. It's kind of like taking one 3 month karate class, you feel bad ass but you really aren't ready for a fight.
He has to sell his books.

You are right. C++ takes time to harness. I even thing any FE program that teaches C++ will not get the karate kids to fight.:sos:
 

alain

Older and Wiser
C#, no question about it.
starting a new project is definitely easier in C#. Development will be a lot quicker and bug fixing is a lot easier.


From someone much wiser than me :

"I've spent alot of time benchmarking C++ vs. C# in a gazillion different ways and, to sum it up in a nutshell, there really isn't any advantage C++ has in the enterprise. C# beats C++ hands down.
Enterprise programming is about productivity, maintainability, stability and ease of use. There's no way a good C++ programmer can beat a good C# programmer in the above criteria.
People used to think the advantage of C++ was speed and that if they used c++ they were really clever and "hardcore".
But with the advent of 2.0 the compiler has made a huge leap. As a matter of fact, we created several benchmarks where compiler optimized C# beat compiler optimized C++ speed wise (processor dependent). (And it makes sense why this should actually be so)."
It all depends which kind of enterprise application we are talking about. If it is Systems and IT, maybe C# and Java might be all those things but they are not faster. For domain specific applications, C++ will still have a leg up in terms of speed.

By the way, I really don't know which benchmarks you ran but as far as the language shutout is concerned (these are well known algorithms) C# comes way behind C++.

C++ GNU g++ benchmarks | Gentoo : Intel® Pentium® 4 Extra!

C++ Intel benchmarks | Gentoo : Intel® Pentium® 4 Extra!
 

Wallstyouth

Vice President
It all depends which kind of enterprise application we are talking about. If it is Systems and IT, maybe C# and Java might be all those things but they are not faster. For domain specific applications, C++ will still have a leg up in terms of speed.

By the way, I really don't know which benchmarks you ran but as far as the language shutout is concerned (these are well known algorithms) C# comes way behind C++.

C++ GNU g++ benchmarks | Gentoo : Intel® Pentium®*4 Extra!

C++ Intel benchmarks | Gentoo : Intel® Pentium®*4 Extra!
I thought with the new Visual Studio 8 and .NET 3.0 everything gets compiled into a MISL? basically the same byte code VB.NET, C#, C++ and the only difference these days is syntax but the exact same byte code is generated.
 

alain

Older and Wiser
I thought with the new Visual Studio 8 and .NET 3.0 everything gets compiled into a MISL? basically the same byte code VB.NET, C#, C++ and the only difference these days is syntax but the exact same byte code is generated.
I don't think unmanaged C++ gets compiled to MSIL.
 

nodicjon

New Member
True, unmanaged C++ code doesn't compile into MSIL/CIL byte code.
Anyway, back to the point of discussion. My personal view is that C# will dominate as a first choice application programming language in years to come and soon C++ will relinquish its throne. C++ will still have its niche in embedded systems / hardware drivers / game & operating systems programming, but its complexity brings out too many non-implementation related problems for application programmers. Certainly good design diminishes/eliminates these concerns. But still, you don't play soccer with a rugby ball (although you can). IMHO it's easier, faster and safer to write your code in C# as opposed to C++.
 

joe_bradley

Member
On the surface, that sentiment seems reasonable. Unfortunately, I doubt it will convince any of the senior quants who are actually running a quant shop. This has been discussed before.

The problem is that for someone who is already good at C++, any gain you have by switching to C# is pretty modest, and is more than outweighed by the drag on productivity of having to learn a completely different library for C#. Granted, it's easier to find new people who know C# than C++, but that's a marginal concern. Basically, skills in C++ would have to become practically extinct in the marketplace for management to incur the switching cost. So quant departments that are using C++ now are more than inclined to keep using it. And while C++ large-and-getting-larger library system may seem complicated, to someone using C++ it's just proof that "anything C# can do, C++ can do better." As far as quant job openings I've heard of, if they aren't using C++, then they're using something completely different; e.g. Python, OCaml/F#, etc., not C#.

Of course, if you were someone in corporate staffing up something like a new IT or risk management department, and your main goal was to ensure salaries stayed more modest, you might perhaps mandate C# simply because it is more practical to find people who know C++.

And as far as current utility: as someone who is currently interviewing for quant positions, I can say that my interviewers are uniformly much more interested in how much STL/Boost I have been using than they are about my C# knowledge.
 

alain

Older and Wiser
True, unmanaged C++ code doesn't compile into MSIL/CIL byte code.
Anyway, back to the point of discussion. My personal view is that C# will dominate as a first choice application programming language in years to come and soon C++ will relinquish its throne. C++ will still have its niche in embedded systems / hardware drivers / game & operating systems programming, but its complexity brings out too many non-implementation related problems for application programmers. Certainly good design diminishes/eliminates these concerns. But still, you don't play soccer with a rugby ball (although you can). IMHO it's easier, faster and safer to write your code in C# as opposed to C++.
I could say the same thing about Java.
 

nodicjon

New Member
My point was not to bury C++ and call up everyone to switch languages. I'm simply observing that trend as an impartial programmer.
Business community seems to be the most reluctant to technological changes (i.e. COBOL): once they pick a "standard", they seem to stick with it in for a while. In that sense, I believe C++ is still a young "standard" and it will be widely used for at least another 15-20 years. The same cannot be said about the mainstream programming though...
However, we're a part of business community, so let's stick to our "standard". There's no point of arguing whether that language is better or another, there's simply demand and supply.

I could say the same thing about Java.
IMHO Java is not well-suited for application programming, although it presents itself as a good platform for mobile/network/web programming. I was particularly stressing application programming area.
 

alain

Older and Wiser
My point was not to bury C++ and call up everyone to switch languages. I'm simply observing that trend as an impartial programmer.
Business community seems to be the most reluctant to technological changes (i.e. COBOL): once they pick a "standard", they seem to stick with it in for a while. In that sense, I believe C++ is still a young "standard" and it will be widely used for at least another 15-20 years. The same cannot be said about the mainstream programming though...
However, we're a part of business community, so let's stick to our "standard". There's no point of arguing whether that language is better or another, there's simply demand and supply.


IMHO Java is not well-suited for application programming, although it presents itself as a good platform for mobile/network/web programming. I was particularly stressing application programming area.

What do you mean about application programming? In my company, my group and the group next to mine (we are very close), all the back end processes are written in Java, Python and R. The main pricing libraries are written in C++ or something written in C++. Even some of the heavy linear algebra is written in Java. C# is marginally used for front end apps that need deployment directly into a PC but we are moving to a Web front end solution for our traders. Our internal Risk Models are written in R and the re-valuation and risk engines in Java.

The main thing is that we ar a UNIX shop so C# won't be coming in anytime soon. BTW, I work for a big outfit.
 

ImranQ

New Member
I agree. C# is mainly used for front end data entry WINDOWS apps. Most core processing in investment banking is generally done on unix machines mainly using C++. Will C# take over C++? Hardly! Saying that C# is a great language but it will never move beyond windows only because if it became an open language Microsoft would lose dominance in .Net. They would NEVER let that happen.

What do you mean about application programming? In my company, my group and the group next to mine (we are very close), all the back end processes are written in Java, Python and R. The main pricing libraries are written in C++ or something written in C++. Even some of the heavy linear algebra is written in Java. C# is marginally used for front end apps that need deployment directly into a PC but we are moving to a Web front end solution for our traders. Our internal Risk Models are written in R and the re-valuation and risk engines in Java.

The main thing is that we ar a UNIX shop so C# won't be coming in anytime soon. BTW, I work for a big outfit.
 
Top