Vous ne croirez pas quel langage de programmation cette entreprise de Wall Street utilise

Une entreprise de Wall Street a trouvé le succès informatique non pas sur le chemin traditionnel de Java d'entreprise, mais dans un langage de programmation fonctionnel obscur appelé Caml, qui offrait le compromis parfait entre concision et lisibilité.

La société de négoce Jane Street affirme que Caml lui a donné un puissant ensemble d'outils pour créer de grands programmes qui doivent s'exécuter rapidement et sans erreurs.

"Une énorme quantité de programmation au jour le jour est une analyse de cas. Il est très difficile de trouver le bon programme, et tout outil que vous pouvez obtenir du système pour aider à détecter les erreurs est utile", a déclaré Yaron Minsky, chef du groupe technologique chez Jane Street, s'exprimant vendredi à la conférence des développeurs QCon à New York.

Jane Street est une société commerciale propriétaire qui est le plus grand utilisateur industriel au monde de Caml et OCaml, la version orientée objet de Caml.

Tous les systèmes commerciaux et auxiliaires de Jane Street utilisent Caml, à l'exception de certains codes C pour les interfaces système de bas niveau et de certaines feuilles de calcul d'analyste alimentant les scripts Visual Basic. Dans l'ensemble, le code Caml gère environ 20 milliards de dollars de transactions chaque jour ouvrable à Jane Street.

La société emploie une soixantaine de programmeurs qui connaissaient Caml dès leurs études universitaires ou étaient suffisamment intelligents pour pouvoir l'apprendre pendant la formation. Environ 90 autres non-programmeurs de l'entreprise l'utilisent également.

L'utilisation de Caml par Jane Street était presque accidentelle, a déclaré Minsky. Caml est un dialecte du langage de programmation fonctionnel ML, qui est largement utilisé dans les universités comme moyen d'enseigner la programmation, mais n'a pas encore rencontré un succès généralisé en dehors du milieu universitaire.

Minsky a commencé à Jane Street alors qu'il était encore aux études supérieures il y a une décennie. Comme il connaissait Caml, il a composé un certain nombre de programmes expérimentaux pour l'entreprise qui ont ensuite été mis en production. Il a également été embauché dès qu'il a terminé son doctorat. dans les systèmes distribués.

À l'époque, Jane Street était «plus commerçante que technologique», a déclaré Minsky. Il y avait beaucoup de code VB sur les feuilles de calcul, bien que cette approche n'ait pas bien évolué pour l'entreprise, étant donné qu'il n'y avait pas de système de gestion des changements pour mettre à jour le code sur tous les ordinateurs de l'utilisateur.

Alors que la société devenait de plus en plus plongée dans le monde du trading informatique, Minsky a déployé Caml sur ce qui allait devenir les principaux systèmes de la société..

Jane Street a également examiné Java, que de nombreuses sociétés commerciales utilisent, mais la façon dont les programmes Java d'entreprise sont construits, avec leur approche dynamique orientée objet, peut les rendre difficiles à comprendre et à raisonner, a-t-il déclaré.

Il a noté qu'un analyste de l'entreprise aime revoir tout code qui s'exécute sur le système, même s'il n'est pas programmeur. Il s'assoit et travaille sur le code jusqu'à ce qu'il comprenne ce qui se passe. Caml peut être facile à comprendre, une fois que vous obtenez la syntaxe.

Caml offre également des avantages naturels. C'est un langage fonctionnel, donc il fournit un bon support pour les fonctions de programmation.

"Vous pouvez créer une fonction, la transmettre à une autre fonction et demander à cette fonction de renvoyer un tableau de fonctions", a déclaré Minsky. Les fonctions sont des "valeurs de classe qui peuvent être transmises comme toute autre chose". Dans de nombreux langages de programmation, les fonctions ne peuvent pas être transmises comme des valeurs, ou il faut un travail manuel pour les faire circuler.

De plus, les valeurs des données sont immuables dans un langage de programmation fonctionnel. Cela signifie que les programmes ne fonctionnent pas en "mutant les cellules à l'intérieur de vos structures de données, mais en évaluant les expressions", a déclaré Minsky..

Caml est un système typé statiquement, ce qui signifie qu'il existe un ensemble de règles concernant chaque type de données que le système gère. Il est généralement plus facile d'attraper des bogues dans des langages typés statiquement qu'avec des systèmes typés dynamiquement tels que JavaScript ou Python. Cela accélère les calculs, car le programme sait à l'avance quel type de données il gère..

"J'ai eu de très bonnes expériences avec la programmation dans ce style, où vous utilisez le système de type pour aider à saisir les implications de vos changements", a déclaré Minsky. "Vous pouvez écrire du mauvais code dans n'importe quelle langue, mais si vous savez ce que vous faites, vous pouvez utiliser le système de type dans le cadre de votre conception pour améliorer considérablement l'exactitude de vos programmes."

Bien que peu de gens aient Caml dans leur curriculum vitae, il a été facile de trouver des programmeurs de qualité, a déclaré Minsky. Ceux qui connaissent Caml, ou la programmation fonctionnelle en général, sont passionnés par le modèle de programmation.

La première fois que Minsky a cherché à embaucher des programmeurs, il a publié un avis sur la liste de diffusion Caml et a finalement embauché trois personnes à partir des réponses..

L'entreprise embauche également des programmeurs qui ne connaissent pas Caml, raisonnant - avec succès, jusqu'à présent - que s'ils sont assez intelligents, ils peuvent choisir la langue lors de la formation..

Au fil du temps, la société a utilisé Caml pour créer non seulement son système de trading principal, mais également une bibliothèque de concurrence, un système sophistiqué de publication et d'abonnement et une collection d'outils d'automatisation du système.

Dans l'ensemble, l'entreprise possède "un grand nombre de systèmes maintenus par une petite équipe", a déclaré Minsky..

Il y a un certain nombre d'inconvénients à utiliser ce langage obscur, a déclaré Minsky. L'un des plus importants est le manque d'outils décents. Minsky pines pour les outils d'édition avancés, tels que la saisie semi-automatique, que les utilisateurs d'IDE populaires (environnements de développement intégrés) apprécient.

Pour améliorer les choses, cependant, la société a développé un grand nombre de ses propres outils, qu'elle a open source. La société a également aidé à financer une entreprise pour offrir un support commercial Caml, appelé OCamlPro, et un laboratoire Caml à l'Université de Cambridge.

"Nous faisons tout notre possible pour faire avancer ce langage. Nos 3 millions de lignes de code ne vont pas disparaître. Nous dépendons de ce langage et de la communauté qui l'entoure", a déclaré Minsky. "Lorsque vous utilisez une technologie minoritaire et que vous réussissez, vous devez être prêt à payer plus tard."

Joab Jackson couvre les logiciels d'entreprise et les dernières nouvelles technologiques pour Le service IDG News. Suivez Joab sur Twitter à @Joab_Jackson. L'adresse e-mail de Joab est [email protected]

Rejoignez les communautés Network World sur Facebook et LinkedIn pour commenter des sujets qui vous tiennent à cœur.