...if you are a competent programmer who wants to grow. That claim might seem a little nebulous, but indulge me.
Dave Thomas is one of the founders of this publishing company. He has challenged thousands of students to learn a new language every year. At worst, by learning languages, you’ll learn to fold new concepts back into the code that you write in your chosen language.
Writing this book has had a profound impact on the Ruby code that I write. It is more functional and is easier to read with less repetition. I reach for mutable variables less and do a better job with code blocks and higher-order functions. I also use some techniques that are unconventional in the Ruby community, but they make my code more concise and readable.
At best, you could launch a new career. Every ten years or so, programming paradigms change. As the Java language became more limiting for me, I experimented with Ruby to better understand its approach to web development. After a couple of successful side projects, I pushed my career hard in that direction and have never looked back. My Ruby career started with basic experimentation and grew into more.
Many of the readers of this book won’t be old enough to remember the last time our industry switched programming paradigms. Our shift to object-oriented programming had a couple of false starts, but the old structural programming paradigm was simply unable to handle the complexity required for modern web applications. The successful Java programming language gave us a hard shove in that direction, and the new paradigm stuck. Many developers got caught with old skills and had to completely retool the way they thought, the tools they used, and the way they designed applications.
We may be in the midst of another transformation. This time, new computer designs will be the driver. Five of the seven languages in this book have compelling concurrency models. (Ruby and Prolog are the exceptions.) Whether or not your programming language changes right away, I’m going to go out on a limb and say that the languages in this book have some compelling answers to offer. Check out Io’s implementation of futures, Scala’s actors, or Erlang’s “Let it crash” philosophy. Understand how Haskell programmers leave mutable state behind or how Clojure uses versioning to solve some of the most difficult concurrency problems.
You can also find insight in surprising places. Erlang, the language behind the scenes for several of the cloud-style databases, is a great example. Dr. Joe Armstrong started that language from a Prolog foundation.