October 30, 2011

Common Lisp is the best language to learn programming

Now that Conrad Barski's Land of Lisp (see my review on Slashdot) has come out, I definitely think Common Lisp is the best language for kids (or anyone else) to start learning computer programming.

Between Land of Lisp, David Touretzky's Common Lisp: A Gentle Introduction to Symbolic Computation (really great book for people new to programming, available for free) and The Little LISPer (3rd edition, editions four and up use Scheme) you have three really great resources to get started.

Lisp's syntax is a great advantage because it is so simple to learn and has so few special cases. The interactive, iterative development style and real late-binding means you can build programs in parts and add to them as you go. The presence of real metaprogramming means you always have the ability to look at any part of your program and its state to find out what it's doing/what's wrong. The HyperSpec and Common Lisp The Language are two of the best programming language reference manuals ever written.

The best parts about Common Lisp are that it's a language that's hard to outgrow and that it makes difficult things easy. One of the chapters in Land of Lisp explains HTTP and HTML and has you build a basic web server. That chapter is only 15 pages! There's tons of ideas in the language, and because you're not restricted to a particular programming paradigm, you're always discovering better ways of doing things and developing a personal style.

October 14, 2011

The new digital divide

Steve Jobs passed away last week.

Kieran Healy wrote a wonderful examination of his role at Apple. But there is one thing in there that bears a closer look:

Jobs wanted people to love his products, take care to notice their craftsmanship, and be creative with them. They were supposed to help you make and do awesome things. But this love and attention to creativity was not extended to those involved in the manufacturing process.
I've been meaning to write about this subject, and now seems a good time.

The iPad, the iPhone, and the Apple App Store are not leading to a new age of digital freedom and creativity. They are creating the real digital divide.

Original PCs used to ship with a Basic interpreter. When that stopped, you could still get a programming language implementation without too much trouble. But Apple goes out of its way to make the iPad and iPhone not programmable by anyone except a self-selected caste of "developers."

The awesome things you can do with the iPad have very real limits. Limits that are unnecessary, artificially imposed, and at core opposed to iPad's essence as a programmable computer.

Ellen Rose wrote about the infantilization of computer "users" in User Error: Resisting Computer Culture, but few products until the iPad have shown how literal this effect is. Consider Apple's marketing:



Does the above image remind you of anything?



Further evidence of how literal the infantilization has become is the infamous "fart app" - it is nothing but a direct throwback to the anal stage of Freud's model.

Richard Stallman made a poorly received comment on Jobs' legacy upon news of the latter's death. I think the negative consequences of the iPad extend well beyond Apple's hostile and exploitative stance towards Free Software