views:

195

answers:

4

What book(s) will you recommend if the goal was to learn

  • Different language paradigms (OO, functional, ..)
  • Different concepts (dynamic/static typed, immutability, ..)

In short, i'm looking for a book which describe and compares different language paradigms and concepts possibly with examples for real languages like Java, Lisp, Erlang, Ruby, Prolog, etc.

+2  A: 

In my experience, it's better to actually learn the languages.

Learning the "paradigms" doesn't mean much unless you can actually use the language.

Learning a new language isn't all that hard. Using it well can take a while. But learning the basics shouldn't take long.

While flitting from language to language isn't smart, you should be able to dig in deeply in a few months. Within a year you should be able to really understand a couple of paradigms including examples that you actually wrote.

The more languages you actually learn, the better you'll be able to understand the concepts.

S.Lott
This is a superb strategy if you have several years to invest. If you have six months, you can learn a lot from a good book---although it is probably harder without a teacher. And if you find a book that is not so good, it is all too easy to learn nothing worthwhile.
Norman Ramsey
@Norman Ramsey: Considering the downside risks of "bad book" and "no teacher", I've always elected to just learn the languages. It's always seemed better to talk pragmatically about what you've done rather than hypothetically about what other claim you should be able to do.
S.Lott
@S. Lott: if you're on your own and you have plenty of time, it's an excellent strategy. Where you may miss out is on seeing the less obvious connections between languages. But for that you need a *good* book or *good* teacher.
Norman Ramsey
@Norman Ramsey: If the connections are too subtle, they're irrelevant. We're linguistic animals -- our brains do language very naturally and quickly. We're clued in to linguistic subtlety by our very natures. I don't think one needs much more than accurate specifications, a reasonable introductory tutorial, a working toolset and a corpus of working code to study and emulate. It doesn't take long. I used to teach C as a 1-week class. Java in 2 weeks. The basics are easy.
S.Lott
+2  A: 

Haridi and Van Roy's unusual book is a great way to learn all about programming paradigms, though the one (perfectly "real"!-) main language it uses for the purpose is Mozart. It does also explain how the various paradigms apply in four more popular languages -- Erlang, Haskell, Java, and Prolog.

Alex Martelli
+2  A: 

I took a (graduate) programming languages course at the university just 2 months ago and we used the book Concepts in Programming languages by John Mitchell.

In my opinion it's not a bad book and I can tell you that it discusses the following languages: ML, C++, Java, Simula, Smalltalk

Anyway, since I'm interested in the subject, I've searched for other similar books and I've found that Programming languages pragmatics by Michael Scott seems to have really good readers reviews and it's used in many university courses too.

You can read amazon's users review or you can have an overview and read some sample pages for both books here:

http://books.google.com/books?id=7Uh8XGfJbEIC

http://books.google.com/books?id=GBISkhhrHh8C

Andrea Zilio
Both John Mitchell's book and Michael Scott's book are very good. But I have a couple of caveats: in my experience, most readers new to the field find John Mitchell's book a little inacessible; somewhat heavy going. But certainly if you get through it you will learn a great deal. Michael Scott's book is excellent, but it is out of the mainstream of programming languages, and is focused more on pragmatics, as advertised in the title. I think it's a good book to learn more about *programming*, but not so good to learn about *languages*.
Norman Ramsey
+8  A: 
Norman Ramsey