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

Oh, what a need for precision! ;)
Though Excel is a spreadsheet and not a programming language (was born without), it HAS a powerful programming language, so I think it's clear that "Yes it is" must be read as "No, but it has one".
Here is my PERSONAL view: I'm fed up with all programming languages, they look silly and old, primitives. I won't explain here why I think so, I only say that LINQ is a small step in the right direction but definitely not enough, and not that way.
So I advice to choose the first language you feel comfortable with (for any reason) and you can master to do all the things you need, possibly without additional bloat like frameworks: everything you add is a potential source of problems (mostly security ones).
I use VB6 with all its dirty tricks, but if you like awful COBOL, go on stick with it.
I don't think trading automation needs very complex programming; if you have sophisticated quantitative algorithms to code, you may like more "evolved" platforms.
 
Whatever language suits the project. There is no silver bullet. In my opinion, programming languages are just like spoken languages -- certain idioms are easier to express (see the <a href="http://en.wikipedia.org/wiki/Linguistic_relativity">Sapir-Whorf hypothesis</a>) in certain languages.

With packages like <a href="http://incubator.apache.org/thrift/">Thrift</a> and Google's <a href="http://code.google.com/p/protobuf/">Protocol Buffers</a>, how a specific service is implemented is starting to matter less and less.

I write my websites in Ruby. I prototype in Ruby, Matlab, and R. I extend some services to C++ so I can use my GPU. I started writing some services in Scala because I like the stability/portability of the jvm, not having to worry about garbage collection, and how I can force myself to use functional paradigms and the actor pattern (Erlang-ish to the rescue!). Basically, I just use whatever works.

You wouldn't use a screw driver to hammer a nail, would you? Use the most efficient tool for the job.

That being said, for 99% of people, Excel + VBA is the best tool (though, I think <a href="http://www.resolversystems.com/products/resolver-one/">Resolver One</a> has a lot of potential).
 
Quote from Corey:

Whatever language suits the project. There is no silver bullet. In my opinion, programming languages are just like spoken languages -- certain idioms are easier to express (see the <a href="http://en.wikipedia.org/wiki/Linguistic_relativity">Sapir-Whorf hypothesis</a>) in certain languages.

With packages like <a href="http://incubator.apache.org/thrift/">Thrift</a> and Google's <a href="http://code.google.com/p/protobuf/">Protocol Buffers</a>, how a specific service is implemented is starting to matter less and less.

I write my websites in Ruby. I prototype in Ruby, Matlab, and R. I extend some services to C++ so I can use my GPU. I started writing some services in Scala because I like the stability/portability of the jvm, not having to worry about garbage collection, and how I can force myself to use functional paradigms and the actor pattern (Erlang-ish to the rescue!). Basically, I just use whatever works.

You wouldn't use a screw driver to hammer a nail, would you? Use the most efficient tool for the job.

That being said, for 99% of people, Excel + VBA is the best tool (though, I think <a href="http://www.resolversystems.com/products/resolver-one/">Resolver One</a> has a lot of potential).

In terms of the official ET programming language... we have 2 for Excel (VBA... etc. etc.)
 
Quote from jasonc:

not to hijack the thread but what would people recommend as the best way to learn a programming language?

do the puzzles on www.topcoder.com

look over this http://pleac.sourceforge.net/ for the language you're using. Or download source code from oriellynet.com for there books

dont worry about efficiency, bigOh, design patterns, or any of that. just get stuff working
 
Quote from TSGannGalt:

The title says enough...

If you were to learn a programming language for automation, research/testing or other stuff what language would you want to learn?

Excel(VBA), Python, OCaml, C#, C++, Java, Ruby, etc. etc.

Equally, if you were to teach someone which language would you use? (We all have our own set of favorite languages, C# for me, but if you consider the usage within a trader, every language has it's pros/cons... like C# is great for developing a automation package with easy WinForms/WPF dev., but Python, Ruby, and OCaml are great for prototyping and development... Java and C++ being compatible with UNIX = development for high end stuff... and the list goes on...)

Plus... if there were to be an "un-official" programming language in ET to post codes and share sources, what would be a good language? (Of course, ET has the 1MB limit so it's not the ideal forum to post stuff but I'm only asking...)

I started with VBA, this gave me ample room to truly explore the potential of the MS Office applications.

Once VBA is learned, VB .NET is a walk in the park.
 
Quote from TSGannGalt:

The title says enough...

If you were to learn a programming language for automation, research/testing or other stuff what language would you want to learn?

Equally, if you were to teach someone which language would you use?

c/c++. it's the industry standard. if you have interests in anything high frequency related, you can't get around knowing these.
 
Quote from propseeker:

c/c++. it's the industry standard. if you have interests in anything high frequency related, you can't get around knowing these.

I think Java will become next industry standard. I came cross some embedded development kit recently, it comes with a lot Java examples, really nice gui.
 
Quote from number22:

I think Java will become next industry standard. I came cross some embedded development kit recently, it comes with a lot Java examples, really nice gui.

Until or unless they find a way to limit Java's hogging the resources, I don't see it becoming THE standard. As it is now, Java carries too big a memory footprint in my opinion. C++ will be the better language to deal with memory allocation.
 
Quote from Batman28:

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++

Hi,

I looked into F# a little bit. Could you tell me why it is specifically useful?
Compared to the others you mention?

I know it caters to scientists and engineers, etc., but what about it do you find appealing, that makes it any different than the others?

Thanks.
 
Back
Top