Sie werden nicht glauben, welche Programmiersprache diese Wall Street-Firma verwendet

Eine Wall Street-Firma fand Rechenerfolg nicht auf dem traditionellen Weg von Enterprise Java, sondern in einer obskuren funktionalen Programmiersprache namens Caml, die den perfekten Kompromiss zwischen Präzision und Lesbarkeit bot.

Laut der Handelsfirma Jane Street hat Caml leistungsstarke Tools zum Erstellen großer Programme bereitgestellt, die schnell und fehlerfrei ausgeführt werden müssen.

"Eine große Menge an täglicher Programmierung ist die Fallanalyse. Es ist sehr schwierig, Ihre Programme richtig zu machen, und jedes Tool, das Sie vom System zur Fehlererkennung erhalten können, ist hilfreich", sagte Yaron Minsky, Leiter der Technologiegruppe bei Jane Street spricht am Freitag auf der QCon-Entwicklerkonferenz in New York.

Jane Street ist eine firmeneigene Handelsfirma, die der weltweit größte industrielle Benutzer von Caml und OCaml, der objektorientierten Version von Caml, ist.

Alle Handels- und Zusatzsysteme von Jane Street verwenden Caml, mit Ausnahme von C-Code für Systemschnittstellen auf niedriger Ebene und einigen Visual Basic-Skript-Tabellen für Analysten. Insgesamt wickelt der Caml-Code jeden Geschäftstag in der Jane Street Geschäfte im Wert von rund 20 Milliarden US-Dollar ab.

Das Unternehmen beschäftigt etwa 60 Programmierer, die Caml entweder aus ihrer College-Zeit kannten oder klug genug waren, um es während des Trainings zu lernen. Weitere rund 90 Nicht-Programmierer des Unternehmens verwenden es ebenfalls.

Jane Street benutzte Caml fast zufällig, sagte Minsky. Caml ist ein Dialekt der funktionalen Programmiersprache ML, die an Universitäten häufig als Lehrmittel für Programmierunterricht verwendet wird, aber außerhalb der Wissenschaft noch keinen großen Erfolg hat.

Minsky begann vor einem Jahrzehnt in der Jane Street, als er noch in der Graduiertenschule war. Da er mit Caml vertraut war, komponierte er eine Reihe von experimentellen Programmen für das Unternehmen, die später in Produktion gingen. Er wurde auch eingestellt, sobald er seinen Ph.D. in verteilten Systemen.

Zu dieser Zeit war Jane Street "eher traderlastig als technologielastig", sagte Minsky. Es gab viel VB-Code in Tabellenkalkulationen, obwohl dieser Ansatz für das Unternehmen nicht gut skalierbar war, da es kein System für das Änderungsmanagement gab, um den Code auf allen Computern des Benutzers zu aktualisieren.

Als das Unternehmen mehr in die Welt des Computerhandels eintauchte, setzte Minsky Caml auf den Kernsystemen des Unternehmens ein.

Jane Street befasste sich auch mit Java, das viele Handelsunternehmen verwenden, aber die Art und Weise, wie Java-Programme für Unternehmen mit ihrem dynamischen objektorientierten Ansatz erstellt werden, kann es schwierig machen, sie zu verstehen und zu begründen, sagte er.

Er bemerkte, dass ein Analyst des Unternehmens gerne jeden Code überprüft, der auf dem System ausgeführt wird, obwohl er kein Programmierer ist. Er setzt sich einfach hin und arbeitet den Code durch, bis er versteht, was los ist. Caml kann leicht zu verstehen sein, sobald Sie die Syntax festgelegt haben.

Caml bietet auch einige natürliche Vorteile. Es ist eine funktionale Sprache und bietet daher eine gute Unterstützung für Programmierfunktionen.

