Tsotne, "C++ is undoubtedly the king in algo systems" How true is this statement? Well, I know C++, Java and other prog lang. C++ is a good prog language no doubt, and I like it just because it's a little harder than other languages, and has a learning curve to master it. In contrast Java is much easier and clearer which makes it accessible for large crowds ( smart and less smart ppl) and some of them are not fun to work with. But in reality, you can do in Java anything you can do in C++. So your statement is not fully true, and a lot of people that claim that have a historical cause, and they have C++ background and they want to defend it hard which is understandable
But in reality, you can do in Java anything you can do in C++.
Tsotne, "C++ is undoubtedly the king in algo systems" How true is this statement? Well, I know C++, Java and other prog lang. C++ is a good prog language no doubt, and I like it just because it's a little harder than other languages, and has a learning curve to master it. In contrast Java is much easier and clearer which makes it accessible for large crowds ( smart and less smart ppl) and some of them are not fun to work with. But in reality, you can do in Java anything you can do in C++. So your statement is not fully true, and a lot of people that claim that have a historical cause, and they have C++ background and they want to defend it hard which is understandable
Depends on your definition of High Frequency, if your alpha comes from having bounded latency at the micro second level, Java is not a good decision (because of the non deterministic garbage collection). If your latency have to be bounded at the millisecond(s) level, after some tweaking of the VM Java is just fine.
But C++ is an ideal language for algos and has more power ...
How so?
Take C# and C++ for comparison in terms of algo performance. That's what I meant. For more info, consult Daniel Duffy, Dominic and other professionals. Even for more info, search for professional comments about the power of different languages in algo systems.
C++ is undoubtedly the king in algo systems. I wonder if anyone can point to .NET made trading system
>> Java has a whole specification for real time Java, and you can bound your latency to micro-second not millisecond.
It's possible to achieve performance at the level of few dozens of nanoseconds with Java (and C#). I posted about it few days ago.>> If your latency have to be bounded at the millisecond(s) level, after some tweaking of the VM Java is just fine.
Just write cache friendly code, don't allocate on the heap a lot (pre allocation is your friend), reduce contention for shared memory, try to avoid memory fences (especially on the boxes with few CPUs), reuse already allocated chunks of memory, avoid "false sharing" and you can process data at the stated above speed.On processors at moderate clock rates we have seen over 25 million messages per second and latencies lower than 50 nanoseconds. This is very close to the theoretical limit of a modern processor to exchange data between cores.
if speed is not the greatest concern then why do most MFE programs require you to have C++ background and teach you mainly (if not only) that language there?!
Legacy code, interviewers, getting a job in big old financial institution.
Weird no? If something better exists (and C++ is not more powerful than that as you say) , then why scratch head with ugly syntax, ugly memory management, complex programming constructs, error prone script, etc, etc. whoever you are - "interviewer, big old financial institution", etc. considering that speed is not the concern...Why don't those institutions change the road to modern PLs then?
Welcome to the real world!!
How much do you think is going to cost them to change? Also, on average, people are afraid of new things and changes, too much risk involved, etc, etc.
...others will be forced to follow their foot steps.