5

I wanted to know how does Java/C# scale up compared to C++ with reference to financial industry projects ?

Thanks.

4

3 回答 3

15

Depends on the type of system. C++ is traditionally associated with finance applications because people use it to code fast monte-carlo models for pricing derivative securities. This is probably irrelevant if you're not a quantitative analyst (quant).

For a trading floor system or other transactional application C++ will certainly get you faster performance and more transaction volume in a smaller memory footprint and less CPU. However, database and network performance are more likely to be a limiting factor, and Java or C# can be scaled by using clustered architectures.

Java and C# can pause for garbage collection which leads to dead spaces in your application's response times. These delays might be unacceptable for some applications (e.g. algorithmic trading platforms) that need to support reliable realtime responses. In this case C++ allows you tighter control over this behaviour and may be preferable.

Doing some quick searches on Jobserve for contract jobs based on the keywords 'Banking' and 'C++', '.Net' and 'Java' turns up:

  • 60 matches for 'C++ and Banking'
  • 128 matches for 'Java and Banking'
  • 186 matches for '.Net and Banking'

Assuming some correlation (1) between the number of job ads for contractors and the number of active projects (2) one can use this as a rough metric indicating the relative prevalence of these platforms in active projects.

  1. Relative availability of people with the skill will affect this as well - a well supplied skill set will mean more jobs get filled and a skill set in short supply will mean that more positions are left open for longer.

  2. The banking and insurance industries have a perennial skill shortage of good development staff with experience in the industry so there is a substantial contract market for many skill sets.

于 2009-09-03T06:15:27.403 回答
3

Obviously it varies a lot across different companies / areas of the industry, but in my experience it roughly breaks down as follows:

  • Java for the big enterprise systems, back end trading platforms etc.
  • C++ for the low latency / high performance stuff
  • C# for front-end / desktop apps

Java is overall the biggest of these three - which makes sense as it is the best suited for general purpose, cross platform enterprise applications on the server side.

The only area where Java/C# are really not suitable is the very low latency stuff, where GC pauses can be very problematic. You really need C++ here (or assembler, or some other language that allows you to get guaranteed realtime behaviour)

There are occasionally a few other languages thrown in as well (e.g. Haskell for pricing models), but these tend to be in more niche / specialist domains.

I've also seen a bit of experimentation with some of the newer JVM languages (e.g. Scala, Clojure). Still pretty small-scale at present, but if you're looking for a place to develop your skills I think these are a pretty good bet for the future because they combine the advantages of the Java platform (where banks have a huge amount of investment) with much more modern / productive languages.

于 2012-05-20T02:40:49.303 回答
2

It really depends on the application's purpose. Many applications are web-based now, and C++ doesn't lend itself as well to that environment.

I agree with the other responder, but I would add that other languages are becoming increasingly popular for quants beyond these because of the ease of coding and their abilities to handle data: R, Matlab, and Python in particular.

于 2009-09-10T06:14:42.683 回答