Die besten Java-Programmierer haben in C++ oder Assembly angefangen
Programmieren für die Trading Algorithmen, die für das Market-Making im heutigen Finanzsystem unabdingbar sind: Wie geht man das am besten an? Manche setzen hier auf Java – doch das sollte man lieber nicht tun.
Peter Lawrey, CEO von Chronicle Software, einem Anbieter von low-latency Trading Systemen für Banken und Hedgefonds, erklärt, dass Java-Kenntnisse beim Schreiben von low-latency code nichts nützen, sondern eher hinderlich sind.
„Manche haben zehn Jahre Programmiererfahrung in Java und verstehen trotzdem nicht, was sie da tun“, so Lawrey. „Es gibt Java-Entwickler, die seit 10 oder 15 Jahren programmieren und keine Ahnung haben, wie groß ein Integer ist, die nicht wirklich verstehen, wie Daten aufgebaut sind, oder wie man ein Objekt in Rohdaten umwandelt, aus denen man dann wieder ein Objekt macht. Solche Leute haben immer nur Libraries/Bibliotheken benutzt."
Programmierer, die ihr ganzes Berufsleben mit Java arbeiten, entwickeln oft ein falsches Bild der eigenen Fähigkeiten, mutmaßt Lawrey. „Die beiden Sprachen haben eine unterschiedliche Philosophie“, so Lawrey. „C++ verfolgt den ‚kitchen sink‘-Ansatz – man kann ein und dieselbe Sache mit einer ganzen Latte an Funktionen und Optionen erreichen und wenn man weiß, was man tut, wählt man die richtige aus. In Java gibt es nur ein, zwei, oder maximal drei Möglichkeiten, um etwas bestimmtes zu tun. Java ist funktionsarm, und genau deshalb haben Entwickler das Gefühl, dass sie alle Funktionen von Java ziemlich schnell beherrschen. Bei C++ hingegen hat man sehr viel weniger den Eindruck, alle Alternativen zu beherrschen.“
Mit seinem Unternehmen Chronicle entwickelt Lawrey ‘low latency Java’ – das sei wie Java, das allerdings nur alle schnellen und effizienten Konstrukte enthalte ohne auf jegliches „Beiwerk“ verzichte. Lawrey erzählt, dass er anstelle von Java das Programmieren in einer Assembly-Sprache gelernt habe, die direkt in den Machine Code übersetzt wird, der die binären Anweisungen kreiert, die Werte in und aus den Registern einer CPU bewegen.
„So lernt man es von der Pieke auf“, so Lawrey. Auch wenn man das Programmieren in C++ lernt, sei man gezwungen, Dinge in eine hohe Detailtiefe zu betrachten. Wenn man allerdings mit Java anfängt, lerne man nur einige wenige Abstraktionen, die schnelle Ergebnisse liefern.
Um mit Java Webseiten zu programmieren, reiche das völlig aus, aber wenn man low-latency Java für Trading Algorithmen entwickeln will, rät Lawey, sich zunächst sehr gute Kenntnisse in C++ anzueignen.
Fragt sich, warum man überhaupt noch Java lernen sollte. Lawey sagt, dass die besten low-lateny-Java-Programmierer die seien, die einfach nur froh seien, dass sie nicht mehr in C++ arbeiten müssten. „Man braucht einen Hintergrund, aus dem heraus man alles versteht, und der einen dankbar dafür macht, dass es Java gibt.“
Have a confidential story, tip, or comment you’d like to share? Contact: sbutcher@efinancialcareers.com in the first instance. Whatsapp/Signal/Telegram also available. Bear with us if you leave a comment at the bottom of this article: all our comments are moderated by human beings. Sometimes these humans might be asleep, or away from their desks, so it may take a while for your comment to appear. Eventually it will – unless it’s offensive or libelous (in which case it won’t.)
Photo by Laura Ockel on Unsplash