If you were to learn / teach someone a programming language?

Discussion in 'Automated Trading' started by TSGannGalt, Nov 21, 2009.

  1. In terms of language quality, out of those languages I think Python would be by far the most pleasant to do system development in. However, it really depends moreso on what you want to interface with. Go with the flow.
     
    #11     Nov 22, 2009
  2. jjs235

    jjs235

    Going to a local community college or teaching yourself are the best bang for your buck. I personally took a JAVA class at a community college to fill a prereq for grad school and it was more than enough to code trading applications years later.
     
    #12     Nov 23, 2009
  3. My personal favorite these days is c#, though I have heard good things about Python as well.
    Taking a class is certainly a viable option, but I think you can do wonders just by grabbing a book and trying on your own. You can get demo software (Microsoft Express C#, etc) and there are tons of great sample projects (Codeproject) and forums (Slashdot) where people are awesome about answering difficult questions. And chances are if you don't know something, you can just google it and get 1000s of hits.
    Writing software is definately one of those things where you just have to roll up your sleeves and get dirty.
     
    #13     Nov 23, 2009
  4. PHP JAVA
     
    #14     Nov 23, 2009
  5. C#. perfect langauge for 99.9% of all programming, from websites to server processes. Alternatives, for example PHP, are "one trick ponies" (in this case a pure make a website language). IT also is a nice modern langauge with some terrific innovative features (LINQ).

    It is also reasonable fast and secure (though security is a hugh beast to master - thanks to the tremendous flexibility. Nicely seen in NinjaTrader which basically treads CAS - Code Access Security - with a hugh bag of ignorance instead of limiting strategoes to only what they support).

    That being said, the langauge is not easy (not at least thanks to LINQ) and mastering all the class libraries takes years. Most is not needed all of the time, though - for example in Trading you will most likely not do low level active directory programming, not to 3d DirectX programming, and not use a lot of other subsystems ;)
     
    #15     Nov 23, 2009
  6. Yes it is.

    I use C++, mainly because I learnt C some 20 years ago and it is guaranteed to still be around in another 20 years.

    I recently went through about half of the new Bjarne Stroustrup Programming book, and I highly recommend it. However, it is not for the faint hearted - you have to want to program to derive any benefit.

    The only way to learn programming is to program.

    Paraphrasing Stroustrup, you only really understand a problem when you try to code a robust solution for it. It's so true and highly applicable to trading.
     
    #16     Nov 23, 2009
  7. Hardly. YOu need to get the basics before making claims - among them waht a programming langauge actually IS.

    Excel has an integrated formula style langauge, but it is not "Excel" that is the langauge, and the language used to make higher functions in excel internally is actually called "Visual Basic for Applications".
     
    #17     Nov 23, 2009
  8. OK. Define programming language.
     
    #18     Nov 23, 2009
  9. Why should I? Get a good dictionary and read it ;)

    To quote from the Random House DIctionary:

    "a high-level language used to write computer programs, as COBOL or BASIC, or, sometimes, an assembly language."

    To go deeper in the definition of language (which you may miss) in this context, again from the Random House Dictionary:

    "Computers. a set of characters and symbols and syntactic rules for their combination and use, by means of which a computer can be given directions: The language of many commercial application programs is COBOL."

    Note that it does not say "Product name". Many people (mostly beginner without a clue) make the same mistake for example thinking ASP is a programming langauge - it is not and never was (the ASP langauge below was actually replacable, but mostly Visual Basic was used).

    So, finally there is common sense (get it) - even Microsoft does not claim Excel is a programming langauge, but does in fact fall back to VBA here (Visual Basic for Applications), which INCIDENTALLY is not even core part of excel. It is installed with excel, but it is also installed with some other software and there was a time (it is a retired product) you could license VBA for inclusion in your own applications.

    You can read more on VBA at http://en.wikipedia.org/wiki/Visual_Basic_for_Applications and to my check the version of the article is accurate (mind you, i did not check the dates). As you can see, it is an external system that you actually use when programming.

    I personally find the amount of "willfull not knowing of facts" among excel people astonishing.
     
    #19     Nov 23, 2009
  10. the best language to teach someone with is the first language they look at, but due to completeness and beauty it should be Pascal or at least a OO and not a scripting language as it does things rather differently.

    I differentiate languages on how pretty they are in my eyes:

    C# is the most beautiful. it is practical, amazing support, .Net librararies, advance technologies (python can't even multi-thread for example), linq (plinq) and so on. AMAZING GUI libraries - even in some banks that opt for JAVA on the servers they use C# for GUI.

    Java - very similar to C# in terms of structure but ugly. I also find it instable. it is a good language for server-side - better be hidden and no seen.

    C++ - great language but high verbosity. perfect if you want control over resources (memory etc), advanced, and amazing amount of libraries (maths/science) out there for u to use. but it takes alot more time to put something together with.

    Python - beautiful to quickly hack programming thoughts. you can do things in Python in 1-2 lines of code that would be 5-10 lines of code in all other languages above.

    VBA - do not understimate the power of this language - it is used on every trading desk I've worked on.

    F# - if you're thinking of haskel, erlang etc. go with something that has the best of all of them.

    R - the best language for statistical research and analysis. Matlab is also decent.

    summary: what you want to achieve often determines what language is the best as they can have small advantages in some areas. we all know c++ kicks ass on performance but we also know it takes much longer to do something with it useful.

    exerience: the language you know most is the best to do things with. once you master one language you learn others easily but it's important to know one language best (rather than knowing ten languages with basic skills)

    industry: all trading desks in investment banks use Excel and VBA. if they want to do something fancy they use C++ libraries (provided by their quants) or Java or C# for server/gui. some also use matlab and R.

    Quant hedge funds: very dependent on the background of their head of tech. but mostly hack ideas in Python/Erlang/Perl and implement in C++ (mainly unix based). alot of them also love R. R is veryyyyy popular in some big hedge funds. but mainly for research and generating signals. the execution algorithms are almost always in C/C++.

    the future: learn C# and F#. these two will be THE languages to know in 5 years. C# already is a prince. many banking jobs require you to know it. but many people don't realise just how powerful it has got. F# will also take over python and R for what they do. and in collaboration with C# and .Net they are unbeatable. just go have a look at F# visual libraries it kicks python ass. Having said that Python, R, C++ will always be around.

    Perl will also survive as a text-parsing language. there are things you can do in perl in 1 line of code that rapes every other languages put together inc c++.


    my Choice:
    C#, F#, R, Python and C++
     
    #20     Nov 23, 2009