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
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
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.
Sweet. Any plans for a Haskell book?
"The truth often suffers more by the heat of its defenders
than by the arguments of its opponents."
- William Penn.
> Sweet. Any plans for a Haskell book?
I'd love to do one.
It's a question of finding the right author.
> 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!
Bob Hutchison -- blogs at <http://www.recursive.ca/
Recursive Design Inc. -- <http://www.recursive.ca/>
Raconteur -- <http://www.raconteur.info/>
xampl for Ruby -- <http://rubyforge.org/projects/xampl/>
There was only one Road; that it was like a great river: its springs
were at every doorstep, and every path was its tributary.
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. ;-) 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
Awesome. I've been meaning to learn Erlang for a while now. I'm
definitely buying this, especially with Joe Armstrong involved.
M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
If God had meant for carrots to be eaten cooked, He would have given rabbits fire.
my +1 also - I've worked through the Erlang tutorials but haven't
quite grasped it properly - so thanks for the timely 'release'
>> > And any plans for an IO book? It also has interesting answers/
>> > relevant to the current uni- to multi-core transition...
>> 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. ;-)
> Yes, but it's a bright new world, with the publishing world looking
> more and
> more like the open-source software world, with versioning, beta
> books and
> frequent releases... ;)
I'd love to see proposals on IO, Haskell, and OCaml.
Here, all you folks say is "cool".
It's a nice place to call home.
You should do one on VBScript. I'd like to see what that reaction
would be like. For my own purposes.
And just in case, for those who do not know me ;). It's a joke.
We have not succeeded in answering all of our questions.
In fact, in some ways, we are more confused than ever.
But we feel we are confused on a higher level and about more important things.
I agree that the Ruby community rocks, but a big reason for the warm
response is because of the reputation you guys have created for
yourselves. Your flagship book has Java examples throughout and we
all love it. You'll always have the benefit of the doubt.
Comming from the Python community, I don't think pythonistas are more
intolerant than rubyists, although I've heard this myth while talking
to people at the last RubyConf. On the other hand, if you had
announced a Python book, perhaps your response here would not be
One of the things that has always bothered me in the Ruby community is
how much Python bashing goes on, most of it needless and a lot of it
Then again, you *are* Dave Thomas, and everyone here are your fans
(including myself), so you'll always get special treatment.
Well I did not really notice but it is sad news that you feel like it,
maybe we should be a little more expressive about smileys sometimes.
You are making a strong point, Python's success is something to be
jealous of course ;), but there simply is *no* reason to bash anybody
unless it is /bin/bash of course.
Personally I have very mixed feelings about Python, I love its power
and I hate its syntax and complexity.
But both statements are probably a compliment to the language and
loving the power and hating the complexity is somehow stupid of
Hopefully you will keep stopping by.
> Then again, you *are* Dave Thomas, and everyone here are your fans
> (including myself), so you'll always get special treatment.
Who is this Dave Thomas guy? No I am not kidding, probably I am just
very ignorant, but not for very much longer...
Ciao ( no make that ate à prossima)
You haven't announced that PHP book yet. Followed by Agile Web
Programming with Django.
> It's a nice place to call home.
"Hackers will be expelled"
- The Breakfast Club (1985)
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
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.
Interesting. My view is that Python questions/comparisons on ruby-talk
are mostly greeted with "Python is great; try both Ruby and Python and
pick what makes you happy."
I've seen complaints on this list about various Python features; I hope
expressing displeasure doesn't count as "bashing."
Also, one has to have an appropriate understanding of the scope of "the
Ruby community". It's much, much more than a handful of vocal people,
either on this list or out on various bogs and discussion boards.
(BTW, some folks in my neck of the woods tried to start up a Django user
group. 2 of the 4 attendees at the first meeting were Rubyists. We're
pretty open-minded about tech, and I think the enthusiasm here for
Erlang, Haskell, Io, etc. is some indication.)
> Then again, you *are* Dave Thomas, and everyone here are your fans
> (including myself), so you'll always get special treatment.
I don't think people shy away from criticizing Dave if they believe it's
warranted. It's more that most people here treat most other people here
with respect. And Dave and Prag Press have produce admirable work.
MINASWAN. (Matz is nice and so we are nice.)
So, as long as Matz stays nice ...
Nobody's going to tell me ;), boy I had to google all by myself
Oh yes *that* Dave Thomas, funny thing
I read your book (well one of your books) 3 times at least and I do
not know your name, that is not very nice...
No, not *that* Dave Thomas. Note that that page is about the guy who
founded Object Technology International, not the guy who co-wrote The
Pragmatic Programmer and the Pickaxe.
Perhaps you meant http://en.wikipedia.org/wiki/Dave_Thomas_%28programmer%29
Avdi - who is thinking of changing his name to Dave Thomas so that he
can be a famous hacker too...
Yes, Matz is very nice, it was wonderful to meet him. So are most
everyone in the Ruby and Python communities.
It's really wonderful how BBSs and then the Internet alowed us to form
these international communities of interest moved by solidarity and
If confused, try the David Thomas disambiguation page:
Ya gotta love Wikipedia! ;)
Oh boy, thanx for putting that right.
> Avdi - who is thinking of changing his name to Dave Thomas so that he
> can be a famous hacker too...
> (BTW, some folks in my neck of the woods tried to start up a Django
> user group. 2 of the 4 attendees at the first meeting were Rubyists.
> We're pretty open-minded about tech, and I think the enthusiasm here
> for Erlang, Haskell, Io, etc. is some indication.)
Part of that enthusiasm stems from
a. Erlang seems to have "done concurrency right". Ruby is close, so
Rubyists want to pick up some ... er ... pointers. :)
b. Those of us who believe that Functional Programming is the One True
Way are naturally enthusiastic about functional languages achieving
"commercial" success. Too bad it's not Lisp or Scheme, but hey, you
can't have *everything*. :)
> I don't think people shy away from criticizing Dave if they believe
> it's warranted. It's more that most people here treat most other
> people here with respect. And Dave and Prag Press have produce
> admirable work.
I don't think Dave has ever said anything I disagree with, but then I've
only been hanging out here for a year or so. One thing he *has* said
repeatedly is that a programmer should learn a new language every year,
and his timing was perfect -- I picked Erlang and he showed up a couple
weeks later with an Erlang book. Just out of curiosity, Dave, are you
looking for someone to write a queuing theory book? :)
> MINASWAN. (Matz is nice and so we are nice.)
> So, as long as Matz stays nice ...
Seriously, though, someone ought to do a sociological study of
"benevolent dictators" like Matz, DHH, Guido and Linus (Torvalds) and
the communities that have formed around them.
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? :)
But I agree 100% that he is an incredibly nice and easy going person.
> M. Edward (Ed) Borasky, FBG, AB, PTA, PGS, MS, MNLP, NST, ACMC(P)
> If God had meant for carrots to be eaten cooked, He would have given rabbits fire.
Matz personally answered my very first post to ruby-talk. That was Feb
27, 2002, just a hair over 5 years ago. I was surprised and pleased and
have remained that way ever since.
I would agree. Out of the various languages I've worked with (or at
least dabbled in) such as Java, C, C++, C#, VB, Python, Smalltalk, and
Ruby, that the Ruby community is the best. In terms of being
courteous, friendly, helpful, and active. There are newsgroups or
mailing lists for other languages that might try to help but are just
so inactive due to a small user base. Then there is the opposite. A
language that's so big that one person's post is ignored or at best it
receives a curt reply such as "Google in your friend." The Ruby
community as a whole has a sense of humor, likes to explore other
languages, and realizes there's more than one tool to do the job.
For a newbie looking to pick a programming language to start out with,
if they are interested in the community as a resource then browse the
various newsgroups and mailing lists. See what the replies are and how
welcome newbies are. Ruby would be #1 in my book.
I would agree. Out of the various languages I've worked with (or at
Those are some excellent examples of nice people who are community
leaders by dint of having created the focus of the community in the
first place. I'm simply astounded that Larry Wall didn't make your
list, however. He's sort of one of the pioneers of community accretion
in this tradition.
Ben Franklin: "As we enjoy great Advantages from the Inventions of
others we should be glad of an Opportunity to serve others by any
Invention of ours, and this we should do freely and generously."
Larry Wall definitely still plays a role in the Perl world. At least,
the development of Perl 6. I was really skeptical about Perl 6 but I
think it's going to be very, very entertaining. (I don't know if it'll
be entirely useful, but I'm sure it'll be interesting.)
But someone pointed it out in this list already. "It sure would be sad
not to have Perl6 but having Parrot alone is a great achievement
You beat me to it. I knew the OTI Dave Thomas long before I
encountered Ruby, worked with him on various Smalltalk and OOPSLA
things then when IBM acquired OTI, then for him when OTI borrowed me
from IBM. We always referred to him as "Big Dave."
When I first ran across Ruby and the Prag Programmers, I wondered if
it was the same Dave Thomas.
Actually, it's amazing how many Dave Thomases of note there are/were,
the ones I was already aware of were:
* Dave Thomas of Prag Programmers
* Dave Thomas of OTI
* Dave Thomas of Second City and "The Mackenzie Brothers"
* Dave Thomas the founder of Wendy's
But there are oh so many more: http://en.wikipedia.org/wiki/David_Thomas
I'm beginning to think that Dave Thomas is Welsh for John Smith!
Somehow if I ever managed to find fame, I wouldn't have quite the same
problem, although there seems to be an Italian-Canadian kickboxer with
the same last name famous enough to have a wikipedia article.
My blog on Ruby
There still is a thriving Perl community. Check out PerlMonks, for
"Real ugliness is not harsh-looking syntax, but having to
build programs out of the wrong concepts." - Paul Graham
He's involved in more than Perl 6. He also occasionally participates in
discussions at PerlMonks, for instance -- though one might not recognize
his username there, at first glance.
Amazon.com interview candidate: "When C++ is your
hammer, everything starts to look like your thumb."
I made a very flippant, fairly public prediction that we'd see something
along the lines of a release candidate for Perl 6 in about 18 months,
give or take. The reasons I cited for such a prediction are mostly
nonsense, the prediction being mostly in jest (in a "ha ha only serious"
sense), but I wouldn't be terribly surprised if I was right nonetheless.
Steve Yegge, a programming weblog pundit of growing fame, speculated
that the Next Big Language(TM) would come out in about 18 months, and I
subsequently speculated in a weblog of my own about the language he must
have meant -- and in that speculation, I identified Perl 6 as the best
fit for his criteria for the NBL. I also went off on a tangent about
other factors related to, but not specifically part of, the NBL
discussion. It seems likely that Yegge was actually talking about
ECMAScript 4 (don't laugh -- it's looking like a much more serious
programming language than the current iteration), though Perl 6 fits his
criteria as he stated them even better than ECMAScript 4 does. As such,
he may well have been predicting that Perl 6 will be roughly
release-worthy in about eighteen months, too.
> But someone pointed it out in this list already. "It sure would be sad
> not to have Perl6 but having Parrot alone is a great achievement
Worry not. Perl 6 development has long since crossed the point of no
return. Too much work has already been done, with multiple, fairly
complete testing implementations available and polished enough so that
you could be fooled into thinking you have a release version of a new
language in your hands.
"There comes a time in the history of any project when it becomes necessary
to shoot the engineers and begin production." - MacUser, November 1990
Isn't that the same Setve Yegge who called Perl an ancient language, said
some interesting things about Larry as well and bid Perl farewell?
Yeah. I never said he was always right.
Leon Festinger: "A man with a conviction is a hard man to change. Tell
him you disagree and he turns away. Show him facts and figures and he
questions your sources. Appeal to logic and he fails to see your point."
Perl 6 is actually a pretty significant departure from even Perl 5, let
alone Perl 6. I can follow the syntax (being a Perl 5 guy), but it's
not exactly the same language. To get the idea across . . . you can
write simple scripts in Perl 4 and they'll still execute with a Perl 5
interpreter without making any major changes. The same, it seems, is
not true of Perl 5 and Perl 6. It has been said many times that Perl 6
is more a new language than a new release version of an old language.
For instance, try this on for size: Perl 6 apparently won't
automatically "flatten" nested lists. At first glance, that might just
look like a small design decision, but that fundamentally changes quite
a lot about the language. No longer is dereferencing syntax necessary
for complex data structures, for instance -- you can just pile a list
inside a list.
It looks like Perl 5 and Perl 6 will be forks of Perl, with Perl 5
development continuing into the future.
Yes, you could probably write a production application in Perl 6 right
now, but Perl 6 is a moving target right now. If you're planning to put
Perl 6 code in production now, you'd better bundle it with an
interpreter and be ready to support the interpreter yourself. You'd be
better off, if you want to play with Perl 6 at this point, to do just
that for now -- play with it. Learn it to the best of your ability,
write toy scripts and even automate non-critical tasks, and submit bug
reports when things don't work as expected. Right now, using Perl 6 is
more a hobby and a way to help the further development of Perl 6 than a
means of getting Real Work done. At least, that's my understanding.
"The ability to quote is a serviceable
substitute for wit." - W. Somerset Maugham
Um, yes. Thank you for that thoughtful analysis.
I'm looking forward to Perl 6. You don't have to.
Brian K. Reid: "In computer science, we stand on each other's feet."
I guess I'm looking for a "killer language feature" in Perl 6. I don't
know enough about Haskell to know if it has any killer features, but I
know of at least two in Erlang -- concurrency done with lightweight
processes and some pretty good compile-time code checking tools. Now
Ruby, of course, could very easily learn lightweight processes, but
nobody seems to think it's possible to do compile-time code checking,
and quite a few Rubyists don't even think such tools have any value.
> Sweet. Any plans for a Haskell book?
That's just what I was going to say. This one looks great though, thanks
Rasputin :: Jack of All Trades - Master of Nuns
Hey, if you don't like things with the name Perl on them, or only learn
languages when they have a significant post-release momentum to them,
that's fine. Choose accordingly. If, on the other hand, you find that
you like what you've read or heard about Perl 6, then maybe you'd find
it interesting to learn. The above reads like you're trying to put me
on the defensive, but really, I don't have anything to defend.
> I guess I'm looking for a "killer language feature" in Perl 6. I don't
> know enough about Haskell to know if it has any killer features, but I
> know of at least two in Erlang -- concurrency done with lightweight
> processes and some pretty good compile-time code checking tools. Now
> Ruby, of course, could very easily learn lightweight processes, but
> nobody seems to think it's possible to do compile-time code checking,
> and quite a few Rubyists don't even think such tools have any value.
Try this for a "killer feature":
It's kinda like Perl 5, but better. (At least, that's the theory.)
If you hate Perl, maybe that means it's not for you.
On the other hand . . . Perl 6 is doing some interesting things with
list handling and inheritance -- like, it's not actually using
"inheritance", per se. It's using trait composition instead to achieve
similar effects. I've never used a trait composition system like this
before, and the idea interests me. It looks like it may, implemented
well, be a significant improvement for more dynamic programming idioms
over more traditional inheritance.
Hey, it's a new language. I have a better question than to ask why I
should learn it. How about "Why not?"
Of course that is somehow normal between civilized people :)
But I am afraid that the Perl community just loses too much momentum
to remain a mainstream language as it was.
That might not bother A. B might think that it will not happen, and I
am just C, having stopped putting effort into understanding Perl6
because of that risk.
I kind of feel sad about that.
Your optimism is a good thing to share, and I thank you for it,
nonetheless I remain skeptical.
But I am wrong quite often ;)
> CCD CopyWrite Chad Perrin [ http://ccd.apotheon.org ]
> Brian K. Reid: "In computer science, we stand on each other's feet."
Now if the Perl 6 community were to decide, "OK ... we've had our fun
.. let's tie up all the loose ends and push towards a
professional-quality *release*" -- you know, things like code freezes --
then I might be tempted to learn it. :)
While waiting for the PDF to arrive, I complied Erlang on
my OSX box and wrote some simple code via the fine online
Thanks for the shove,
The responses to my adopt-a-newbie suggestion were totally amazing
(search on ML) and led to the establishment of RubyMentor (
Well, that makes sense. I'm not learning it right now, either. I'm
following its development, somewhat, as an interested observer. I'm
interested in what its final form will be. I'll probably start learning
it right about the time I'm pretty sure I won't have to discard
everything I've learned and start over again -- after release, in other
I was asked about its value as a programming language right now, so I
described it in some detail from my perspective -- something to do for
fun or to help with development, and not so much something to do for
career enhancement. I'd go for the "for fun" option, if there weren't
too many other things I'm already doing for fun -- like working on
achieving real competence with Ruby.
> Now if the Perl 6 community were to decide, "OK ... we've had our fun
> ... let's tie up all the loose ends and push towards a
> professional-quality *release*" -- you know, things like code freezes --
> then I might be tempted to learn it. :)
I'm already tempted, but I can resist temptation until that point. It's
pretty easy, when giving in to temptation at this point would have to
involve reallocating yet more sleep time.
"We buy the argument of the Traits paper that classes should not be
used both to manage objects and to manage code reuse. It needs to be
possible to separate those concerns."
Obviously this is pretty different from the standard class-centric OO paradigm.
There's also a set-like datatype which was inspired by quantum
physics. They made such weird, fun decisions that I feel like I have
to check it out.