Currently, I’m concentrating on Learning Machine’s submission for Max Dama’s QuantCup. Which involves optimising a “price-time goal limit order matching engine”. More simply, it means ‘making a system which matches buy and sell requests really fast’. *
As per the competition rules, I’m encoding 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 coding with speedy end results. Although compiled C is very quickly, it isn’t an object-oriented (‘OO’) language, which means it may be harder to represent the principles I’m coding about in 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’m quite happily able to implement pretty much anything within the capability of my intelligence (we’re screwed - ed). And so which one did I choose?
Machine learning tecnologies
Straight off the bat, I knew Python was unsuitable. Even though 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.
Another consideration was the OO syntax in the language: I just do not like it. It’s always believed tacked-on and feeble. Python is primarily a scripting language, I guess.
Having said that, Python is my language of preference for scraping data off of the web and for simple model 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 in terms of I know, Java doesn’t enable external functions to be named without piping a line into a program(if I’m wrong about this, let us know via the reviews below! ) [Turns out I was indeed incorrect, see http://java.sun.com/docs/books/jni/html/jniTOC.html]
. Another concern is the existence of C#. Pretty much the same language, but with a superset of Java’s features (i. e. will everything Java does, and more). And it has better handling of datetime type (important! ).
Of 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 best: solid OO implementation, an easy, compiled language, the ability to create Assembly language and C straight into a program, and great IDEs (I’m a fan of Vision Studio - university students can download it free through Microsoft’s DreamSpark program). C++ was so perfect, in reality that I started programming on it right away.
However , the moment I got the basic class composition down pat, it struck me: the compiler. Spending thirty minutes debugging a simple error such as missing a type ensemble is not an efficient utilization of my time, particularly when trying to do university study along with programming for Learning Equipment.
C# (C Sharp)
On the four languages considered, a single was left: C#. A nearly perfect language, it has every one of the advantages of C++ (bar the speed) and offers a huge normal library, with even more your local library available on the internet. It even allows you to call external functions, and use pointers - features which place it in a class above Java. Not only that, nonetheless Microsoft seem to focus their particular documentation heavily on the vocabulary and their IDE, which smooths the ride somewhat.
Currently have I missed anything? Should I have included OCaml? Purpose C? Erlang? Let us know inside the comments! (I’m seriously considering writing some external capabilities in OCaml…)
* This kind of matching task would normally be done within the exchange alone, but for speed reasons it may be also done within many high frequency trading firms for them to see the most up to date version of the order book and help to make orders accordingly.
Check out about C++
check out our web portal