Friday, September 21, 2012

Erlang, pros and cons

Erlang programming language was controversial since it was created in Ericsson,
as super-reliable platform for telephone exchange devices.
With syntax of Prolog, and unique semantics similar to Lisp,
it was a puzzle for everybody. Yet, it has proven to be so reliable,
that they could not even measure downtime. No downtime for years.

There is another side-effect of Erlang's simple functional design: it is very optimal
for parallel processing. So, the language is recently re-discovered, and used in some
prominent projects, including CouchDB.

For example, a "process" in Erlang takes about KB of memory,
and a "thread" in .NET takes about MB of memory. And Erlang process provides insulation of data,
and .NET (or Java) thread does not. Huge difference.

After initial success, the other side of Erlang become evident: it is not very efficient
for common tasks such as processing text. For document-oriented database that could be a problem.
In particular when competition tools, usually written in C/C++ are more efficient.

So, CouchDB creator is on his new quest, to port portions of the system to C/C++,
and keep Erlang for what is it good for.

This presentation provides nice overview of pluses and minuses of Erlang.
The conclusion is that "strange syntax" is main reason for relatively small adoption,
and consequently lack of investment (and results) in performance optimization.

Erlang, the Language from the Future?
Presented by Damien Katz on Aug 28, 2012

Damien Katz Abandons Apache CouchDB, Continues with Couchbase Server

What Sucks About Erlang by DAMIEN KATZ

On the other side, some people try to take "right tool for the job", and are attempting to use
Erlang for coordination and monitoring other tools.

podcast: Alex Robson about polyglot programming @ .NET rocks

In Erlang, "failure" is "normal" and planned for. Each process is designed to detect and handle
failure of monitored processes, and "tree" of processes is self-healing, where failed processes are detected and replaced automatically. Since there is no shared state, only messaging, it is not hard to scale system, and make it reliable...

.NET 4.5 Versioning and Multi-Targeting

.NET Versioning and Multi-Targeting - .NET 4.5 is an in-place upgrade to .NET 4.0 - Scott Hanselman

Making sure that correct version of .NET is installed on Windows is a constant struggle...
Even on Windows 8 (Desktop) this is not easy for .NET apps...

Installing the .NET Framework 4.5

.NET 4.5 is an in-place replacement for .NET 4.0
When you install .NET 4.5 your .NET 4.0 assemblies in the \Windows\.NET Framework\V4.0.30319 are overwritten with a new set of assemblies. You end up with overwritten assemblies as well as a bunch of new ones

Windows Azure Web Sites - ScottGu's Blog

Announcing: Great Improvements to Windows Azure Web Sites - ScottGu's Blog