Ben Nadel
On User Experience (UX) Design, JavaScript, ColdFusion, Node.js, Life, and Love.
I am the chief technical officer at InVision App, Inc - a prototyping and collaboration platform for designers, built by designers. I also rock out in JavaScript and ColdFusion 24x7.
Meanwhile on Twitter
Loading latest tweet...
Ben Nadel at Scotch On The Rocks (SOTR) 2011 (Edinburgh) with:

Seven Languages In Seven Weeks: A Pragmatic Guide To Learning Programming Languages By Bruce Tate

By Ben Nadel on
Tags: Books

Normally, I would wait to review a book until after I had finished it; but, with Seven Languages in Seven Weeks by Bruce Tate, I wanted to mix things up a little. Each of the seven languages outlined in the book is covered over the course of three days. On each of those three days, there is some teaching followed by some independent learning, or "self-study." I wanted to mention this book now so that I could then post my self-study exercises in some follow-up blog entries.


 
 
 

 
Seven Languages In Seven Weeks By Bruce Tate, Review By Ben Nadel.  
 
 
 

If you haven't heard of Seven Languages in Seven Weeks, it's a new book from the Pragmatic Bookshelf that provides an in-depth introduction to seven uniquely interesting programming languages:

  • Ruby
  • Io
  • Prolog
  • Scala
  • Erlang
  • Clojure
  • Haskell

To give you some insight into why these particular languages were chosen, I am going to repost a portion of the book's introduction, which is freely available on the Pragmatic Programmers' web site.

Bruce Tate:

Choosing the languages in this book was much easier than you might imagine. I simply asked potential readers. When we rolled up all the data, we had eight potential candidates. I struck JavaScript because it was too popular and replaced it with the next most popular prototype language, Io. I also struck Python because I wanted no more than one object-oriented language, and Ruby was higher on the list. That made room for a surprising candidate, Prolog, which was a top-ten language on the list. These are the languages that did make the cut and the reasons I picked them:

Ruby. This object-oriented language gets high marks for ease of use and readability. I briefly considered not including any object-oriented language at all, but I found myself wanting to compare the different programming paradigms to object-oriented program- ming (OOP), so including at least one OOP language was important. I also wanted to push Ruby a little harder than most pro- grammers do and give readers a flavor for the core decisions that shaped the design of Ruby. I decided to take a dive into Ruby metaprogramming, allowing me to extend the syntax of the language. I'm quite happy with the result.

Io. Along with Prolog, Io is the most controversial language I included. It is not commercially successful, but the concurrency constructs with the simplicity and uniformity of syntax are important concepts. The minimal syntax is powerful, and the similarities to Lisp are sometimes striking. Io has a small footprint, is a prototype language like JavaScript, and has a unique message dispatch mechanism that I think you'll find interesting.

Prolog. Yes, I know it's old, but it is also extremely powerful. Solving a Sudoku in Prolog was an eye-opening experience for me. I've worked hard to solve some difficult problems in Java or C that would have been effortless in Prolog. Joe Armstrong, creator of Erlang, helped me gain a deeper appreciation of this language that strongly influenced Erlang. If you've never had an occasion to use it, I think you will be pleasantly surprised.

Scala. One of a new generation of languages on the Java virtual machine, Scala has brought strong functional concepts to the Java ecosystem. It also embraces OOP. Looking back, I see a striking similarity to C++, which was instrumental to bridging procedural programming and OOP. As you dive into the Scala community, you'll see why Scala represents pure heresy to pure functional programmers and pure bliss to Java developers.

Erlang. One of the oldest languages on this list, Erlang is gathering steam as a functional language that gets concurrency, distribution, and fault tolerance right. The creators of CouchDB, one of the emerging cloud-based databases, chose Erlang and have never looked back. After spending a little time with this distributed language, you'll see why. Erlang makes designing concurrent, distributed, fault-tolerant applications much easier than you could have ever thought possible.

