|New Reviews| |Software Methodologies| |Popular Science| |AI/Machine Learning| |Programming| |Java| |Linux/Open Source| |XML| |Software Tools| |Other| |Web| |Tutorials| |All By Date| |All By Title| |Resources| |About| |
Keywords: Racket, Lisp, DrRacket, Programming Title: Racket Programming the Fun Way: From Strings to Turing Machines Author: James W. Stelly Publisher: No Starch Press ISBN: 978-1718500822 Media: Book Verdict: Very highly recommended. |
I have to admit that I've never really taken a shine to programming languages along the Lisp line of descent. There's a long and distinguished history of course, and numerous variants such as Scheme, Clojure, Hy and more. It's not that I'm only comfortable using one programming paradigm — in my time I've professionally used assembler, C, APL, Visual Basic, Java, Powershell and half a dozen others. But for one reason or another nothing Lisp-like has ever appealed. Paul Graham did a good job expounding on the virtues of Lisp, but even that wasn't enough. Until now — and until this book.
This is a book for hobbyists — it's not a manual to teach you to program or help you get a job writing code. And beware that the word fun in the title is a specific kind of fun, the kind that appeals to people who like recreational mathematics or exploring abstract ideas with code. If that's your idea of fun, and I have to admit some tendencies in that direction myself, then this is the sort of book that might appeal to you.
To start at the beginning, Racket is a Lisp-like programming language with a large and active user community and ecosystem. DrRacket is an integrated development environment that is known for being beginner friendly while have extensive support for real development tasks such as refactoring, package management and so on. And, it should be no surprise, DrRacket is used throughout this book.
The opening chapters start on the basics — syntax, terminology, lists, s-expressions and the kind of dry material that is hard to spice up and make interesting. In any case the material starts to get more interesting as soon as this core stuff is out of the way. It's worth persevering because the more interesting topics start emerging pretty quickly. The author does a great of highlighting the power of the language — the concision, the flow, the ability to distil a problem. At time it's impressive just how much can be achieved in a few lines of Racket code. For those of us using more verbose languages the difference is striking.
Given what was said earlier, it should be no surprise that mathematical topics are fairly frequent — Fibonacci sequences, factorials, mathematical functions and their plots, Tower of Hanoi and more. Along the way a range of language features are covered — from different language dialects, to graphics primitives, IO, user interfaces and so on. The content is of a uniformly high standard — and code examples are extended and enhanced to produce quite complex bit of functionality. The final application, in chapter 10, creates an interactive algebraic calculator. It's a really nice little application — a proper application rather than a toy — and is a good way of showing how powerful Racket can be.
Overall, as you'll have guessed, this is a book that gets my vote. It's hard work in places, and you'll need to put some effort in if you are get anywhere, but then that's exactly the kind of fun that the book promises from the outset.