[ADV] Erlang book is in beta

I love Ruby--I've done all my serious (and most of my not-so-serious) work in Ruby since 2000.

But that doesn't mean that I think it's the only solution--the universal language. There are always going to be areas where other tools excel.

One of those areas is concurrent programming. As the world moves to multi-core processors, and as we start to write applications distributed across intra- and internets, we need to find better ways to exploit all this extra power. If you've ever tried to write concurrent programs in Java, or even Ruby, you know the challenges.

Erlang is designed from the ground up to help programmers create highly concurrently (read thousands or processes), highly reliable (read 99.99999% uptime) applications. It's a real world language--it is used to write telephone switches, banking applications, trading systems...you name it.

I like it for that reason. I also like it because it's different--very different. It makes me think about problems in a totally different way.

We were lucky to get Joe Armstrong, one of the inventors of Erlang, to write our latest beta book, Programming Erlang.

The book isn't being officially announced until next week, but I thought the Ruby community might appreciate an early look.

      http://www.pragmaticprogrammer.com/titles/jaerlang/

Cheers

Dave

Dave Thomas wrote:

I love Ruby--I've done all my serious (and most of my not-so-serious) work in Ruby since 2000.

But that doesn't mean that I think it's the only solution--the universal language. There are always going to be areas where other tools excel.

One of those areas is concurrent programming. As the world moves to multi-core processors, and as we start to write applications distributed across intra- and internets, we need to find better ways to exploit all this extra power. If you've ever tried to write concurrent programs in Java, or even Ruby, you know the challenges.

Erlang is designed from the ground up to help programmers create highly concurrently (read thousands or processes), highly reliable (read 99.99999% uptime) applications. It's a real world language--it is used to write telephone switches, banking applications, trading systems...you name it.

I like it for that reason. I also like it because it's different--very different. It makes me think about problems in a totally different way.

We were lucky to get Joe Armstrong, one of the inventors of Erlang, to write our latest beta book, Programming Erlang.

Sweet. Any plans for a Haskell book?

···

--
James Britt

"The truth often suffers more by the heat of its defenders
than by the arguments of its opponents."
   - William Penn.

Oh this is *very* cool!

···

On 2-Mar-07, at 2:18 PM, Dave Thomas wrote:

We were lucky to get Joe Armstrong, one of the inventors of Erlang, to write our latest beta book, Programming Erlang.

----
Bob Hutchison -- blogs at <http://www.recursive.ca/hutch/&gt;
Recursive Design Inc. -- <http://www.recursive.ca/&gt;
Raconteur -- <http://www.raconteur.info/&gt;
xampl for Ruby -- <http://rubyforge.org/projects/xampl/&gt;

Awesome. I've been meaning to learn Erlang for a while now. I'm
definitely buying this, especially with Joe Armstrong involved.

Farrel

···

On 02/03/07, Dave Thomas <dave@pragprog.com> wrote:

I love Ruby--I've done all my serious (and most of my not-so-serious)
work in Ruby since 2000.

But that doesn't mean that I think it's the only solution--the
universal language. There are always going to be areas where other
tools excel.

One of those areas is concurrent programming. As the world moves to
multi-core processors, and as we start to write applications
distributed across intra- and internets, we need to find better ways
to exploit all this extra power. If you've ever tried to write
concurrent programs in Java, or even Ruby, you know the challenges.

Erlang is designed from the ground up to help programmers create
highly concurrently (read thousands or processes), highly reliable
(read 99.99999% uptime) applications. It's a real world language--it
is used to write telephone switches, banking applications, trading
systems...you name it.

I like it for that reason. I also like it because it's different--
very different. It makes me think about problems in a totally
different way.

We were lucky to get Joe Armstrong, one of the inventors of Erlang,
to write our latest beta book, Programming Erlang.

The book isn't being officially announced until next week, but I
thought the Ruby community might appreciate an early look.

      http://www.pragmaticprogrammer.com/titles/jaerlang/

Cheers

Dave

Excellent! It just so happens I am gearing up to learn Erlang. What timing! Maybe people on this list really are clairvoyant...

Hans

Dave Thomas wrote:

I love Ruby--I've done all my serious (and most of my not-so-serious) work in Ruby since 2000.

But that doesn't mean that I think it's the only solution--the universal language. There are always going to be areas where other tools excel.

One of those areas is concurrent programming. As the world moves to multi-core processors, and as we start to write applications distributed across intra- and internets, we need to find better ways to exploit all this extra power. If you've ever tried to write concurrent programs in Java, or even Ruby, you know the challenges.

Erlang is designed from the ground up to help programmers create highly concurrently (read thousands or processes), highly reliable (read 99.99999% uptime) applications. It's a real world language--it is used to write telephone switches, banking applications, trading systems...you name it.

I like it for that reason. I also like it because it's different--very different. It makes me think about problems in a totally different way.

We were lucky to get Joe Armstrong, one of the inventors of Erlang, to write our latest beta book, Programming Erlang.

The book isn't being officially announced until next week, but I thought the Ruby community might appreciate an early look.

     http://www.pragmaticprogrammer.com/titles/jaerlang/

Cheers

Dave

Thank you!! This is *exactly* what I've been waiting for!!

···

--
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.

Dave Thomas ha escrito:

One of those areas is concurrent programming. As the world moves to
multi-core processors, and as we start to write applications
distributed across intra- and internets, we need to find better ways
to exploit all this extra power. If you've ever tried to write
concurrent programs in Java, or even Ruby, you know the challenges.

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.

I like it for that reason. I also like it because it's different--
very different. It makes me think about problems in a totally
different way.

That it is. It is 100% functional programming pretty much, albeit its
syntax is much more accessible than something like Ocalm or Haskell
(at least to me).

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.

