A lot has been written about LISP and it's magical powers and how it has done all the things modern languages do 50 years ago and so on and so on. Wise men praise LISP for decades but the mainstream resists to follow. To finally understand the whole debate a little better I decided to read a book about it (well, I tried the little elefants book before and that shure taught me recursion but it's not the same). Not planning to make it my main language Racket appeared to be the ideal dialect (a dialect of scheme which is a dialect of LISP but what the heck, I want to get the ideas behind all that detail...). It is great for test-driving as it is easy to install, comes with batteries included and leaves enough room for further development towards other interesting topics (planning to learn some logic programming in the future?) You just don't have to worry where to get the GUI libraries, database connection, what IDE to use... - it's all just there and it has very good documentation at your fingertips and it has passed the test of time (back when it was callt PLTScheme...). The backside of Racket: If you like learning from books, you have little choice. How to design Programs (HtDP) is an old book, the new version being online to read for years and Realm of Racket. I like dead tree that I can read in a hotel with fragile internet connection and on the beach with no internet connection. So this is, what you get (go learn Java if you need a lot of choices in books...). The title with "Games" and the pictures leave the impression of a programming book for newbies. Well, it is not. The fast pace in which concepts like a REPL, recursion or functions being passed to functions or the lot of (for) functions is handled is good for people with a little experience in functional programming. The games are not trivial but their construction is not described in the book. It's a "read the code to see more, we'll only explain the new concepts herein" approach. Again, that's not for a newbie programmer and experienced programmers may like this or not. I passed the "read the code to the whole program" part and was busy enough reading the book. Games are used as examples in order not to shy those away who are bored of computing fibonacci numbers with each new language again. Even for someone with no interest in writing games this is not a bad approach. For someone with sincere interest in game development: Games are a means of teaching in this book. It is not really a book about game development. I'm having real problems trying to figure, whom this book is for. It is easy enough for light reading but heavy in content. Some important aspects are covered very shortly. There is a kind of appendix called "Close Paren" where object orientation in Racket ist explained in 4 pages and macros are described in another 4 pages. Not enough for me to grasp, why macros apparently are what helped Paul Graham beating the averages. So in a way, the book did not do what I read it for (see above). Why still 4 stars? It is not a 5 star book, but the book made me start programming in Racket. I finished the first usefull programm within three or four days. It used lots of things that are not covered in the book (drawing on canvas, building input forms, making menus,...) but I was able to read the built-in help and draw the necessary information out of it for everything I planned to do. I now plan to write something new in Racket, that was originally planned to be programmed in another language. So in a way it helped me a lot towards Racket and that's worth 4 stars.
If you are patient enough you can learn a lot about the main authors intentions on this book on youtube here: [...] and you can preview some of the games that are not truely programmed within the book here: [...]
I was looking for a compact documentation of the Racket language and IDE to understand some code snippets in the dissertation of Neil Toronto about "Trustworthy, Useful Languages for Probabilistic Modeling and Inference". Racket is an extension of Scheme which is an extension of Lisp - the language of symbolic AI -. RoR is the only reference to Racket in book form. Unfortunately it is not addressed to academics but to newbees in programming. Similar in style to Conrad Barski's "Land of Lisp" it is devoted to "Learn to Program, One Game at a Time!" (this is the subtitle). Concepts range from simple functional programming to higher functions with nested lambdas, lazy evaluation, memoization, to imperative programming with states and guis. I would be glad if I had such an introduction nearly forty years ago. At that time I had to learn imperative Algol for solving dull numerical problems. Learning Racket makes it necessary to switch to a different language when doing some serious programming afterwards. Clojure is a natural follow up language. Scala is not bad too. Martin Odersky feels himself in the tradition of Abelson & Sussmans seminal book "Structure and Interpretation of Computer Programs". So beware, when learning Racket you later have to move on to a second production language. What's the rating? 5 stars for the didactic concept, minus 2 stars for the verbose sophomore-orientated style and the missing references.