best language for quantiative finance? C, D, Fortran,python etc.

which language..

  • C, C++, C#

    Votes: 40 38.1%
  • Python

    Votes: 17 16.2%
  • Delphi

    Votes: 6 5.7%
  • Java

    Votes: 12 11.4%
  • Pascal

    Votes: 3 2.9%
  • C#

    Votes: 11 10.5%
  • D

    Votes: 0 0.0%
  • Perl

    Votes: 4 3.8%
  • other

    Votes: 9 8.6%
  • your own..

    Votes: 3 2.9%

  • Total voters
    105
Not a professional quant because:
1. I don't have a PhD or anything like that which all the hedgies/institutions want.
2. I don't want to spend all that time programming. I do all my quantitative analysis in Excel and am more interested in doing that work that programming my system. (I have to do some programming once in a while to implement my system, but it's still almost 100% quant analysis).
 
Quote from nononsense:

This needs correction. If you are talking abouy scientific calculation, Python gives you access to the most reputable mathematics and statistics libraries, developed over tens of years. A lot is still done in Fortran, both for the C++ as the Pyhon case and requires Fortran runtime libraries. Setting up identical calculations in C++ - identical libraries are used - will result in practically identical execution times as in Python. By far most instructions executed are from identical highly optimized code. Python code comes only in as kind of a glue linking calls to such libraries. The C++ program, if done correctly will perform a tiny bit faster, but at what development cost?

You are making a lot of assumptions. For example, you are assuming we are talking about user-mode programs that are already memory resident and executing on the CPU. I agree generally that python, perl, java, and other interpreted languages can exhibit performance similar to a native program written in C/C++/Asm (in many cases for computation, etc). I agree that using those langauges can reduce development time in many cases. However, they simply cannot guarantee performance in real-time applications. If performance is essential, these languages could be the wrong tool.

Python does have a lot of great libraries, and a lot of support from the academic community. Personally, I loathe Python, or any other whitespace delimited language for that matter.

-segv
 
Quote from segv:

You are making a lot of assumptions. For example, you are assuming we are talking about user-mode programs that are already memory resident and executing on the CPU. I agree generally that python, perl, java, and other interpreted languages can exhibit performance similar to a native program written in C/C++/Asm (in many cases for computation, etc). I agree that using those langauges can reduce development time in many cases. However, they simply cannot guarantee performance in real-time applications. If performance is essential, these languages could be the wrong tool.

Python does have a lot of great libraries, and a lot of support from the academic community. Personally, I loathe Python, or any other whitespace delimited language for that matter.

-segv
True, that's why a very tiny part of the linux kernel is still done in asm. No defficiency of C or Python though.
Don't like whitespace delimiting: go Ruby. Doesn't bother me at all.
 
Quote from segv:

You are making a lot of assumptions. For example, you are assuming we are talking about user-mode programs that are already memory resident and executing on the CPU. I agree generally that python, perl, java, and other interpreted languages can exhibit performance similar to a native program written in C/C++/Asm (in many cases for computation, etc). I agree that using those langauges can reduce development time in many cases. However, they simply cannot guarantee performance in real-time applications. If performance is essential, these languages could be the wrong tool.

There is no wat Python can have performance similar to C/C++, specially the interpreted one. Just to have some examples:


http://shootout.alioth.debian.org/


I don't know about compiled Python, but I'm not very confident it can achieve a stellar performance

Also, the only cases when a script language can reduce development times is for small applications, or scripts. Script languages like Python tend to be not strongly typed, exactly to reduce development time. As the complexity of your code increases, however, you will find yourself fixing a big amount of bugs every time you change the type of a variable, because there is no compiler telling you where the errors are.
God bless generics in Java
 
Quote from mrtwo:

This should give an rough idea of where each language stand performance wise:

http://osnews.com/story.php?news_id=5602&page=3

Keep in mind that "raw performance" is just one part of this equation and that in the end writing smart code is what will result in good performance - in pretty much any language you choose.
Recognizing your expressed reservations, your reference is most certainly not an example of "writing smart code". It would be typical of a stone-age programmer writing scientific/mathematical applications while being unaware of available math/science libraries that have evolved over the last 20+ years. In truth some of these libraries are available for C/C++ and Python, but can't be found for java and c# varieties.
"Raw Performance" doesn't mean a thing for a knowledgeable programmer.
 
Quote from andread:
Also, the only cases when a script language can reduce development times is for small applications, or scripts. Script languages like Python tend to be not strongly typed, exactly to reduce development time. As the complexity of your code increases, however, you will find yourself fixing a big amount of bugs every time you change the type of a variable, because there is no compiler telling you where the errors are.
God bless generics in Java [/B]

Cheers to that. Loosely typed languages stink. For the life of me, I cannot figure out why you would want to switching between data types when calling functions. I've never found it to be a chore to think of what type my variables need to be.. and even if I do need to change the types of variables at some point in the future, or completely refactor my codebase, it is *extremely* easy and straightwforward to find all the impacts of that operation by using Eclipse's refactoring tools. Something I am not aware of for any loosely typed languages, where refactoring is unheard of.

However, I don't do algorithm prototyping in java.. I have other tools for that, which dont fall under the broadly accepted definition of 'programming language'
 
Quote from nononsense:
In truth some of these libraries are available for C/C++ and Python, but can't be found for java and c# varieties.

I've never had a problem calling C/fortran code from java and writing wrapper functions around them. I don't use java arrays for performance reasons, but 1.4+ has direct memory buffers.. blazing fast., just as fast as calling it from python/C/whatever.
 
Quote from nbates:



Anyone here remember BLISS, the basic language interface to system services? A beautiful language, powerful and easy to learn and use, generating the sweetest code by just wrapping a little ASM around direct system service calls to the OS.

Ah, the reminiscence :)

Yes, at Digital in the late 80's.
 
Back
Top