Republished from Books on Code
But some of us hopped on the bandwagon early, having read the 2nd edition and not sure if the 3rd edition is worth it. Maybe some of us have inexpensive access to 2nd edition print book, wondering if that's a suitable edition to read.
Amazon reviews of the title state the following:
- This book is a delight. Reading it is like a warm cup of tea on a cold winter day. The way the ideas are presented is very clear and dare I say, 'Eloquent'.
Changing a living, widely used language in such a radical way turned out to be politically difficult, and work on the version 4 was abandoned in 2008, leading to the much less ambitious version 5 coming out in 2009. We're now at the point where all major browsers support version 5, which is the language version that this book will be focusing on. A version 6 is in the process of being finalized, and some browsers are starting to support new features from this version.
Changing a living, widely used language in such a radical way turned out to be politically difficult, and work on the version 4 was abandoned in 2008, leading to a much less ambitious version 5, which made only some uncontroversial improvements, coming out in 2009. Then in 2015 version 6 came out, a major update that included some of the ideas planned for version 4. Since then we've had new, small updates every year.
In these contrasting quotes, I intentionally left some overlap to show that some of the language has not changed from one book to the other. If you are a fan of the original, you will find much has not changed. For example, the introductions between versions are nearly identical, with the same sections: "On Programming," "Why Language Matters," and so on. The illustration has changed, as has the opening paragraphs.
And if you are concerned about it being ECMAscript 2017, which is soon-to-be 3 years old, feel safe knowing that the major update was in 2015. ECMAscript releases annually, making catch-up easy. Once you understand the major features, you can look up release notes or articles to brush up on the new features.
What do I mean by better written?
The 3rd edition book cuts needless words and simplifies language. The writing is tighter and with a sharper eye toward technical writing. In my free email course on Getting the Most From Technical Books, I advice to "read only good technical books," but "good" can often be hard to define.
Good technical writing removes all ambiguity. Good technical writing is simple and easy to understand. Good technical writing does everything it can to remove barriers to understanding. That means good technical writing digests the materials and presents them well. It never makes you feel stupid, which I also talk about in How to Read Programming Books.
For example, the book is more conscientious about conceptual information by putting definitions in italics and defining terms immediately and in simple terms.
The 3rd edition also uses shorter sentences and few complex sentences, which improves readability.
This is a book about getting computers to do what you want them to do. Computers are about as common as screwdrivers today, but they contain a lot more hidden complexity and thus are harder to operate and understand. To many, they remain alien, slightly threatening things.
This is a book about instructing computers. Computers are about as common as screwdrivers today, but they are quite a bit more complex, and making them do what you want them to do isn't always easy.
You can see that the paragraphs are the same, but revised.
Here are a handful of choices made in this first paragraph:
Instead of the wordy "getting computers to do what you want them to do," it is simply "instructing computers." Brilliant.
The 2nd edition uses the trite word "thus," which is removed.
Bigger phrases like "hidden complexity" is swapped for "are quite a bit more complex." This is easier to conceptualize, as "hidden complexity" is a loaded phrase.
The 2nd edition uses the phrase "they remain alien," which is removed in the 3rd edition. The word "alien" has many dictionary definitions, which can be hard on non-native English speakers. The choice to remove that phrase is smart.
The first paragraph is perhaps the most important cluster of words in a book. In the first paragraph alone, the many tiny choices are smart, which sets the scene for the rest.
You may be thinking that "Electronic Life" sounds like a synonym for "A Robot," but trust me --- the projects are different. This new one is about graphs and Dijkstra's algorithm, whereas the 2nd edition exercised focused on a two-by-two grid.
Also, this new project is more advanced and more challenging.
Our project in this chapter is to build an automaton, a little program that performs a task in a virtual world. Our automaton will be a mail-delivery robot picking up and dropping off parcels.
Our project in this chapter is to build a virtual ecosystem, a little world populated with critters that move around and struggle for survival.
The project description of the 2nd edition may sound familiar to you. Having taken a number of programming classes, I have done the "Electronic Life" project twice already, which I know as the "Game of Life."
But I have not heard of the mail-delivery robot project. Immediately, I am more intrigued. This is not an out-of-the-box computer science course assignment.
The "A Robot" project comes with an adorable map where your robot makes deliveries.
The "A Robot" project does not disappoint. It presents you with a 16-bit map of buildings along with an array called
roads. Each item in the array contains a string:
a building + " - " another building. The assignment also provides additional code to parse the array into more useful data.
The fun part is the assignment: get the robot to decide on the best route to make its deliveries. It's a good assignment that uses principles learned in data science & algorithms classes. I highly recommend the book, Grokking Algorithms. Chapter 7 of Grokking Algorithms details Dijkstra's algorithm. This could be good supplemental material for the exercise.
With that, I will see you in the next article. 👋😊