I have been searching for a language or system that I feel has all the right balances for the types of programs that I write. Conciously, what I have done over the last few years is, I have learned a new language and let it compete and evolve in my mind against the way I feel against other languages. So here are languages that I have done this with: C C++ C++11 C# Java Lisp Haskell Scala Python Clojure The winner so far is C++11 and Clojure. <iframe width="640" height="390" src="//www.youtube.com/embed/wASCH_gPnDw" frameborder="0" allowfullscreen></iframe>
C++ is the daddy and when faced with problems which can only be solved by dropping into low level code it is almost always the way to go (unless you need to get next to the metal and use assembly). Never could get to grips with the syntax in Clojure. C# is my language of choice. Much quicker to get out production quality code than C++, and when written by someone with a good understanding of the mechanics of the compilers and runtime can get close to C++ performance.
<iframe width="640" height="390" src="//www.youtube.com/embed/V1Eu9vZaDYw" frameborder="0" allowfullscreen></iframe>
<iframe type="text/html" width="420" height="290" mozallowfullscreen="true" webkitallowfullscreen="true" src="http://www.parleys.com/share.html#play/5148922a0364bc17fc56c62d" frameborder="0"><br /></iframe>
Yeah it used to display an embedded video. I don't know what happened but since the site upgrade that feature doesn't work anymore.
What really is the difference between these languages? I'm self taught, started with machine languages and Basic. I can do scripting in any of the trading environments and that is all I need so I don't learn beyond that. Basic taught me to do things in modular fashion, otherwise I couldn't debug something without adding more problems. I recall that there was a language that had a cult following in the '70's but unable to recall the name. It had the feature that if a module was written then said module could be added to the language as a command. That appealed to me. I discovered early on that anything that could be flowcharted could be coded. I talked to many professional programmers and never found one that used flowcharts. That perplexes me to this day because I can't complete anything without first flowcharting it. If I start writing something without a flowchart I will hit the wall at some point and have to stop, make the flowchart, then debug the mess I created. Maybe the newer languages force the flowchart into place somehow, object orientation does that somehow?
Wasn't UML and Rational Rose an attempt to formalize that process? Seems Agile process is the anti-thesis of that. Makes self -learning difficult for me. it seems like you just have to stick with your camp to maximize your proficiency. I hear it takes 5 to 10 years to become a good coder.