I usually go at work by bicycle and to spend my cycling time efficiently I listen to the podcasts of se-radio. I have this idea of sharing my thoughts about the things being said in the podcasts but I'm not sure if it is going to work well. But anyway...
Today's podcast was about Erlang. Erlang is a functional language which started as a Prolog derivative focusing on solving fault tolerance problems in telecommunications systems. Compared to its initial version, Erlang has evolved a lot. The performance is much better, it uses a dedicated virtual machine, and offers a framework (OTP) for developing real-time fault tolerant systems.
Erlang focuses on fault tolerance using lightweight processes that communicate with each other using message passing primitives. Each process is independent from the rest, like processes in operating systems. There is no shared memory or threads, so no need for deadlock detection/avoidance techniques, mutexes, conditional variables, and the like.
Another notable feature is the "let it crash" philosophy. Since processes are independent, when a process crashes the rest remain unaffected. This gives the option of using special processes for monitoring the faulty processes. It's even possible to debug and replace faults in runtime.
Now that single processors have reached their limits, Erlang is a great option for making efficient use of multi-core CPUs without messing with threads and hard to debug deadlocks.
Obviously the Prolog-like syntax of Erlang is keeping some programmers away, but that's not a serious reason for not giving it a try.
Today's podcast was about Erlang. Erlang is a functional language which started as a Prolog derivative focusing on solving fault tolerance problems in telecommunications systems. Compared to its initial version, Erlang has evolved a lot. The performance is much better, it uses a dedicated virtual machine, and offers a framework (OTP) for developing real-time fault tolerant systems.
Erlang focuses on fault tolerance using lightweight processes that communicate with each other using message passing primitives. Each process is independent from the rest, like processes in operating systems. There is no shared memory or threads, so no need for deadlock detection/avoidance techniques, mutexes, conditional variables, and the like.
Another notable feature is the "let it crash" philosophy. Since processes are independent, when a process crashes the rest remain unaffected. This gives the option of using special processes for monitoring the faulty processes. It's even possible to debug and replace faults in runtime.
Now that single processors have reached their limits, Erlang is a great option for making efficient use of multi-core CPUs without messing with threads and hard to debug deadlocks.
Obviously the Prolog-like syntax of Erlang is keeping some programmers away, but that's not a serious reason for not giving it a try.