gga wrote:
So, I have to ask. There's already some good and fast multithreading
languages out there (Lua, for example), and concurrency in the form of
light threads is pretty much available in most popular languages
(python, ruby, lua, java, etc). TCL and Lua's interpreter state,
allows easily doing somewhat akin to Erlang's processes, if I
understand correctly. So, what is it that makes Erlang special in
this aspect?
My current (perhaps wrong) impression is this: Erlang's processes are
more akin to TCL's or Lua's interpreter state, so each thread does not
share any info with another by default. To implement sharing data
around, Erlang uses a built-in queue mechanism among its processes
which is very simple and elegant and similar to ruby's case statement
(which is good and smart -- no need to create semaphores or yields
everywhere like you need with other languages), but I'm not quite sure
if that could be end up being somewhat limiting also if you need to
share a lot of data across. I'm also not clear how easy (or
possible?) it is to interface Erlang with C or C++, for example.
1. What makes Erlang special is that, unlike Python, Ruby and Lua, there are a number of *major* industrial-strength commercial projects implemented in Erlang -- integrated hardware/software projects to boot. Concurrency is integral to the language and the core reasons these applications work. Now there *are* major industrial strength applications written in Java, and I think you can make the same claim for Perl and PHP, but whether they *depend* on concurrency for their robustness, as Erlang applications typically do, is quite another story. Of the listed languages, I think only Erlang and Java can seriously be considered as *replacements" for C and C++ for building robust, large-scale concurrency-dependent applications.
2. Yes, there is a mechanism for interfacing Erlang to C/C++. Most likely it's platform-dependent, and I don't know enough about Erlang yet to know how it works. That's why I bought the book. 
P.S. For what it is worth, in the industry I work on, we have already
been briefly exposed to Erlang, thanks to the 3d package wings3d. The
software, when it showed up, was pretty revolutionary (other than
Mirai --written partly in lisp-- nobody had tried to do a 3d tool with
a scripting language and succeeded), but it also showed (to me) some
flaws with Erlang (slow execution, hard for people to pick it up,
problematic to implement and replace complex data structures and some
problems with backwards compatibility -- my ubuntu box currently
segfaults with wings3d). So, I'll admit I already have some bias
against the language, but maybe I have missed some of its beauty and
wings3d might not be the best example of Erlang code out there.
Well, in *my* industry there's absolutely nothing written in Erlang or Ruby or Lua or Java or Lisp or Java. We pretty much stick with C and Perl, with a bit of C++ and Visual Basic, and of course Python and Bash in the Linux world. This is why I spend my own time learning stuff like Ruby, Gentoo Linux, Erlang and wings3d. 
I can't help you with the segfaults on Ubuntu, but I will install Erlang and wings on my Gentoo box -- they're in Portage -- and if the demos segfault, I'll file bugs on Gentoo :). Helluva hobby, ain't it? 
···
--
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
http://borasky-research.blogspot.com/
If God had meant for carrots to be eaten cooked, He would have given rabbits fire.