Over the past year, most of the programming I’ve done has been for sytems most people would call underpowered - Apple ][ emulators over the summer and now PocketPC. I may perhaps be overly fascinated by programming in highly constrained environments, but I think there’s a lot to be said for that.
I’ve written about this before, in The Strange Pleasures of J2ME, but it’s striking me more and more that the constrained environments of PDAs and similar devices resemble the Apple ][ environment I learned on, and that maybe there’s an opportunity here.
Right now, both J2ME and .NET Compact Framework programming seem to be treated as special hard cases for which experts are needed, harder cases than ‘ordinary’ J2SE or .NET programming. Some of that is reasonable - after all, experienced programmers already understand the languages, and there’s less hand-holding available in the smaller editions. A lot of the books I’ve seen on these subjects address them from the “what’s missing?” perspective, assuming a huge amount of prior knowledge and showing developers how to make up for familiar pieces which have been dropped.
That perspective seems to me to be missing something huge. Rather than bemoaning the loss of features, why not look at this as an opportunity for people to learn programming in a very cool environment that spares them the overhead of 1000-page books on GUI design. The GUIs in these environments are small enough that it’s possible to construct them by hand without massive headaches. Data structures are generally simpler too.
In an age where gadgets seem to be more and more the rage, why not make it easy for people to create programs for their gadgets? Heck, call programming “advanced customization”, and maybe we’ll find a whole new generation of budding programmers at the gates.
(J2ME currently provides some support for this enthusiast vision because of the zero pricetag of their basic tools. Just getting started in the .NET Compact Framework requires a $550+ investment in Visual Studio .NET, something I hope will change.)
Can cool gadgets and simple environments bring more people into the craft of programming?