For the past 8 weeks in my graduate operating systems course, we’ve been dealing with the issues of inter-process communication in massively parallel situations. For development of such applications, we’ve been using an operating system called Inferno (of Plan 9 origins) which has a built in language called Limbo. Limbo is a great language for learning network programming and multi-threaded programming. It has communication channels which are typed, so you can pass whatever you want along them without pre-processing the data. However, you still have to manage all of those channels. It also has a nice C + Pascal style syntax:
message := “Hello World!”;
sys->print(“%s\n”, message);
While discussing languages that support massive concurrency with my professor, the subject of functional programming came up. I mentioned to him that I wanted to learn a functional language, but wasn’t sure where to start. He suggested Erlang due to it’s easy support for massive concurrency. My question to my readers (if I have any left), is do you have any experience with programming multi-threaded and/or distributed programs with Erlang? Is it worth the time to learn, or would my efforts be better off elsewhere?