Distributing camels
One criticism often thrown at the OCaml language is its lack of support for true threads. Mind you, there are thread libraries of various kinds for OCaml (Ocsigen uses Lwt cooperative threads, which I am now getting familiar with). For the programmer, you can use threads in OCaml in pretty much the same way you would do in C. The problem is that due to the nature of the garbage collector, these threads are not really concurrent, in the sense that only one of them can be running at any one time, even if multiple CPU's are present. Therefore, a multi-threaded OCaml programme cannot take advantage of modern multicore machines. Though at first sight this seems like a huge shortcoming in the language, in practice there are other patterns of concurrent programming that can be used by OCaml programmes. Good old forking into multiple processes is one of them; parallel programming using MPI is another. The list goes on.
Anyway, true to its academic roots, the OCaml community is looking for a distributed programming paradigm based on solid theoretical foundations. The latest result is JoCaml (yes, it's very likely that the name is a pun on Joe Camel), a language largely based on OCaml (the authors claim about 99% of source code compatibility), but integrating the principles of Join-Calculus. It's highly theoretical stuff, but interesting nonetheless (or because!).

Unfortunately, Join Calculus article on Wikipedia is rather terse and does not provide a good enough overview of the calculus.
Reply to this