Strategic Programming

I have been working with model-driven software development for many years, but I haven't published anything on it yet. At Allegis, we developed a complete enterprise application based on models. We found this to be much more effective than the standard object-oriented MVC approaches. One reason I returned to research, and joined academia, was to do research into this programming paradigm. I've been struggling for years with the idea, but have finally written a paper about it, with some of my students:

Strategic Programming by Model Interpretation and Partial Evaluation
William R. Cook, Benjamin Delaware, Thomas Finsterbusch, Ali Ibrahim, Ben Wiedermann

One question that we didn't address directly in the paper is "Why call it Strategic Programming?" The work is closely related to Model-Driven Software Development and also Domain-Specific Language engineering (DSL). Why not use one of those? To me, its a matter of focus. We are all "feeling the same elephant". But I want to focus on a different part of the elephant.

In programming language work there are three important components:

* Syntax
* Programs
* Semantics

When you map these onto the model/DSL viewpoint, you see the following correspondence:

* Syntax: Domain-Specific Languages
* Programs: Models
* Semantics: Interpretations (interpreters, transformers, compilers)

Some people focus on the models, others on the DSLs, and others on transformation. But rather than name the approach after one of its parts, I wanted to use a name that focuses on the overall approach. Keep in mind that there can be more than one interpretation.

I am suggesting that underlying all this is the idea of a strategy, which guides the design of the language and the interpretation of particular models to achieve some goal. It's the strategy that binds the three components together. The other reason is that some people think models are just pictures and don't have semantics, and other think that DSLs are just syntax. So I'm trying to sell a more fundamental vision of this emerging paradigm to the academic programming languages community. I think that models/DSLs/interpretation/strategies are going to be the next big programming paradigm, and so we need to get ready for it.

Scheme Debugging

I've been using Scheme recently, and have been complaining to everybody about the lack of any good visual debugger for the language. Dr. Scheme has some debugging features, but they seem very primitive and awkward to me. Maybe they are exploring new ways to debug (e.g. drawing arrows all over the code to illustrate the calls stack), but I just want a good conventional debugger. Gambit Scheme has a command-line debugger, but its a pain to use for long periods of time and complex code.

Eclipse has a plugin architecture and lots of dynamic languages are gettting IDEs based on it. SchemeWay is a plugin for Scheme, but it does not support debugging. Recently I disovered the Dynamic Languages Toolkit (DLTK). Its supports the Xdebug DBGp protocol.

So I decided to make an Eclipse-based debugger for Scheme. Its called Schemeide and the alpha version is available for download now.

Any Scheme interpreter could work: all it has to do is implement the runtime side of DBGp. I implemented it, and it requires Gambit 4.2.9. Right now I include a patched version of 4.2.8 with builds for MacOS X, Win32, and Linux. The IDE also includes a indenter/reformatter for Scheme/Lisp. Other features are TBD.

How to embed news in a web page

I hunted around for a while and found out a good way to embed a news feed (RSS) in a web page. You use Google Reader to convert the feed into a little block of text that can be embedded. Here are directions on how to do it.

Middle Earth Programming Language seminar

I just got back from the Middle Earth Programming Language seminar (MEPLS) in Abilene TX. Where I gave a talk on Strategic Programming by model interpretation. I have been working on this for a long time, and its a great feeling to finally have a working implementation and a paper. See my home page at UT Austin for a link. I am very excited about this work. I'm programming an implementation of the idea in Scheme, and that is going very well. The system is code-named "Borg" because it can assimilate ideas from lots of other systems.