"Sie können eine Funktion erstellen und an eine andere Funktion übergeben und diese Funktion ein Array von Funktionen zurückgeben lassen", sagte Minsky. Funktionen sind "Klassenwerte, die wie alles andere weitergegeben werden können". In vielen Programmiersprachen können Funktionen nicht wie Werte weitergegeben werden, oder es ist manuelle Arbeit erforderlich, um sie weiterzugeben.

Außerdem sind Datenwerte in einer funktionalen Programmiersprache unveränderlich. Dies bedeutet, dass Programme nicht "Zellen in Ihren Datenstrukturen mutieren, sondern Ausdrücke auswerten", sagte Minsky.

Caml ist ein statisch typisiertes System, dh es gibt eine Reihe von Regeln für jeden Datentyp, den das System verarbeitet. Es ist normalerweise einfacher, Fehler in statisch typisierten Sprachen zu erkennen als mit dynamisch typisierten Systemen wie JavaScript oder Python. Dies beschleunigt die Berechnungen, da das Programm im Voraus weiß, welche Art von Daten es verarbeitet.

"Ich habe zutiefst gute Erfahrungen mit der Programmierung in diesem Stil gemacht, bei der Sie das Typsystem verwenden, um die Auswirkungen Ihrer Änderungen zu erfassen", sagte Minsky. "Sie können schlechten Code in jeder Sprache schreiben, aber wenn Sie wissen, was Sie tun, können Sie das Typsystem als Teil Ihres Entwurfs verwenden, um die Korrektheit Ihrer Programme erheblich zu verbessern."

Während nur wenige Leute Caml in ihren Lebensläufen haben, war es einfach, hochwertige Programmierer zu finden, sagte Minsky. Diejenigen, die Caml oder die funktionale Programmierung im Allgemeinen kennen, sind vom Programmiermodell begeistert.

Als Minsky zum ersten Mal nach Programmierern suchte, veröffentlichte er einen Hinweis auf der Caml-Mailingliste und stellte schließlich drei Personen aus den Antworten ein.

Das Unternehmen stellt auch Programmierer ein, die kein Caml kennen, und argumentiert - bisher erfolgreich -, dass sie, wenn sie klug genug sind, die Sprache im Training lernen können.

Im Laufe der Zeit hat das Unternehmen mit Caml nicht nur sein Kernhandelssystem aufgebaut, sondern auch eine Parallelitätsbibliothek, ein ausgeklügeltes Publish-and-Subscribe-System und eine Sammlung von Systemautomatisierungstools.

Insgesamt verfügt das Unternehmen über "eine große Anzahl von Systemen, die von einem kleinen Team gewartet werden", sagte Minsky.

Die Verwendung dieser obskuren Sprache habe eine Reihe von Nachteilen, sagte Minsky. Einer der Hauptgründe ist der Mangel an anständigen Werkzeugen. Minsky-Kiefern für die erweiterten Bearbeitungswerkzeuge wie Autocomplete, die Benutzer beliebter IDEs (integrierte Entwicklungsumgebungen) genießen.

Um die Situation zu verbessern, hat das Unternehmen viele eigene Tools entwickelt, die es aus offenen Quellen bezogen hat. Das Unternehmen hat auch dazu beigetragen, ein Unternehmen zu finanzieren, das kommerziellen Caml-Support namens OCamlPro und ein Caml-Labor an der Universität Cambridge anbietet.

"Wir tun alles, um diese Sprache voranzutreiben. Unsere 3 Millionen Codezeilen verschwinden nicht. Wir sind von dieser Sprache und der Community um sie herum abhängig", sagte Minsky. "Wenn Sie eine Minderheitstechnologie einsetzen und erfolgreich sind, sollten Sie bereit sein, später zu zahlen."

Joab Jackson berichtet über Unternehmenssoftware und allgemeine Technologie Der IDG News Service. Folgen Sie Joab auf Twitter unter @Joab_Jackson. Joabs E-Mail-Adresse lautet [email protected]

Treten Sie den Network World-Communitys auf Facebook und LinkedIn bei, um Kommentare zu Themen abzugeben, die im Vordergrund stehen.