No vas a creer qué lenguaje de programación usa esta firma de Wall Street

Una empresa de Wall Street encontró el éxito computacional no en el camino tradicional de Java empresarial, sino en un oscuro lenguaje de programación funcional llamado Caml, que ofrecía el equilibrio perfecto entre concisión y legibilidad.

La firma comercial Jane Street dice que Caml le ha dado un poderoso conjunto de herramientas para construir grandes programas que deben ejecutarse rápidamente y sin errores..

"Una gran cantidad de programación diaria es el análisis de casos. Hacer que sus programas sean correctos es realmente difícil, y cualquier herramienta que pueda obtener del sistema para ayudar a detectar errores es útil", dijo Yaron Minsky, jefe del grupo de tecnología de Jane Street, hablando el viernes en la conferencia de desarrolladores de QCon en Nueva York.

Jane Street es una empresa comercial propietaria que es el usuario industrial más grande del mundo de Caml y OCaml, la versión orientada a objetos de Caml.

Todos los sistemas comerciales y auxiliares de Jane Street usan Caml, con la excepción de algunos códigos C para interfaces de sistemas de bajo nivel y algunas hojas de cálculo de analistas que utilizan secuencias de comandos de Visual Basic. Con todo, el código de Caml maneja alrededor de US $ 20 mil millones en transacciones cada día hábil en Jane Street.

La compañía emplea a unos 60 programadores que conocían a Caml desde sus días universitarios o eran lo suficientemente inteligentes como para poder aprenderlo durante el entrenamiento. Otros 90 más o menos no programadores de la compañía lo usan también.

El uso de Caml por Jane Street fue casi accidental, dijo Minsky. Caml es un dialecto del lenguaje de programación funcional ML, que se usa ampliamente en las universidades como una forma de enseñar programación, pero aún no ha encontrado un éxito generalizado fuera de la academia..

Minsky comenzó en Jane Street mientras todavía estaba en la escuela de posgrado hace una década. Como estaba familiarizado con Caml, compuso una serie de programas experimentales para la compañía que luego se presionaron para la producción. Lo contrataron también, tan pronto como terminó su doctorado. en sistemas distribuidos.

En ese momento, Jane Street era "más comerciante que tecnológica", dijo Minsky. Había mucho código VB en las hojas de cálculo, aunque este enfoque no se adaptaba bien a la empresa, dado que no había un sistema de gestión de cambios para actualizar el código en todas las computadoras del usuario.

A medida que la compañía se sumergió más en el mundo del comercio de computadoras, Minsky implementó Caml en lo que se convertiría en los sistemas centrales de la compañía..

Jane Street también analizó Java, que utilizan muchas empresas comerciales, pero la forma en que se construyen los programas Java empresariales, con su enfoque dinámico orientado a objetos, puede hacer que sean difíciles de entender y razonar, dijo.

Señaló que a un analista de la compañía le gusta revisar cualquier código que se ejecute en el sistema, a pesar de que no es un programador. Simplemente se sienta y trabaja en el código hasta que comprende lo que está sucediendo. Caml puede ser fácil de entender, una vez que baje la sintaxis.

Caml también ofrece algunas ventajas naturales. Es un lenguaje funcional, por lo que proporciona un buen soporte para las funciones de programación..

"Puede crear una función y pasarla a otra función, y hacer que esa función devuelva una serie de funciones", dijo Minsky. Las funciones son "valores de clase que se pueden pasar como cualquier otra cosa". En muchos lenguajes de programación, las funciones no se pueden pasar como valores, o se necesita trabajo manual para que se pasen.

Además, los valores de datos son inmutables en un lenguaje de programación funcional. Esto significa que los programas funcionan no "mutando células dentro de las estructuras de datos, sino mediante la evaluación de expresiones", dijo Minsky.

Caml es un sistema de tipo estático, lo que significa que hay un conjunto de reglas sobre cada tipo de datos que maneja el sistema. Por lo general, es más fácil detectar errores en lenguajes tipados estáticamente que con sistemas tipados dinámicamente como JavaScript o Python. Esto acelera los cálculos, porque el programa sabe de antemano qué tipo de datos está manejando.

"He tenido experiencias profundamente buenas con la programación en este estilo, donde usas el sistema de tipos para ayudar a detectar las implicaciones de tus cambios", dijo Minsky. "Puede escribir código incorrecto en cualquier idioma, pero si sabe lo que está haciendo, puede usar el sistema de tipos como parte de su diseño para mejorar en gran medida la corrección de sus programas".

Aunque pocas personas pueden tener Caml en sus currículums, ha sido fácil encontrar programadores de calidad, dijo Minsky. Quienes conocen Caml, o la programación funcional en general, están entusiasmados con el modelo de programación..

La primera vez que Minsky buscó contratar programadores, publicó un aviso en la lista de correo de Caml y terminó contratando a tres personas de las respuestas..

La compañía también contrata a programadores que no conocen Caml, razonando, con éxito, hasta ahora, que si son lo suficientemente inteligentes pueden aprender el idioma en el entrenamiento..

Con el tiempo, la compañía ha utilizado Caml para construir no solo su sistema comercial principal, sino también una biblioteca de concurrencia, un sofisticado sistema de publicación y suscripción y una colección de herramientas de automatización del sistema..

En general, la compañía tiene "una gran cantidad de sistemas mantenidos por un pequeño equipo", dijo Minsky.

Minsky dijo que hay una serie de inconvenientes en el uso de este lenguaje oscuro. Uno de los principales es la falta de herramientas decentes. Pinos Minsky para las herramientas de edición avanzadas, como el autocompletado, que disfrutan los usuarios de IDE populares (entornos de desarrollo integrados).

Sin embargo, para mejorar las cosas, la compañía ha desarrollado muchas de sus propias herramientas, que ha sido de código abierto. La compañía también ha ayudado a financiar una compañía para ofrecer soporte comercial de Caml, llamado OCamlPro, y un laboratorio de Caml en la Universidad de Cambridge.

"Estamos haciendo todo lo posible para impulsar este lenguaje. Nuestros 3 millones de líneas de código no desaparecerán. Dependemos de este lenguaje y de la comunidad que lo rodea", dijo Minsky. "Cuando utiliza una tecnología minoritaria y tiene éxito, debe estar preparado para pagar más tarde".

Joab Jackson cubre las últimas noticias sobre software empresarial y tecnología general para El servicio de noticias de IDG. Sigue a Joab en Twitter en @Joab_Jackson. La dirección de correo electrónico de Joab es [email protected]

Únase a las comunidades de Network World en Facebook y LinkedIn para comentar temas que son lo más importante.