Monday 2 October 2017


Currently, I’m taking care of Learning Machine’s submission for Max Dama’s QuantCup. That requires optimising a “price-time goal limit order matching engine”. More simply, it means ‘making a process which matches buy and sell requests really fast’. *
As per the competition rules, I’m developing our entry in the C programming language. But when it comes to our own system, I’m likely to write it in something different.
Why? I want a terminology which balances ease of development with speedy end results. Although compiled C is very fast, it isn’t an object-oriented (‘OO’) language, which means it’s harder to represent the concepts I’m coding about in many ways which seems natural to humans.
The four most in-demand OO languages out there happen to be C++, C#, Java and Python, and in them, I am quite happily able to apply pretty much anything within the potential of my intelligence (we’re screwed - ed). Therefore which one did I decide on? Machine learning tecnologies
Python Straight off the bat, That i knew Python was unsuitable. While the language make it easy 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.
An additional consideration was the OO syntax in the language: I just don’t 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 from the web and for simple unit testing, so I may well come back to it later for a distinct purpose.
Java
Java was another candidate that was quickly crossed off the list. Why? Because in terms of I know, Java doesn’t enable external functions to be named without piping a line into a program(if I’m incorrect about this, let us know via the reviews 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. does indeed everything Java does, and more). And it has enhanced handling of datetime type (important! ).
C++
In the four languages listed here, I am least comfortable in C++. I thus figured that Learning Machine would be a great way to extend my knowledge of the language.
At first, C++ seemed best: solid OO implementation, a fast, compiled language, the ability to publish Assembly language and C straight into a program, and wonderful IDEs (I’m a fan of Visual Studio - university students can easily download it free through Microsoft’s DreamSpark program). C++ was so perfect, in reality that I started programming in it right away.
However , as soon as I got the basic class structure down pat, it strike me: the compiler. Spending thirty minutes debugging a simple mistake such as missing a type shed is not an efficient make use of my time, particularly when aiming to do university study alongside programming for Learning Equipment.
C# (C Sharp)
In the four languages considered, one was left: C#. A perfect language, it has all of the advantages of C++ (bar the speed) and offers a huge normal library, with even more libraries available on the internet. It even lets you call external functions, and use pointers - features which place it in a category above Java. Not only that, although Microsoft seem to focus their particular documentation heavily on the dialect and their IDE, which smooths the ride somewhat.
Currently have I missed anything? Can i have included OCaml? Aim C? Erlang? Let us know inside the comments! (I’m seriously taking into consideration writing some external capabilities in OCaml…)
* This kind of matching task would normally be done within the exchange on its own, but for speed reasons it may be also done within a large number of high frequency trading firms to allow them to see the most up to date version of the order book and help to make orders accordingly.
To learn more about compiler check our webpage