Want People to Use Your Language Under Windows? Do This.

Whenever I hear about a new programming language or new implementation of an existing language, I usually find myself trying it out. There's a steep cost--in terms of time and effort--in deciding to use a new language for more than just tinkering, so I'm not going to suffer through blatant problems, and I admit to being sensitive to interface issues. Nothing gets me disinterested faster than downloading and installing a new language system, double-clicking the main icon...

...and being presented with an ugly little 80x24 character Microsoft command window using some awkward 1970s font.

(Now before the general outcry begins, be aware that I'm a regular command line user. I've used various versions of JPSoft's enhanced command processors for Windows for close to 20 years now, and I usually have multiple terminal windows open when using my MacBook.)

The poor experience of this standard command window is hard to underestimate. It always starts at a grid of 80x24 characters, even on the highest resolution of displays. Sometimes even the basic help message of an interpreter is wider than forty characters, causing the text to wrap in the middle of a word. The default font is almost always in a tiny point size. Cut and paste don't work by default, and even when enabled they don't follow standard Windows shortcuts. And, rather oddly, only a small subset of fonts actually work in this window.

It's possible to do some customization of the command window--change the font, change the font size, change the number of rows and columns of text--and these will take it from completely unacceptable to something that might pass for 1980s nostalgia. But that's a step I have to take manually. That initial double-click on the icon still brings up everything in the raw.

Basic aesthetics aside, the rudimentary features of a monochrome text window limit the opportunities for usability improvements. I'm always surprised at how many Windows ports of languages don't even let me access previously entered commands (e.g., using up-arrow or alt-P). Or how about using colors or fonts to differentiate between input and output, so I can more easily scan through the session history?

If you want me to use your language--and if you care about supporting Windows at all--then provide a way of interacting with the language using a real Windows application. Don't fall back on cmd.exe.

Some languages are brilliant in this regard. Python has the nice little IDLE window. Factor and PLT Scheme have gone all-out with aesthetically-pleasing and usable environments. Erlang and REBOL aren't up to the level of any of these (Erlang doesn't even remember the window size between runs), but they still provide custom Windows applications for user interaction.