1.4 Don’t Buy This Book

...until you’ve read this section and agree. I am going to make a deal with you. You agree to let me focus on the programming language rather than installation details. My part of the deal is to teach you more in a shorter time. You’ll have to Google a little more, and you can’t rely on me to support your installation, but when you’re through the book, you’ll know much more because I’ll be able to dive deeper.

Please recognize that seven languages is an ambitious undertaking for both of us. As a reader, you’re going to have to stretch your brain around seven different syntax styles, four programming paradigms, four decades worth of language development, and more. As an author, I have to cover an enormously broad set of topics for you. I learned several of these languages to support this book. To successfully cover the most important details of each language, I need to make some simplifying assumptions.

I Will Take You Beyond Syntax

To really get into the head of a language designer, you’re going to have to be willing to go beyond the basic syntax. That means you’ll have to code something more than the typical “Hello, World” or even a Fibonacci series. In Ruby, you will get to do some metaprogramming. In Prolog, you’ll solve a full Sudoku. And in Erlang, you’ll write a monitor that can detect the death of another process and launch another one or inform the user.

The second that I decided to go deeper than the basics, I made a commitment to you and a compromise. The commitment: I won’t settle for a superficial treatment. And the compromise: I won’t be able to cover some basics that you’d expect to find in dedicated language books. I will rarely go through exception processing, except where it’s a fundamental feature of the language. I will not go into packaging models in detail because we’ll be dealing with small projects that do not require them. I will not go over primitives that we don’t need to solve the basic problems I lay out for you.

I Won’t Be Your Installation Guide

One of my biggest challenges is the platform. I have had direct contact from readers of various books using three different Windows platforms, OS X, and at least five different Unix versions. I’ve seen comments on various message boards of many more. Seven languages on seven platforms is an insurmountable topic for a single author and probably for a multiauthor book. I can’t support installation for seven languages, so I’m not going to try.

I suspect that you’re not remotely interested in reading another outdated installation guide. Languages and platforms change. I’ll tell you where to go to install the language, and I’ll tell you what version I’m using. That way, you’ll be working from up-to-date instructions from the same list as everyone else. I cannot support your installations.

I Won’t Be Your Programming Reference

We’ve tried hard to get you strong programming reviews for this book. In some cases, we are lucky enough to get a review from the person who designed the language. I’m confident that this material will capture the spirit of each programming language pretty well by the time it has gone through the entire review process. That said, please understand that I cannot possibly fully support your endeavors in each language. I would like to make a comparison to spoken languages.

Knowing a language as a tourist passing through is far different from being a native speaker. I speak English fluently and Spanish haltingly. I know a few phrases in three other languages. I ordered fish in Japan. I asked to find a restroom in Italy. But I know my limitations. From the programming side, I speak Basic, C, C++, Java, C#, JavaScript, Ruby, and a few others fluently. I speak dozens of others haltingly, including the languages in this book. I’m not qualified to support six of the languages on this list. I write Ruby full-time and have for five years now. But I couldn’t tell you how to write a web server in Io or a database in Erlang.

I would fail badly if I tried to provide an exhaustive reference for each of these languages. I could make a programming guide that’s at least as long as this book on any of the separate languages in here. I will give you enough information to get started. I will walk you through examples in each languages, and you’ll see examples of those programs. I will do my best to compile everything and make sure it all runs. But I couldn’t support your programming efforts even if I wanted.

The languages on this list all have exceptional support communities. That’s part of the reason I picked them. In each of the exercises, I try to have a section that asks you to find resources. This idea is intentional. It will make you self-reliant.

I Am Going to Push You Hard

This book is going to take you one step beyond your twenty-minute tutorial. You know Google as well as I do, and you’ll be able to find one of those simple primers for every language on this list. I will give you a quick interactive tour. You’ll also get some small programming challenges and one programming project every week. It’s not going to be easy, but it will be informative and fun.

If you simply read this book, you’ll experience the flavor of the syntax and no more. If you look online for the answers before trying to code the exercises yourself, you’ll fail. You will want to try the exercises first, fully recognizing that you’ll fail at a few of them. Learning syntax is always easier than learning to reason.

If you find yourself nervous after reading this description, I suggest that you put down this book and pick up another. You won’t be happy with me. You would probably be better served by seven different programming books. But if you find yourself excited about the prospect of coding better quickly, let’s push on.