Du vil ikke tro, hvilket programmeringssprog denne Wall Street-firma bruger

Et Wall Street-firma fandt computermæssig succes ikke på den traditionelle sti for Java-virksomheden, men på et uklart funktionelt programmeringssprog kaldet Caml, som tilbød den perfekte afveksling af enhed og læsbarhed.

Handelsfirma Jane Street siger, at Caml har givet det et kraftfuldt sæt værktøjer til at bygge store programmer, der skal køre hurtigt og uden fejl.

"En enorm mængde af den daglige programmering er sagsanalyse. At få dine programmer rigtigt er virkelig svært, og ethvert værktøj, du kan få fra systemet til at hjælpe med at fange fejl, er nyttigt," sagde Yaron Minsky, leder af teknologigruppen hos Jane Street, taler fredag ​​på QCon-udviklerkonferencen i New York.

Jane Street er et proprietært handelsfirma, der er verdens største industrielle bruger af Caml og OCaml, den objektorienterede version af Caml.

Alle Jane Street's handels- og tilknyttede systemer bruger Caml, med undtagelse af nogle C-koder til systemgrænseflader på lavt niveau og nogle Visual Basic-scriptforsyningsanalytiske regneark. Alt i alt håndterer Caml-kode ca. 20 milliarder dollars handel hver arbejdsdag på Jane Street.

Virksomheden beskæftiger omkring 60 programmører, som enten kendte Caml fra deres college dage eller var smarte nok til at kunne lære det under træning. Yderligere 90 eller deromkring ikke-programmerere hos virksomheden bruger det også.

Jane Street brug af Caml var næsten tilfældig, sagde Minsky. Caml er en dialekt af det ML-funktionelle programmeringssprog, der er vidt brugt på universiteter som en måde at undervise i programmering på, men endnu ikke har fundet udbredt succes uden for akademiet.

Minsky startede på Jane Street, mens han stadig var på kandidatskolen for et årti siden. Da han kendte Caml, komponerede han en række eksperimentelle programmer for virksomheden, der senere blev presset til produktion. Han blev også ansat, så snart han var færdig med sin ph.d. i distribuerede systemer.

På det tidspunkt var Jane Street "mere erhvervs-tung end teknologitung," sagde Minsky. Der var en masse VB-kode på regneark, skønt denne fremgangsmåde ikke skalerer godt for virksomheden, da der ikke var noget system til ændringshåndtering til at opdatere koden på tværs af alle brugerens computere.

Efterhånden som virksomheden blev mere nedsænket i verdenen af ​​computerhandel, indsatte Minsky Caml på det, der ville blive virksomhedens kernesystemer.

Jane Street kiggede også på Java, som mange handelsfirmaer bruger, men den måde, virksomheds-Java-programmer konstrueres med deres dynamiske objektorienterede tilgang, kan gøre dem vanskelige at forstå og resonere over, sagde han.

Han bemærkede, at en analytiker hos virksomheden kan lide at gennemgå enhver kode, der kører på systemet, selvom han ikke er en programmør. Han sætter sig bare ned og arbejder gennem koden, indtil han forstår, hvad der foregår. Caml kan være let at forstå, når du først har syntaksen nede.

Caml tilbyder også nogle naturlige fordele. Det er et funktionelt sprog, så det giver god støtte til programmeringsfunktioner.

"Du kan oprette en funktion og videregive den til en anden funktion og få den funktion til at returnere en række funktioner," sagde Minsky. Funktioner er "klasseværdier, der kan videregives som noget andet." I mange programmeringssprog kan funktioner ikke videregives som værdier, eller det kræver manuelt arbejde at få dem passeret.

Dataværdier er også uforanderlige i et funktionelt programmeringssprog. Dette betyder, at programmer fungerer ikke ved at "mutere celler inde i dine datastrukturer, men ved evaluering af udtryk," sagde Minsky.

Caml er et statisk typisk system, hvilket betyder, at der er et sæt regler for hver datatype, som systemet håndterer. Det er normalt lettere at fange bugs på statisk maskinskrevne sprog end med dynamisk indtastede systemer som JavaScript eller Python. Dette fremskynder beregningerne, fordi programmet på forhånd ved, hvilken slags data det håndterer.

"Jeg har haft meget gode erfaringer med programmering i denne stil, hvor du bruger typesystemet til at hjælpe med at få konsekvenserne af dine ændringer," sagde Minsky. "Du kan skrive dårlig kode på ethvert sprog, men hvis du ved, hvad du laver, kan du bruge typesystemet som en del af dit design til at forbedre rigtigheden af ​​dine programmer i høj grad."

Mens få mennesker måske har Caml på deres cv, har det været let at finde kvalitetsprogrammører, sagde Minsky. De, der kender Caml, eller funktionel programmering generelt, er begejstrede for programmeringsmodellen.

Første gang Minsky så ud til at ansætte programmører, offentliggjorde han en meddelelse på Caml-postlisten og endte med at ansætte tre personer fra svarene.

Virksomheden ansætter også programmerere, der ikke kender nogen Caml, og resonnerer - med succes indtil videre - at hvis de er smarte nok, kan de hente sproget i træning.

Med tiden har virksomheden brugt Caml til at opbygge ikke kun sit kernehandelssystem, men også et samtidighedsbibliotek, et sofistikeret publicerings- og abonnementssystem og en samling af systemautomatiseringsværktøjer.

Samlet set har virksomheden "et stort antal systemer, der vedligeholdes af et lille team," sagde Minsky.

Der er en række ulemper ved at bruge dette uklare sprog, sagde Minsky. En af de største er manglen på anstændigt værktøj. Minsky fyrretræer til de avancerede redigeringsværktøjer, såsom autofuldførelse, som brugere af populære IDE'er (integrerede udviklingsmiljøer) nyder.

For at forbedre sagen har virksomheden dog udviklet en masse af sine egne værktøjer, som det har åbnet. Virksomheden har også hjulpet med at finansiere en virksomhed til at tilbyde kommerciel Caml-support, kaldet OCamlPro, og et Caml-laboratorium ved Cambridge University.

"Vi gør alt for at skubbe dette sprog frem. Vores 3 millioner kodelinjer forsvinder ikke. Vi er afhængige af dette sprog og samfundet omkring det," sagde Minsky. "Når du bruger en minoritetsteknologi og har succes, skal du være parat til at betale op senere."

Joab Jackson dækker virksomhedssoftware og generelle teknologibrydende nyheder til IDG News Service. Følg Joab på Twitter på @Joab_Jackson. Joabs e-mail-adresse er [email protected]

Deltag i Network World-samfundene på Facebook og LinkedIn for at kommentere emner, der er øverste af sindet.