Dave Thomas wrote:

     http://www.pragmaticprogrammer.com/titles/jaerlang/

Ordered.

While waiting for the PDF to arrive, I complied Erlang on
my OSX box and wrote some simple code via the fine online
tutorial:

  http://erlang.se/doc/doc-5.4/doc/getting_started/part_frame.html

Neat.

Thanks for the shove,

···

--
Bil Kleb
http://fun3d.larc.nasa.gov

Sweet. Any plans for a Haskell book?

+1

···

--
Giles Bowkett
http://www.gilesgoatboy.org

http://giles.tumblr.com/

I'd love to do one.

It's a question of finding the right author.

···

On Mar 2, 2007, at 2:00 PM, James Britt wrote:

Sweet. Any plans for a Haskell book?

Awesome.

···

On 3/3/07, Bob Hutchison <hutch@recursive.ca> wrote:

On 2-Mar-07, at 2:18 PM, Dave Thomas wrote:

> We were lucky to get Joe Armstrong, one of the inventors of Erlang,
> to write our latest beta book, Programming Erlang.

Oh this is *very* cool!

--
gnufied
-----------
There was only one Road; that it was like a great river: its springs
were at every doorstep, and every path was its tributary.
http://people.inxsasia.com/~hemant

> I love Ruby--I've done all my serious (and most of my not-so-serious)
> work in Ruby since 2000.
>
> But that doesn't mean that I think it's the only solution--the
> universal language. There are always going to be areas where other
> tools excel.
>
> One of those areas is concurrent programming. As the world moves to
> multi-core processors, and as we start to write applications
> distributed across intra- and internets, we need to find better ways
> to exploit all this extra power. If you've ever tried to write
> concurrent programs in Java, or even Ruby, you know the challenges.
>
> Erlang is designed from the ground up to help programmers create
> highly concurrently (read thousands or processes), highly reliable
> (read 99.99999% uptime) applications. It's a real world language--it
> is used to write telephone switches, banking applications, trading
> systems...you name it.
>
> I like it for that reason. I also like it because it's different--very
> different. It makes me think about problems in a totally different way.
>
> We were lucky to get Joe Armstrong, one of the inventors of Erlang, to
> write our latest beta book, Programming Erlang.
>
> The book isn't being officially announced until next week, but I
> thought the Ruby community might appreciate an early look.
>
> http://www.pragmaticprogrammer.com/titles/jaerlang/

my +1 also - I've worked through the Erlang tutorials but haven't
quite grasped it properly - so thanks for the timely 'release'

Kev

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. :slight_smile:

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. :slight_smile:

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? :slight_smile:

···

--
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.

That's just what I was going to say. This one looks great though, thanks
Dave.

···

On 02/03/07, James Britt <james.britt@gmail.com> wrote:

Dave Thomas wrote:
> We were lucky to get Joe Armstrong, one of the inventors of Erlang, to
> write our latest beta book, Programming Erlang.

Sweet. Any plans for a Haskell book?

--
Rasputin :: Jack of All Trades - Master of Nuns
http://number9.hellooperator.net/

Bil Kleb wrote:

Dave Thomas wrote:

     http://www.pragmaticprogrammer.com/titles/jaerlang/

Ordered.

While waiting for the PDF to arrive, I complied Erlang on
my OSX box and wrote some simple code via the fine online
tutorial:

http://erlang.se/doc/doc-5.4/doc/getting_started/part_frame.html

Neat.

Thanks for the shove,
--
Bil Kleb
http://fun3d.larc.nasa.gov

I went one better -- installed Erlang *and* wings3d! Perhaps the poster who gets segfaults in Ubuntu could email me the test case off list??

···

--
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.

And any plans for an IO book? It also has interesting answers/solutions
relevant to the current uni- to multi-core transition... iolanguage.com

/Robert Feldt

···

On 3/2/07, Dave Thomas <dave@pragprog.com> wrote:

On Mar 2, 2007, at 2:00 PM, James Britt wrote:

>
> Sweet. Any plans for a Haskell book?

On any other language list, if I announced a book on a different language, I'd get flamed until crisp.

Here, all you folks say is "cool".

It's a nice place to call home.

Dave

M. Edward (Ed) Borasky wrote:

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.

P.S.: Last September, there was a Functional Languages conference here in Portland. I attended two all-day side sessions, one on Erlang and one on Scheme. The Erlang session overflowed the small room Portland State University had allocated for it, and something like a third of the attendees were from a team at Amazon.Com that is doing a project in Erlang.

···

--
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.

My experience with Erlang is -very- limited, but I thought it seemed like it
had potential. By focusing on something that isn't really covered too much
in other languages and trying to be really good at it, it separates itself
from the crowd nicely (imho at least :wink: ). I've heard that the web server
written in Erlang (don't remember the name, sorry) is really good at
handling heavy loads without shirking. If it could be configured to serve
Rails apps... hey, best of both worlds! :smiley:

Dave Kapp
http://www.dobeeploop.com

I'd say it would be a bit soon for an Io book since I still pull down
daily changes from the main darcs repository. :wink: Having said that, I
highly recommend that people check it out... it _really_ brings the
meaning of completely dynamic into scope.

Though I've gone through other Haskell books, it would be great to see
how the Pragmatics would present the language. So +1 on that from me
as well.

Brian.

···

On 3/2/07, Robert Feldt <robert.feldt@gmail.com> wrote:

On 3/2/07, Dave Thomas <dave@pragprog.com> wrote:
>
> On Mar 2, 2007, at 2:00 PM, James Britt wrote:
>
> >
> > Sweet. Any plans for a Haskell book?

And any plans for an IO book? It also has interesting answers/solutions
relevant to the current uni- to multi-core transition... iolanguage.com

/Robert Feldt