When developers argue over which programming language is the best one for beginners, names like Python, C#, and even Assembly are often tossed about. One language you will rarely see in that conversation, however, is Racket, a Scheme-based language originally created for educational purposes. But according to John Carmack, the co-founder of id Software and creator of such classic FPS games as Wolfenstein 3D, Doom, and Quake and widely considered to be one of the greatest living programmers, Racket is a great choice for a starter language, at least for kids.
Last summer, Carmack’s young son Ryan released his first video game, called Angry Face, a Pong-like game with multiple difficulty modes. Last week, the 10 year-old followed it up with a new game called Fly, in which you try guide a winged character named Barb B. Queue through the sky, avoiding clouds and gathering treasure. It has 45-levels and multiple modes of play, including a “grandma mode” for slower play. Players can also design their own levels.
The game is fun, and you can see the growth in Ryan’s skills from Angry Face to Fly. However, unlike Angry Face, which was created using C# and the Unity game engine, Fly was written using the Racket and its DrRacket IDE. As Carmack wrote when announcing the game to a Racket users group, he feels that Racket is a better choice for beginning programmers, particularly when compared C#.
“Unity/C# can be incredibly rewarding, but the entire ecosystem almost drives you away from programming as a beginner -- find the right script on the asset store and figure out how to configure it in the editor, rather than reinventing the wheel and writing it yourself.
One of the non-obvious things that I think is beneficial with DrRacket is that it has an approachable complexity level. Dropping a newbie into Eclipse or MonoDevelop makes them feel like they are walking around in a byzantine museum, afraid to touch things, while DrRacket feels closer to old-school personal computers where you felt like you were in command of the machine.”
For extra emphasis, Carmack said on Twitter that he feels “really good about Racket / DrRacket as a path to good programming.”
Carmack also wrote that he found that Racket did a better job of keeping his son engaged. “[Ryan] reacted very positively to the initial ‘intro to racket with pictures’,” Carmack wrote, “which was a contributing factor to settling on Racket. Java / C# work seemed to feel more like homework, but changing numbers and colors in the REPL had him smiling and excited.“
However fun programing in Racket may be, when you’re dealing with a 10 year-old, even one whose dad has won multiple Emmy awards for his software development prowess, the kid may still need some parental prodding to work on his or her coding. “I would love it if [Ryan] found it endlessly fascinating and spent all day programming on his own,” Carmack told the Racket group, “but he does need a bit of a push from mom and dad. He enjoys it, but given the choice, he would still rather play games than make them :-)”
It’s hard to blame the kid.