Je zult niet geloven welke programmeertaal deze firma in Wall Street gebruikt

Een bedrijf uit Wall Street vond rekenkundig succes niet op het traditionele pad van enterprise Java, maar in een obscure functionele programmeertaal genaamd Caml, die de perfecte afweging bood tussen beknoptheid en leesbaarheid.

Handelsbedrijf Jane Street zegt dat Caml het een krachtige set tools heeft gegeven voor het bouwen van grote programma's die snel en foutloos moeten worden uitgevoerd.

"Een groot deel van de dagelijkse programmering is case-analyse. Het is erg moeilijk om je programma's goed te krijgen, en elk hulpmiddel dat je van het systeem kunt krijgen om fouten op te sporen is nuttig", zegt Yaron Minsky, hoofd van de technologiegroep bij Jane Street, vrijdag sprekend op de QCon-ontwikkelaarsconferentie in New York.

Jane Street is een eigen handelsonderneming die 's werelds grootste industriële gebruiker is van Caml en OCaml, de objectgeoriënteerde versie van Caml.

Alle handels- en ondersteunende systemen van Jane Street gebruiken Caml, met uitzondering van enkele C-code voor systeeminterfaces op laag niveau en enkele Visual Basic-scripts die analist-spreadsheets aandrijven. Al met al verwerkt Caml-code elke werkdag ongeveer US $ 20 miljard aan transacties in Jane Street.

Het bedrijf heeft ongeveer 60 programmeurs in dienst die Caml kenden van hun studententijd of slim genoeg waren om het tijdens de training te leren. Nog eens ongeveer 90 niet-programmeurs bij het bedrijf gebruiken het ook.

Jane Street's gebruik van Caml was bijna toevallig, zei Minsky. Caml is een dialect van de ML functionele programmeertaal, die veel wordt gebruikt op universiteiten als een manier om les te geven in programmeren, maar nog geen wijdverbreid succes heeft gevonden buiten de academische wereld.

Minsky begon tien jaar geleden op Jane Street terwijl hij nog op de graduate school zat. Omdat hij bekend was met Caml, componeerde hij voor het bedrijf een aantal experimentele programma's die later in productie werden gedrukt. Hij werd ook aangenomen zodra hij zijn Ph.D. in gedistribueerde systemen.

In die tijd was Jane Street 'zwaarder voor de handelaar dan voor de technologie', zei Minsky. Er was veel VB-code op spreadsheets, hoewel deze aanpak niet goed schaalde voor het bedrijf, aangezien er geen systeem voor wijzigingsbeheer was om de code op alle computers van de gebruiker bij te werken.

Naarmate het bedrijf zich meer verdiepte in de wereld van computerhandel, zette Minsky Caml in op wat de kernsystemen van het bedrijf zouden worden.

Jane Street keek ook naar Java, dat door veel handelsbedrijven wordt gebruikt, maar de manier waarop Java-programma's voor bedrijven worden gebouwd, met hun dynamische objectgeoriënteerde benadering, kan ze moeilijk te begrijpen en te redeneren maken, zei hij.

Hij merkte op dat een analist bij het bedrijf elke code die op het systeem draait graag doorneemt, ook al is hij geen programmeur. Hij gaat gewoon zitten en werkt de code door totdat hij begrijpt wat er aan de hand is. Caml kan gemakkelijk te begrijpen zijn, zodra je de syntaxis hebt verlaagd.

Caml biedt ook enkele natuurlijke voordelen. Het is een functionele taal, dus het biedt goede ondersteuning voor programmeerfuncties.

'Je kunt een functie maken en deze aan een andere functie doorgeven, en die functie een reeks functies laten teruggeven', zei Minsky. Functies zijn 'klassewaarden die als iets anders kunnen worden doorgegeven'. In veel programmeertalen kunnen functies niet worden doorgegeven zoals waarden, of er is handmatig werk voor nodig om ze door te geven.

Ook zijn gegevenswaarden onveranderlijk in een functionele programmeertaal. Dit betekent dat programma's niet werken door "cellen in uw gegevensstructuren te muteren, maar door de evaluatie van uitdrukkingen", zei Minsky.

Caml is een statisch getypeerd systeem, wat betekent dat er een set regels is over elk gegevenstype dat het systeem afhandelt. Het is meestal gemakkelijker om bugs op te vangen in statisch getypeerde talen dan met dynamisch getypeerde systemen zoals JavaScript of Python. Dit versnelt de berekeningen, omdat het programma van tevoren weet wat voor soort gegevens het verwerkt.

"Ik heb zeer goede ervaringen met programmeren in deze stijl, waarbij je het typesysteem gebruikt om de implicaties van je veranderingen te begrijpen," zei Minsky. "U kunt in elke taal slechte code schrijven, maar als u weet wat u doet, kunt u het typensysteem gebruiken als onderdeel van uw ontwerp om de correctheid van uw programma's aanzienlijk te verbeteren."

Hoewel maar weinig mensen Caml op hun cv hebben staan, was het gemakkelijk om kwaliteitsprogrammeurs te vinden, zei Minsky. Degenen die Caml kennen, of functionele programmering in het algemeen, zijn enthousiast over het programmeermodel.

De eerste keer dat Minsky op zoek was naar programmeurs, plaatste hij een bericht op de Caml-mailinglijst en huurde uiteindelijk drie mensen in voor de reacties.

Het bedrijf neemt ook programmeurs in dienst die geen enkele Caml kennen, redenerend - tot dusver met succes - dat als ze slim genoeg zijn, ze de taal in opleiding kunnen oppikken.

In de loop van de tijd heeft het bedrijf Caml gebruikt om niet alleen zijn belangrijkste handelssysteem te bouwen, maar ook een gelijktijdigheidsbibliotheek, een geavanceerd systeem voor publiceren en abonneren en een verzameling hulpprogramma's voor systeemautomatisering.

Over het algemeen heeft het bedrijf "een groot aantal systemen die door een klein team worden onderhouden", zei Minsky.

Er zijn een aantal nadelen aan het gebruik van deze obscure taal, zei Minsky. Een van de belangrijkste is het gebrek aan degelijke tooling. Minsky-dennen voor de geavanceerde bewerkingstools, zoals automatisch aanvullen, waar gebruikers van populaire IDE's (geïntegreerde ontwikkelomgevingen) van genieten.

Om de zaken echter te verbeteren, heeft het bedrijf veel van zijn eigen tools ontwikkeld, die het open source heeft gebruikt. Het bedrijf heeft ook bijgedragen aan de financiering van een bedrijf voor het aanbieden van commerciële Caml-ondersteuning, OCamlPro genaamd, en een Caml-lab aan de universiteit van Cambridge..

"We doen er alles aan om deze taal vooruit te helpen. Onze 3 miljoen regels code verdwijnen niet. We zijn afhankelijk van deze taal en de gemeenschap eromheen," zei Minsky. 'Als je een technologie van een minderheid gebruikt en succesvol bent, moet je bereid zijn om later te betalen.'

Joab Jackson dekt bedrijfssoftware en algemeen technologisch breaking news voor De IDG News Service. Volg Joab op Twitter op @Joab_Jackson. Het e-mailadres van Joab is [email protected]

Word lid van de Network World-gemeenschappen op Facebook en LinkedIn om commentaar te geven op onderwerpen die voorop staan.