Clojure. Another JVM language, this Lisp-dialect makes some radical changes in the way we think about concurrency on the JVM. It is the only language in this book that uses the same strategy in versioned databases to manage concurrency. As a Lisp dialect, Clojure packs plenty of punch, supporting perhaps the most flexible programming model in the book. But unlike other Lisp dialects, the parentheses are greatly reduced, and you have a huge ecosystem to lean on, including a huge Java library and widely available deployment platforms.

Haskell. This language is the only pure functional language in the book. That means you won't find mutable state anywhere. The same function with the same input parameters will give you the same output, every time. Of all the strongly typed languages, Haskell supports the most widely respected typing model. Like Prolog, it will take a little while to understand, but the results will be worth it.

.... Those languages that I picked are not necessarily the best, but each one is unique, with something important to teach you.

I just finished Ruby - Day 1, which I'll blog about shortly. I get a good sense that I'm really going get a lot of out it. Based on the first set of self-study questions, Tate really asks a lot of the reader; it's basically like you get homework assignments with every day of teaching. Very exciting! As a kid, homework was lame; but as an adult, the idea simply rawks!

Stay tuned for seven levels of awesomeness!




Reader Comments

Glad you're doing this as a series, Ben! We get to be armchair explorers as you do the hard work. Thanks.

Reply to this Comment

Ben - this is very valuable. I'd love to teaching programming using this "buffet" approach. "All you can program."

Reply to this Comment

@Hal,

So far, it's a lot of fun! At the very least, Ruby was easy to install on Windows and was already installed on my Mac.

@Sami,

I'm hoping it will give me some great perspective on the world of programming. I'm currently working my way through Ruby - Day 1 exercises and I'm simply floored at how *many* ways there are to solve the most simple of problems. Not to mention that the syntax is like 50% optional :) Of course, I'm adding all the extra syntax I can!

Reply to this Comment

When I saw the title of the blogpost I thought, "wow that sounds awesome!". Then I read along to what languages were involved and was more like "huh?!?!"...

If it were me I'd probably have to cut out about 5 weeks.. :)

Reply to this Comment

@Anthony,

I think the point of the book is to explore languages that very different than the ones you might be used to. The fact that you'd cut out five weeks is probably all the more reason that the book would hold value :)

Reply to this Comment

As much as I love ColdFusion, I don't think I have enough code monkey in me to want to get into more languages.

Especially cause I don't take well to reading; I'm more of a visual person. Used Lynda.com's video library to teach me Photoshop; would have never made it through a book, but hey, more power to ya!

Reply to this Comment

@Aaron,

I know what you mean. It can also be very frustrating going from a situation where we know a lot of info (ColdFusion) into one where we know nothing! At that point, you know concepts, but have no way of implementing them. And, what's even more frustrating is when Googling yields no results - is that cause the language doesn't support the idea.... OR, more likely, that you're just not searching for the right thing.

Lynda.com is good stuff. I'd like to get down with that for some Fireworks videos.

Reply to this Comment

@Ben,

I bought the print and ebook versions of Erland and OTP in Action and I've switched entirely to ebooks now so if you do decide you want to dig into Erlang more than Seven Languages allows, I'd be happy to mail you the In Action book... let me know via private email.

Reply to this Comment

@WebManWalking,

Thanks for the link. Moving onto Day 2 of Scala as I write this. I've heard good things about Erlang. I believe it is the language that powers CouchDB if I remember Mark Drew's presentation correctly. Should be good when I get there.

@Sean,

Thanks a lot for the offer. I'll let you know after I've had a taste of Erlang... we'll see how happy or sad it makes me.

eBooks are cool things. I recently read my first ePub book on the iPad and really really enjoyed the experience - way more than I thought I would. Once I highlighted something, I was sold :) I'm hoping to move more books in that direction as well.

Reply to this Comment

Oops. It isn't just a finalist. It's a Jolt Productivity Award winner, meaning that it finished in the top 3 books of the year.

Reply to this Comment

Post A Comment

You — Get Out Of My Dreams, Get Into My Comments
Live in the Now
Oops!
Comment Etiquette: Please do not post spam. Please keep the comments on-topic. Please do not post unrelated questions or large chunks of code. And, above all, please be nice to each other - we're trying to have a good conversation here.