2006-03-03

Full circle

Three years ago, I wanted to get out of the house on a Saturday. I was living with my parents at the time, to free up more of my capital for the company I was running. I was basically living for work; my only real hobby was going to coffee shops and programming. (Some things never change.)

I'd heard mention of a new coffee shop in Cave Creek, but hadn't been there. It was owned by the father of another Foothills Academy alum. I decided to give it a shot — Cave Creek is a lot closer to my folks' house than Scottsdale or Phoenix, so it was a quick drive.

The coffee shop turned out to be nice, and I holed up in the corner with my laptop (a 75mhz Pentium I'd assembled from parts). I was beginning to think about programming language design, and had just spent several weeks deeply immersed in Ruby. Ruby had charmed me with its simplicity and consistency, but occasionally did things that came out of nowhere and bit me in the ass.

After setting up my confuser, I made a lap through the coffee shop, scoping the place. In the back room I found a bookshelf, laden with random books — probably collected from garage sales — and fell into orbit around it. Most of the books were uninteresting; a lot of mystery novels, Tom Clancy stuff, and pet care books. One, in particular, jumped out at me.

"Digitalk," its spine said, "Smalltalk for the IBM PC."

I giggled. I'd heard of Smalltalk — I remembered it from an old 1983 issue of Byte I'd found in my father's garage. This book seemed wildly out of place at a coffee shop. It followed me back to my table.

I launched into the book, and it took no more than a few pages for the epiphany to hit. This was a Language, in the style of LISP — this was something with an Idea behind it, something with a Philosophy. This was the language that had given birth to modern programming — I knew that before I opened the book — but I hadn't realized how much of its vision had been lost along the way.

Ruby quickly began looking a bit dull. It was clearly an attempt to shoehorn the ideas of Smalltalk into a language derived from Perl, and boy, did it show. Ruby was the shadow cast on the wall of Plato's cave; Smalltalk wasn't even the source of the shadow: it was the source of the light.


So, here I am three years later, at that same coffee shop. The book is gone, appropriately enough, but my conversion is more or less complete. In these three years I've grown personally, gotten a much better job, and moved to California; in that same time, I've viewed programming through the lens of Smalltalk, and worked out ways to apply its ideas to modern programming. Mongoose, my pet language, is the result — and it's what I'm working on here at the shop.

At the same time, it's probably good that the book is gone. Alan Kay, creator of Smalltalk, warned that people who learn a language based on an Idea tend to crystallize their perspectives: they have a hard time thinking in any other way. It happens to LISPers, it happens to Smalltalkers, it happens to Perl programmers (though Perl's big Idea is its explicit lack of an Idea). I've been working to avoid this, happily stealing ideas from Scheme, C#, and ML — three languages about as far removed from Smalltalk as Mandarin or ASL are from English.

One of the easiest ways to attack Esperanto is to point out its close ties to Latin. "How can a language be universal," its critics say, "when it's so heavily Romance-based?" While this may or may not be a valid point, there's another, more subtle side to this. The real danger of basing something on an existing idea is the possibility that it's wrong. Esperanto went with Indo-European inflection to show noun role, but it looks (from linguistic history and the development of creoles) like languages tend to move toward positional grammar over time.

I came here looking for the book, I admit, but it's probably good that it's gone. My language is very close to working, having printed its first "Hello, world!" at about 1AM this morning. Now is probably exactly the wrong time to reinject a heavy dose of influence from the Smalltalk camp. Several parts of the Idea seem wrong now, but it's very persuasive. Best to keep it away until my own Idea crystallizes a bit further.

1 Comments:

At 11:45 AM, Blogger b.i.t. said...

I love that "proud parent" feeling as your language takes its first tottering steps. "It 'hello world'ed!"

(Course now that Don Hertzfeldt [sp?] cartoon is in my head of the baby tottering adorably and then falling down the seven mile stairway.)

This is also a reminder that you should write again soon because I am bored at work during the day. :-D

 

Post a Comment

<< Home