You won't believe what programming language this Wall Street firm uses

Joab Jackson

Caml offers some natural advantages, too. It's a functional language, so it provides good support for programming functions.

"You can create a function, and pass it to another function, and have that function return an array of functions," Minsky said. Functions are "class values that can be passed around like anything else." In many programming languages, functions cannot be passed around like values, or it takes manual work to have them passed around.

Also, data values are immutable in a functional programming language. This means programs work not by "mutating cells inside your data structures, but by the evaluation of expressions," Minsky said.

Caml is a statically typed system, meaning there is a set of rules about each data type that the system handles. It is usually easier to catch bugs in statically typed languages than with dynamically typed systems such as JavaScript or Python. This speeds computations, because the program knows ahead of time what kind of data it is handling.

"I've had profoundly good experiences with programming in this style, where you use the type system to help catch the implications of your changes," Minsky said. "You can write bad code in any language, but if you know what you are doing, you can use the type system as part of your design to greatly improve the correctness of your programs."

While few people may have Caml on their résumés, it has been easy to find quality programmers, Minsky said. Those who know Caml, or functional programming in general, are enthusiastic about the programming model.

The first time Minsky looked to hire programmers, he posted a notice on the Caml mailing list and ended up hiring three people from the responses.

The company also hires programmers who don't know any Caml, reasoning -- successfully, so far -- that if they are smart enough they can pick up the language in training.

Over time, the company has used Caml to build not only its core trading system, but also a concurrency library, a sophisticated publish-and-subscribe system, and a collection of system automation tools.

Overall, the company has "a huge number of systems maintained by a small team," Minsky said.

There are a number of drawbacks to using this obscure language, Minsky said. One of the major ones is lack of decent tooling. Minsky pines for the advanced editing tools, such as autocomplete, that users of popular IDEs (integrated development environments) enjoy.

To improve matters, though, the company has developed a lot of its own tools, which it has open sourced. The company has also helped to fund a company to offer commercial Caml support, called OCamlPro, and a Caml lab at Cambridge University.

Previous Page  1  2  3  Next Page