Currently, I’m working away at Learning Machine’s submission to get Max Dama’s QuantCup. Which involves optimising a “price-time concern limit order matching engine”. More simply, it means ‘making a process which matches buy and sell orders placed really fast’. *
In accordance with the competition rules, I’m programs our entry in the C programming language. But when it comes to our own system, I’m likely to write it in different things.
Why? I want a terminology which balances ease of encoding with speedy end results. Though compiled C is very fast, it isn’t an object-oriented (‘OO’) language, which means it is very harder to represent the concepts I’m coding about you might say which seems natural to humans.
The four most favored OO languages out there will be C++, C#, Java and Python, and in them, I am quite happily able to use pretty much anything within the ability of my intelligence (we’re screwed - ed). And so which one did I pick? Machine learning tecnologies
Python Straight off the bat, I knew Python was unsuitable. While the language make it simple to pump out code at a ridiculous pace, it is terrifically slow (unless you write a library in C - but then that’s C, not really Python). That particularly holds true for large scale projects.
One other consideration was the OO format in the language: I just rarely like it. It’s always thought tacked-on and feeble. Python is primarily a server scripting language, I guess.
Having said that, Python is my language of choice for scraping data off the web and for simple unit testing, so I may well return to it later for a diverse purpose.
Java was another candidate that was quickly crossed off each of our list. Why? Because as long as I know, Java doesn’t let external functions to be referred to as without piping a chain into a program(if I’m incorrect about this, let us know via the remarks below! ) [Turns out I was indeed wrong, see http://java.sun.com/docs/books/jni/html/jniTOC.html]. Another issue is the existence of C#. Pretty much the same language, but with a superset of Java’s features (i. e. may everything Java does, and more). And it has better handling of datetime type (important! ).
With the four languages listed here, I am least comfortable in C++. I thus figured that Learning Machine would be a smart way to extend my knowledge of chinese.
At first, C++ seemed excellent: solid OO implementation, a fast, compiled language, the ability to compose Assembly language and C straight into a program, and wonderful IDEs (I’m a fan of Visual Studio - university students may download it free through Microsoft’s DreamSpark program). C++ was so perfect, in reality that I started programming on it right away.
However , as soon as I got the basic class structure down pat, it struck me: the compiler. Spending thirty minutes debugging a simple mistake such as missing a type ensemble is not an efficient utilization of my time, particularly when planning to do university study together with programming for Learning Equipment.
C# (C Sharp)
Of the four languages considered, a single was left: C#. An almost perfect language, it has each of the advantages of C++ (bar its speed) and offers a huge common library, with even more libraries available on the internet. It even permits you to call external functions, and use pointers - features which place it in a class above Java. Not only that, but Microsoft seem to focus their particular documentation heavily on the vocabulary and their IDE, which smooths the ride somewhat.
Have got I missed anything? Can i have included OCaml? Goal C? Erlang? Let us know in the comments! (I’m seriously taking into consideration writing some external features in OCaml…)
* This kind of matching task would normally be done within the exchange themselves, but for speed reasons it’s also done within many high frequency trading firms to allow them to see the most up to date version from the order book and make orders accordingly.
For more details about documentation you can check this popular resource: visit here