The first leg of our journey into the Realm of Racket went well. We're halfway through Chapter 3 now, so we've completed 4 sections (if you count the Preface and Introduction). Ariel's response was "I like programming, it's not as boring as I thought." High praise, indeed!
Cracking the Cover
Realm of Racket is clever and well written, and it turns out to be based off of Conrad Barski's Land of Lisp (a powerful tome which I now possess).
Both books include a short history of Lisp, but neither history focus on Lisp's alien influence - though we know what the 'A' in 'AI' really stands for ;)
We're doing our Racketeer apprenticeship with Chad, the comic strip star of Realm of Racket.
Chad is sad. He's sad because he's unsure about his future. But Chad has strength of character, and he downloads Racket instead of indulging in the traditional college slacker pastimes of beer pong, bongs and marathon gaming sessions.
Not all of the illustrations center around Chad, and they do demonstrate Racket and programming concepts in a simple, easy to understand way.
DrRacket is the Racket program development environment (PDE) - often referred to as an interactive development environment (IDE). The key difference between PDE and IDE can be summed up like so:
DrRacket alone makes Racket a good first choice for learning how to code. There's no complicated setup or key mappings, making it easy to just dive in and start coding.
It has an interactions panel (REPL), and a definitions panel (editor). You test your code in the interactions panel before adding it to the definitions panel, and Ariel enjoys running the book's sample code in the interactions panel.
Did I mention that DrRacket is included in the Racket download? And that Racket is so easy to install that a Cro-Magnon could do it?
Parens? Yeah, OK
Parens are another thing that makes Racket a good first choice for learning how to program - Ariel was able to grasp the concept immediately - you know, the whole order of operations thing that is taught to virtually every kid in their math classes. We're not the only ones to experience this, as Dr. Prabhakar Ragde notes in his post: Teaching programming to a nine-year-old
The parentheses appear to be one of the main criticisms of Lisp. I understand why syntax is important - the Racket syntax was a deciding factor for me when choosing a first programming language for Ariel. She was already familiar with algebraic notation and parentheses, and I didn't have to explain why, say, indentation is a hard syntax requirement.
I'm not picking on Python; my point is that I want Ariel to experience minimal complication while learning to program, and so far Racket really fits the bill. Everything just works right out of the box, and batteries are included.
She Got Game
Realm of Racket teaches programming One Game at a Time - and Ariel was able to code her first game. In the process, she learned a bit about binary search, logic, and defining variables and functions.
And it got her thinking. She made an interesting observation about the game, which I may present in a future post if our testing supports it.
That's how long it took us to get through the first sections of the book and for Ariel to complete the game. And a lot of that time was me showing off and over-explaining stuff.
The Best Part?
We had fun.
It's great to see your kid write their first game, then play it afterward. I had forgotten what that feels like. And Realm of Racket really makes it a pleasant, fun experience.