Non crederai al linguaggio di programmazione utilizzato da questa azienda di Wall Street

Un'azienda di Wall Street ha riscontrato un successo computazionale non sul percorso tradizionale dell'impresa Java, ma in un oscuro linguaggio di programmazione funzionale chiamato Caml, che offriva il perfetto compromesso tra concisione e leggibilità.

La società commerciale Jane Street afferma che Caml gli ha fornito un potente set di strumenti per la creazione di programmi di grandi dimensioni che devono essere eseguiti rapidamente e senza errori.

"Un'enorme quantità di programmazione quotidiana è l'analisi dei casi. Ottenere i programmi giusti è davvero difficile e qualsiasi strumento che si può ottenere dal sistema per aiutare a rilevare gli errori è utile", ha affermato Yaron Minsky, capo del gruppo tecnologico di Jane Street, parlando venerdì alla conferenza degli sviluppatori QCon a New York.

Jane Street è una società commerciale proprietaria che è il più grande utente industriale al mondo di Caml e OCaml, la versione orientata agli oggetti di Caml.

Tutti i sistemi commerciali e accessori di Jane Street utilizzano Caml, ad eccezione di alcuni codici C per interfacce di sistema di basso livello e alcuni fogli di calcolo per gli analisti di Visual Basic. Tutto sommato, il codice Caml gestisce circa 20 miliardi di dollari di transazioni ogni giorno lavorativo in Jane Street.

L'azienda impiega circa 60 programmatori che o conoscevano Caml dai tempi del college o erano abbastanza intelligenti da poterlo imparare durante l'allenamento. Anche altri 90 non programmatori dell'azienda lo usano.

L'uso di Caml da parte di Jane Street fu quasi accidentale, disse Minsky. Caml è un dialetto del linguaggio di programmazione funzionale ML, che è ampiamente usato nelle università come un modo per insegnare la programmazione ma non ha ancora trovato un successo diffuso al di fuori del mondo accademico.

Minsky iniziò a Jane Street mentre era ancora alla scuola di specializzazione dieci anni fa. Da quando aveva familiarità con Caml, ha composto una serie di programmi sperimentali per l'azienda che sono stati successivamente messi in produzione. Anche lui è stato assunto, non appena ha terminato il suo dottorato di ricerca. nei sistemi distribuiti.

All'epoca, Jane Street era "più pesante di un commerciante che di tecnologia", ha detto Minsky. C'era un sacco di codice VB sui fogli di calcolo, sebbene questo approccio non si adattasse bene all'azienda, dato che non esisteva un sistema per la gestione delle modifiche per aggiornare il codice su tutti i computer dell'utente.

Man mano che la società si immergeva maggiormente nel mondo del trading di computer, Minsky schierò Caml su quelli che sarebbero diventati i sistemi centrali dell'azienda.

Jane Street ha anche esaminato Java, utilizzato da molte società commerciali, ma il modo in cui sono costruiti i programmi Java aziendali, con il loro approccio dinamico orientato agli oggetti, può renderli difficili da capire e ragionare,.

Ha notato che a un analista dell'azienda piace rivedere qualsiasi codice eseguito sul sistema, anche se non è un programmatore. Si siede e lavora attraverso il codice fino a quando non capisce cosa sta succedendo. Caml può essere facile da capire, una volta abbassata la sintassi.

Caml offre anche alcuni vantaggi naturali. È un linguaggio funzionale, quindi fornisce un buon supporto per le funzioni di programmazione.

"È possibile creare una funzione e passarla a un'altra funzione e fare in modo che quella funzione restituisca una matrice di funzioni", ha affermato Minsky. Le funzioni sono "valori di classe che possono essere passati come qualsiasi altra cosa". In molti linguaggi di programmazione, le funzioni non possono essere passate come valori, o ci vuole lavoro manuale per farle passare.

Inoltre, i valori dei dati sono immutabili in un linguaggio di programmazione funzionale. Ciò significa che i programmi funzionano non "mutando le cellule all'interno delle strutture dei dati, ma valutando le espressioni", ha affermato Minsky.

Caml è un sistema tipicamente statico, il che significa che esiste un insieme di regole su ciascun tipo di dati che il sistema gestisce. Di solito è più facile rilevare i bug nei linguaggi tipizzati staticamente che nei sistemi tipizzati dinamicamente come JavaScript o Python. Questo accelera i calcoli, perché il programma conosce in anticipo quale tipo di dati sta gestendo.

"Ho avuto esperienze profondamente positive con la programmazione in questo stile, in cui usi il sistema dei tipi per aiutarti a cogliere le implicazioni delle tue modifiche", ha affermato Minsky. "Puoi scrivere codice errato in qualsiasi lingua, ma se sai cosa stai facendo, puoi usare il sistema di tipi come parte del tuo progetto per migliorare notevolmente la correttezza dei tuoi programmi."

Mentre poche persone possono avere Caml nei loro curriculum, è stato facile trovare programmatori di qualità, ha affermato Minsky. Chi conosce Caml, o la programmazione funzionale in generale, è entusiasta del modello di programmazione.

La prima volta che Minsky ha cercato di assumere programmatori, ha pubblicato un avviso sulla mailing list di Caml e ha finito per assumere tre persone dalle risposte.

La compagnia assume anche programmatori che non conoscono alcun Caml, ragionando - con successo, finora - che se sono abbastanza intelligenti possono imparare la lingua in allenamento.

Nel tempo, la società ha utilizzato Caml per costruire non solo il suo sistema di trading principale, ma anche una libreria di concorrenza, un sofisticato sistema di pubblicazione e sottoscrizione e una raccolta di strumenti di automazione del sistema.

Nel complesso, la società ha "un numero enorme di sistemi gestiti da un piccolo team", ha detto Minsky.

Ci sono una serie di inconvenienti nell'uso di questo oscuro linguaggio, ha detto Minsky. Uno dei principali è la mancanza di strumenti decenti. Pini Minsky per gli strumenti di modifica avanzati, come il completamento automatico, di cui godono gli utenti degli IDE più diffusi (ambienti di sviluppo integrati).

Per migliorare le cose, tuttavia, la società ha sviluppato molti strumenti propri, che ha ottenuto da fonti aperte. La società ha anche contribuito a finanziare una società per offrire supporto commerciale Caml, chiamato OCamlPro, e un laboratorio Caml presso l'Università di Cambridge.

"Stiamo facendo tutto il possibile per far avanzare questa lingua. I nostri 3 milioni di righe di codice non stanno andando via. Dipendiamo da questa lingua e dalla comunità circostante", ha affermato Minsky. "Quando usi una tecnologia di minoranza e hai successo, dovresti essere pronto a pagare in seguito".

Joab Jackson copre il software aziendale e le ultime notizie sulla tecnologia generale Il servizio notizie IDG. Segui Joab su Twitter all'indirizzo @Joab_Jackson. L'indirizzo e-mail di Joab è [email protected]

Unisciti alle community di Network World su Facebook e LinkedIn per commentare argomenti che sono importanti.