Du kommer inte att tro vilket programmeringsspråk som detta Wall Street-företag använder

Ett Wall Street-företag hittade beräkningsframgångar inte på den traditionella vägen för företagets Java, utan på ett otydligt funktionellt programmeringsspråk som heter Caml, som erbjöd perfekt avvägning av skärm och läsbarhet.

Handelsföretaget Jane Street säger att Caml har gett det en kraftfull uppsättning verktyg för att bygga stora program som måste köras snabbt och utan fel.

"En enorm mängd av den dagliga programmeringen är fallanalyser. Att få dina program rätt är verkligen svårt, och alla verktyg du kan få från systemet för att hjälpa till att fånga fel är till hjälp", säger Yaron Minsky, chef för teknikgruppen på Jane Street, talar fredag ​​på QCon-utvecklarkonferensen i New York.

Jane Street är ett proprietärt handelsföretag som är världens största industriella användare av Caml och OCaml, den objektorienterade versionen av Caml.

Alla Jane Street's handels- och tilläggssystem använder Caml, med undantag för en del C-kod för lågnivåsystemgränssnitt och vissa Visual Basic-skriptdrivna analytiska kalkylblad. Sammantaget hanterar Caml-kod cirka 20 miljarder dollar i handel varje arbetsdag på Jane Street.

Företaget sysselsätter cirka 60 programmerare som antingen kände Caml från sina college dagar eller var tillräckligt smarta för att kunna lära sig det under utbildningen. Ytterligare 90 eller så icke-programmerare på företaget använder det också.

Jane Street användningen av Caml var nästan oavsiktlig, sa Minsky. Caml är en dialekt av ML-funktionellt programmeringsspråk, som används allmänt på universitet som ett sätt att undervisa i programmering men har ännu inte hittat utbredd framgång utanför akademin.

Minsky började på Jane Street medan han fortfarande gick på forskarskolan för ett decennium sedan. Eftersom han var bekant med Caml, komponerade han ett antal experimentella program för företaget som senare pressades in i produktion. Han blev också anställd så snart han slutade sin doktorsexamen. i distribuerade system.

På den tiden var Jane Street "mer handlare-tung än teknik-tung", sa Minsky. Det fanns mycket VB-kod på kalkylark, även om denna strategi inte skalade bra för företaget, med tanke på att det inte fanns något system för ändringshantering för att uppdatera koden på alla användarens datorer.

När företaget blev mer nedsänkt i världen av datahandel, Minsky använde Caml på vad som skulle bli företagets kärnsystem.

Jane Street tittade också på Java, som många handelsföretag använder, men hur Java-program för företag är konstruerade med sin dynamiska objektorienterade strategi kan göra dem svåra att förstå och resonera om, sa han.

Han noterade att en analytiker på företaget gillar att granska alla kod som körs på systemet, även om han inte är programmerare. Han bara sätter sig ner och arbetar igenom koden tills han förstår vad som händer. Caml kan vara lätt att förstå när du har syntaxen nere.

Caml erbjuder också några naturliga fördelar. Det är ett funktionellt språk, så det ger bra stöd för programmeringsfunktioner.

"Du kan skapa en funktion och skicka den till en annan funktion och låta den funktionen returnera en rad funktioner," sade Minsky. Funktioner är "klassvärden som kan överföras som allt annat." På många programmeringsspråk kan funktioner inte överföras som värden, eller det krävs manuellt arbete för att få dem passerade.

Datavärden är också oföränderliga i ett funktionellt programmeringsspråk. Detta betyder att program inte fungerar genom att "mutera celler i dina datastrukturer, utan genom att utvärdera uttryck," sade Minsky.

Caml är ett statiskt typat system, vilket innebär att det finns en uppsättning regler för varje datatyp som systemet hanterar. Det är vanligtvis lättare att fånga buggar på statiskt typade språk än med dynamiskt typade system som JavaScript eller Python. Detta snabbar på beräkningarna, eftersom programmet i förväg vet vilken typ av data det hanterar.

"Jag har haft mycket goda erfarenheter av programmering i den här stilen, där du använder typsystemet för att fånga konsekvenserna av dina förändringar," sa Minsky. "Du kan skriva dålig kod på vilket språk som helst, men om du vet vad du gör kan du använda typsystemet som en del av din design för att förbättra riktigheten i dina program."

Medan få människor kan ha Caml på sina CV har det varit lätt att hitta kvalitetsprogrammerare, sa Minsky. De som känner till Caml, eller funktionell programmering i allmänhet, är entusiastiska över programmeringsmodellen.

Första gången Minsky såg ut att anställa programmerare publicerade han ett meddelande på Caml-postlistan och hamnade tre personer från svaren.

Företaget anställer också programmerare som inte känner till någon Caml, resonera - framgångsrikt hittills - att om de är tillräckligt smarta kan de ta upp språket i utbildning.

Med tiden har företaget använt Caml för att bygga inte bara sitt kärnhandelssystem utan också ett samtidighetsbibliotek, ett sofistikerat publicerings- och prenumerationssystem och en samling systemautomatiseringsverktyg.

Sammantaget har företaget "ett stort antal system som underhålls av ett litet team", sa Minsky.

Det finns ett antal nackdelar med att använda detta dunkla språk, sa Minsky. En av de viktigaste är bristen på anständigt verktyg. Minsky tallar för de avancerade redigeringsverktygen, såsom autofullständig, som användare av populära IDE: er (integrerade utvecklingsmiljöer) tycker om.

För att förbättra saken har företaget dock utvecklat en hel del egna verktyg som det har öppnat. Företaget har också hjälpt till att finansiera ett företag för att erbjuda kommersiellt Caml-stöd, kallad OCamlPro, och ett Caml-laboratorium vid Cambridge University.

"Vi gör allt vi kan för att driva detta språk framåt. Våra 3 miljoner kodrader försvinner inte. Vi är beroende av detta språk och samhället runt det," sade Minsky. "När du använder en minoritetsteknologi och är framgångsrik bör du vara beredd att betala upp senare."

Joab Jackson täcker företags mjukvara och allmän teknik som innehåller nyheter för IDG News Service. Följ Joab på Twitter på @Joab_Jackson. Joabs e-postadress är [email protected]

Gå med i nätverkets världssamhällen på Facebook och LinkedIn för att kommentera ämnen som är övertygade.