"Reverse" game update -- my language safari
My “Let’s play a game” post, featuring a simple number game implemented in three different scripting languages, has received many comments and updates in the few weeks it’s been up. There are now twelve implementations, seven written by me (wide variations in quality!) and five contributed by readers. The languages represented, as of today: Haskell, Io, JavaScript, Lisp, Logo, Lua, PHP, Prolog, Python, REBOL, Ruby, and Scheme.
I’ve learned a hell of a lot, and gotten some good ideas about which languages might be rewarding to dive into further. My favorite new discovery so far is Io. It’s clean, simple, consistent, and yet very pragmatic at the same time (e.g. lots of useful bindings, embeddable, etc.). The messaging syntax feels very natural, and the lack of brackets (cf. Objective-C) gives more than just visual relief: you don’t have to backtrack to the beginning of the expression to insert a bracket when you decide you need to chain one more message on the end.
As time permits I hope to also check out a few more languages (Slate or OCaml or, hell, even C#) and then pick one of the new-to-me languages for further study throughout the year (following the advice of the Pragmatic Programmers).
My criteria, broadly, are that the language should be: 1) fun 2) significantly different from Python (my primary work language these days) and 3) applicable to my own work in some way (so that I’m more likely to use and really learn it).
This survey has also been a chance for me to size up Python against a number of other options. For the most part it has reaffirmed my choice to center my coding work around Python for the foreseeable future. If I didn’t already know Python it would likely be at the top of the list.