Saturday, February 28, 2009

My Dangerous New Obsession

I think if I had to blame anyone, I'd start with Alan Kay. I recently read the following quote by him:

I think it is safe to say that most of the Squeak community is dedicated to making this Smalltalk more useful and accessible, and not devoted to making something so much better as to render Smalltalk obsolete (a fate I would dearly love to see happen).

Alan Kay wants smalltalk to go away? Well, if I'm going to use the man's language I should also have the decency to try to improve upon it and replace it.

So that was the start of a tiny little snow ball. And the snow ball grew. And now I find myself keeping notebooks full of ideas for creating a new programming language.

And that is my obsession. I've got it in my head that I could create a new language. And that this is somehow a good use of my time. So I'm constantly comparing and contrasting the various features that different languages have. Looking for a good idea to steal or a wart to avoid. I've been shopping around for language parsers and VMs to use.

And you know what? It's fun as hell. I actually don't have any illusions that I'm going to set the world on fire or that anyone but me will ever use my language. Or, let's be serious, that there is much likelihood that I will get past the vaporware stage. But I really feel like I'm seeing the landscape of languages with new eyes. Sort of like when you take a class on drawing and your brain starts learning how to do the "switch". And you can almost magically just draw things. I feel like my eyes are really seeing languages and language features for the first time.

So what is my language like? Not much. I've actually been avoiding trying to commit to any specific syntax. Which is probably going to make it lisp like if I'm not careful. (Not that there's anything wrong with that). When I start committing to various features it's been coming out something like a pythonized haskell (or a haskellized python) with strong nods to smalltalk minimalism. In a word its sort of an incoherent jumble. But I keep circling around and trying new things.

And like I said it's really fun. And I'm learning a lot. (And I've become addicted to starting sentences with "and").

I wonder if this is a common or rare affliction. I've never met anyone who said that they were trying to create their own language. Perhaps others are too smart to go down that road in the first place or too ashamed to admit they did and failed.

In any case, be prepared for the next big thing. Any decade now....


country mouse said...

ieeee, run away!!

seriously, new language creation is a task professors give to grad students that they want nothing to do with. language creation is the province of geeks with way too much hubris. this wouldn't describe you by any chance?

I must confess that I have the bones of a couple language design ideas in my closet and I have committed the task of ultimate hubris in creating a web framework with its own markup language[1]. I admit I thought I had a chance at forgiveness because the design focus was for handicapped people like myself.

If you really want something interesting to work on, I have at least three or four projects that need talent and are aimed at changing the way we look at user interfaces, at least for disabled people.

But no, I suspect you'll be like I was and keep playing with creating your own language. :-)

[1] from an actual working application. Layout is a bit whacked because the parser I inherited is primitive at best. Really need a new parser.:

[callout [side right] [div [id custform][heading [level 2]Free white paper]
Get our white paper on three things companies do wrong when complying with 201 CMR 17.00. (Required fields in [bold bold]).
[form [id cust_info]
[action javascript:wpsubmit(document.getElementById('custform'));]
[method post]
[cell [bold Name:]][cell [Text [name customer][size 25]]]
[cell Company:][cell [Text [name company][size 25]]]
[cell Phone number:][cell [text [name phone][size 25]]]
[cell [bold E-mail address (for white paper delivery):]][cell [text [name eaddr]
[size 25]]]
[cell [button [name swp1] [value Get Whitepaper Now] [type submit]]]

dustbunny said...

Well, I had a bowl of hubris flakes this morning, so, yeah.

I have trouble spending my oh so precious spare time on things that I think will be useful. Helping to create a a framework that will assist people will never be able to compete with wasting time on a halfassed language that no one will ever see.

My not so secret ulterior motive in all this is that I want to learn more about pypy and this will give me an excuse to look at how a virtual machine works behind the scenes.