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.
Bruce Tate runs RapidRed, an Austin, TX-based practice that consults on lightweight development in Ruby. Previously he worked at IBM in roles ranging from a database systems programmer to Java consultant. He left IBM to work for several startups in roles ranging from Client Solutions Director to CTO. He speaks internationally and is the author of more than ten books, including From Java to Ruby, Deploying Rails Applications, the best-selling Bitter series, Beyond Java, and the Jolt-winning Better, Faster, Lighter Java.
Comments about Pragmatic Bookshelf Seven Languages in Seven Weeks:
What first attracted me to this book is its coverage of several languages that I know little or nothing about. For reasons mostly due to chance, I've been exposed to only a handful of well-known programming languages, during my professional career. Recently, I've been quite intrigued by Erlang's concurrency model and robustness even though there is no place for it in my day-day tasks. Having the opportunity to read about Erlang being evaluated against other languages was just what I wanted. So, I took the red pill and found out just how deep the rabbit hole goes.
"Seven Languages in Seven Weeks" covers Ruby, Io, Prolog, Scala, Erlang, Clojure and Haskell. These languages were chosen as of the result of a survey. When the data was tallied, 8 potential candidates remained. Given that there are so many languages around I'm quite surprised that the initial list was so small. That speaks a lot of the languages that ended up in the book.
First off, I like this book a lot. It starts off with a brief, one-paragraph introduction on each of the languages. There's just enough information here to let you know what to expect in each of the chapters. This book follows a pragmatic consistency from beginning to end.
The structure of each chapter is logical and concise which makes it easy for the reader to compare and contrast elements of each language. I also like the history and language development sections as well as interviews with the language developers. Each chapter concludes with a nice "Wrap Up" segment which summarizes key areas of each language, such as performance, mutability, weaknesses, strengths, readability, etc. In fact, the final chapter is a "Wrap Up" of the whole book. I don't know of a better way to conclude this book.
The size of the book is a modest 317 pages, but it delivers a plentiful and concise overview into each of the seven languages. The book is just the right size to catch the reader's interest, introduce them to language basics features and fun, without overwhelming them.
I couldn't help but wonder if there would be a follow-on title comparing and contrasting another group of languages. And if so, which languages would they be?
The introduction concludes with the following statement:
"When you're through, you will not be an expert in any of these languages, but you will know what each uniquely has to offer"
I agree.
I can't say enough good things about this book. If you've worked with many languages in this book, you probably won't be as interested in this book as I am. However, if you've had a career like mine which hasn't exposed you to more than a few languages, this book is a must-have for your collection. It may even inspire me to delve into another language, after I get my head around Erlang and FP concepts.