Expert Insider thoughts on low latency programming trading languages like C C++ Java vs Python
A set of tips came in from another expert through my newsletter:
Let me try to categorize things from Low latency point of view.such systems like HFT application has two parts of it, one part which is latency sensitive and one part which is non latency sensitive.Component which are latency sensitive are developed majorly in C and C++.and non latency sensitive component can be developed in any language of choice in which developer feel comfort and have expertise to make the development much faster.
–> Yes this is definitely a big standard, I prefer C as it even simpler and better hook development into a low latency operating system like a custom Linux kernel
The major reason why industry and senior developers in profession prefer to use other language is because Mastering C and C++ is too difficult hence getting an expertise developer in C and C++ is difficult. One things I would like to point if developer has not written a latency sensitive code in C and C++ it will not be latency sensitive application.People prefer Java because it is too easy to learn and things are faster to develop and maintain as compared to the core part of C and C++. Java is pure Object Oriented language. While Object oriented is just one part of C++.
–> The suggested open Trade Manager Java project could be a decent starting point here. The .NET stuff I have worked is definitely another great starting point
Which is normally low latency developer avoid and use the template generic programming which is much harder to learn.
–> Totally agree, you want your systems to be generic based only with no state as that takes up less processing
Python is never been a main stream language for Low latency side of the system. It will be a poor choice. But yes for the part of the system which is non low latency python might be a smarter choice it will give you much faster development cycle and easily maintainable code base.
–> I really agree here so most should stick with a high performance language like C to reduce jitterness at the OS level, Java does this with the garbage collector. I have provided many video talks from experts on this including from the biggest banks on the planet.
Start categorize your systems.Also avoid mixing and using language adapters and try to find other alternative solutions.
–> Sounds good to me