Seven Languages in Seven Weeks: A Pragmatic Guide to Learning Programming Languages (Pragmatic Programmers)
Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell. With Seven Languages in Seven Weeks, by Bruce A. Tate, you’ll go beyond the syntax-and beyond the 20-minute tutorial you’ll find someplace online. This book has an audacious goal: to present a meaningful exploration of seven languages within a single book. Rather than serve as a complete reference or installation guide, Seven Languages hits what’s essential and unique about each language. Moreover, this approach will help teach you how to grok new languages.
For each language, you’ll solve a nontrivial problem, using techniques that show off the language’s most important features. As the book proceeds, you’ll discover the strengths and weaknesses of the languages, while dissecting the process of learning languages quickly–for example, finding the typing and programming models, decision structures, and how you interact with them.
Among this group of seven, you’ll explore the most critical programming models of our time. Learn the dynamic typing that makes Ruby, Python, and Perl so flexible and compelling. Understand the underlying prototype system that’s at the heart of JavaScript. See how pattern matching in Prolog shaped the development of Scala and Erlang. Discover how pure functional programming in Haskell is different from the Lisp family of languages, including Clojure.
Explore the concurrency techniques that are quickly becoming the backbone of a new generation of Internet applications. Find out how to use Erlang’s let-it-crash philosophy for building fault-tolerant systems. Understand the actor model that drives concurrency design in Io and Scala. Learn how Clojure uses versioning to solve some of the most difficult concurrency problems.
It’s all here, all in one place. Use the concepts from one language to find creative solutions in another-or discover a language that may become one of your favorites.
List Price: $ 34.95
Price: $ 19.50


Much (perhaps over) anticipated,
Background: I stumbled across the author’s blog post announcing his intention to write the book while looking for materials comparing language paradigms instead of particular languages (object-oriented, logical, functional, prototype, etc). The as yet unwritten book sounded like exactly what I was after (thus my enthusiastic anticipation). I purchased an electronic copy of this book from the Prag Press beta program about six months ago and began reading the chapters as they were completed and released. My paper copy just arrived from Amazon today. Thus I can comment on the whole content of the book and the physical object.
Languages: While the languages covered (Ruby, Io, Prolog, Scala, Erlang, Clojure, Haskell) are excitingly (painfully?) trendy the list is not without merit. In the introduction the author explains that he arrived at the list by asking readers and edited from there: swapping Io for JavaScript and excluding Python thereby making room for Prolog. One could debate the choice of Io over JavaScript (particularly in a post Node.js / Common.js world) and make a case for including Smalltalk as the canonical OO language over Ruby; however, the chosen languages each bring something to the book and represent a number of interesting paradigms.
Chapters: Each language has its own chapter. Each chapter has five sections:
– an introduction to the language covering topics like it’s history, place in the modern language landscape, paradigm, etc
– ‘Day 1′
– ‘Day 2′
– ‘Day 3′
– and a conclusion with a few parting words / ‘the moral of the story is…’.
The boundaries between days are not particularly meaningful but roughly build from “here’s the syntax” to “here’s an interesting thing you can do with this paradigm”. By Day 3 each chapter has moved beyond trivial “hello world” examples; not surprisingly then, the pace of progress is brisk and the details of how to get up and running with each language are largely left to the reader.
Each language chapter includes an interview with a user/creator of the language (Matz, Steve Dekorte, Brian Tarbox, Martin Odersky, Joe Armstrong, Rich Hickey, Philip Wadler / Simon Peyton-Jones). These were an unexpected addition and quite worth reading. In fact, I wish the interviews had been longer and gone into more technical detail.
In addition to the seven language chapters there is an introductory chapter that has the sort of information normally found in the pre-page-numbering introduction to a book (explanation of the book’s contents, intended audience etc) and an excellent final wrap-up chapter (more on it later).
Length: I easily completed each language chapter in a weekend. The first and last chapters are very quick reads. Seven weeks should be more than enough time to work through the book.
Subjective annoyances:
– The quality of the physical book (not great) will be familiar to regular Prag Programmer shoppers. It is not up to O’Reilly standards (it’s more like an Apress book). Although the typesetting is easy to read the top and bottom margins are unpleasantly tight. The outside margin leaves room for notes which I like, but the book is awkwardly square. For $22 what does one expect?
– Each chapter attempts creativity with a supposedly allegorical popular culture reference threaded through it (ex: Io = Ferris Bueller). I found these more distracting than informative. I’d include naming the chapter sections “day n” as similarly failed attempts and wish that instead attempting wit (ex Io Day1: An Excellent Driver) they had substantive names. Obviously this is totally personal opinion, you might like it.
Outright Disappointment: I wish that the individual chapters went into significantly more depth comparing the motivations for and consequences of each language design. While the key features of each language are demonstrated with annotated code samples and explanatory text little is offered in the way of discussion comparing across language. For example the Scala chapter (selected at random) is on pages 121-166 in the index under “Scala” the only references outside its own chapter are found on pages 302, 303, 305-306, and 308 (all in the final wrap-up chapter). I view this as a real missed opportunity given the books unique approach/content. The final wrap-up chapter seems to be the only place with this sort of cross-language discussion and as a result it is both excellent and much too short.
Conclusion: An interesting book that I enjoyed reading and expect to return to in the future. The physical book is of so-so quality and as such the electronic book may be the right product for you to buy. The missed opportunity (and loss star) are for a disappointing failure to draw cross-language comparisons within the text of each chapter.
———-
Update: [...]is a 45 min talk on the book / topics…
Read more
Was this review helpful to you?
|Not interested in the merchandise,
The idea is good – have a brief overview of several programming languages that gather most curiosity in the community. The languages that made it to the book were chosen by the people the author asked beforehand.
Each language is given 3 days worth of chapters. First day is for a = b, second is for [a] = [b] and the third is for “real stuff”. About two thirds of the book are therefore dedicated to simple variable assignments, number literals, containers (lists mostly), and control structures such as if’s.
And herein lies the problem – although great to know that in language X assignment goes like
console> plz let a be 1
a nowz 1!!!oneone
console>
but what does it tell about the language ?
—QUOTE—
I’m confident that this material will capture the spirit of each programming language pretty well…
—/QUOTE—
I don’t think it happened. It would be possible if the author had spent years working in each one. This is not the case, the author had learned the languages himself, took a bite and now explains the fullness and richness of taste. There is no trick here, the author is not pretending he is an expert in everything. All this is clearly admitted upfront. On the other hand a lot is required from the reader too. You are expected to give each individual language a try. Otherwise
—QUOTE—
If you simply read this book, you’ll experience the flavour of the syntax and no more.
—/QUOTE—
Exactly what happened to me. None of the seven languages made me curious because of this book. I was curious about erlang before and I still am. I saw something beautiful behind haskell and I still do. The languages I haven’t seen before, I’m as unsure about now as I was before.
The book doesn’t answer the real questions. You will not *learn* any of the languages. It is at most a bait for a curious programmer having one of his “oh ! interesting !” moments.
I’d recommend this book for someone who is dying to get his hands dirty in just any language but is unsure which one to pick.
Was this review helpful to you?
|