Inference for R lets users nest the R statistical language in Word and Excel. It’s a neat idea, and another example of the kind of bottom-up innovation that I predict will eventually lead to fully-fledged extensible programming systems. (If Bespin made it easier to do things like this, I might understand all the excitement…)
Extensible Programming, Research, Software Carpentry
Mozilla Labs just announced Bespin, “…an open extensible web-based framework for code editing that aims to increase developer productivity, enable compelling user experiences, and promote the use of open standards.” It might actually be true — check out their screencast.
Extensible Programming
Several people have created family trees to trace the evolution of programming languages (see, for example, the Mother Tongues chart). Given the news that closures are being added to Objective-C, I’d like to see someone trace the ideas that make up programming languages, such as user-defined data types, generators, forall constructs, and so on. These seem to me to be like “jumping genes” (more properly called “transposons”) that can move from one organism to another. Maybe UPL (the Ultimate Programming Language) isn’t going to evolve; maybe it’s going to accrete…
Extensible Programming
InfoQ has an article on “Writing a Textual DSL (Domain Specific Language) Using Oslo“, which is Microsoft’s whiffy new sort-of-extensible programming system. It makes Scheme (and even Ruby) look pretty…
Extensible Programming
I’ve grumbled before about the fact that mass-market tools like Firefox and Microsoft Word allow people to mix pictures and text, but programmers’ editors (including IDEs) do not. My standard answer when people ask why I’d want that is, “So that I can put before and after pictures of data structures for methods, just like I would in a textbook.” Discussion about the Django port of DrProject has brought up another use case, though. Suppose you need to initialize a set of objects for a test fixture, and their mutual reference graph contains cycles. Using text, you have to do things like this:
left = Something(null)
right = Something(left)
left.setPartner(right)
It’s non-declarative, it’s error-prone, and worst of all, you have to relax the error-checking in classes so that they can be initialized in states that you don’t want them to be in the real program.
Now, wouldn’t it be great if you could just draw what you want? Imagine an editor that would let you create two circles (one for left, one for right) and join them up with arrows labeled “partner” to show the final state you wanted. A combination of clever compilation and reflection could then stitch everything together for you. What’s even nicer, you wouldn’t have to worry about how to bootstrap the fixture into a legal state.
Oh, but that’s crazy talk, isn’t it? Non-ASCII content in programs? Why, next you’ll be wanting pictures in debuggers, too…
Extensible Programming
I knew it would happen sooner rather than later: there is now an open source reimplementation of Microsoft PowerShell that will run on all the “other” platforms. If you haven’t played with PowerShell, it’s the coolest thing to happen to coding in a long time; there’s also the Hotwire hypershell (written and scripted in Python), and I’m sure more will come along.
Extensible Programming
Via Jeff Balogh, a pointer to Hotwire Shell, a free object-oriented hypershell inspired by PowerShell that runs on Linux, and is being ported to Windows and Mac OS X. The principal author seems to be Colin Walters; I’ll post more info as I get it.
Extensible Programming
I keep trying to put extensible programming aside, but it just won’t let me let go. (Yes, I know, the eighties want their lyrics back…) Most recently, Michael Feathers posted this piece about what he calls structural programming. As he says:
A structural program (or program snippet) is a program that is essentially a data structure on a page. The structure both dominates and conveys the semantics.
I realized years ago that this was the real difference between agile languages (like Python and Scheme) and sturdy ones (like C++ and Java): the former let you type in your data structures pretty much verbatim, and allows those data structures to include functions as easily as integers and strings. As a result, you really can work in the Turing Paradise in which programs are data and vice versa.
What’s holding us back now is our unwillingness to do more than overload operators. I can, if I try very hard, abuse this to create a mini-language that lets me type in things that look like decision tables—but Alan help me when I have to debug it. There’s a ton of good research waiting to happen here, and dozens of innovative products waiting to be built…
Coincidentally, I just saw a post from Diomidis Spinellis about rational metaprogramming. It has to lie at the heart of any extensible programming system; there are some interesting comments around his article that are worth following up.
Extensible Programming
Back when I had time to think about extensible programming, I predicted that the most likely route to its realization was some vendor creating a new version of a wholly-owned toolchain. After all, if Microsoft had decided that VB.NET source code would be stored as XML, in a format that allowed for arbitrary extension points, everyone else would be saying, “Gosh, that’s cool,” and racing to catch up. But tools like Jester (a mutation tester for Java) are forcing me to re-think: while a uniform representation of source code would make what they do easier, it’s clearly not essential.
Now, would someone please create an extensible debugger for me? Please?
Extensible Programming
I’ve been saying for a couple of years now that Javascript has a good chance of displacing Perl, Python, Ruby, and other scripting languages over the next two or three years: it has all their advantages, plus developers have to learn it to write modern applications. Apple’s announcement that third-party development for the iPhone will be Web 2.0-ish — i.e., HTML and Javascript on the client side — is just another nudge in this direction. Kids, if you want to be on the leading edge in 2010, there are worse bets to make than becoming a Javascript guru now.
Extensible Programming
Recent Comments