The deep structure of code

The deep structure of code.

It's been a while since I've written code in Java. But this week I
updated my installation of Eclipse, dusted off an old Java program, and
saw that ancient artifact in a whole new way. Now, I've never been an
IDE (Integrated Development Environment) kind of guy. It's always been
emacs for me, and in InfoWorld circles I'm not alone in that
preference. Both Chad Dickerson and Maggie Biggs
have also made the case for the no-frills approach. At the end of the
day, programming still comes down to pushing lines of code around in
text files. Until we change that paradigm, I've always thought, code
editors built to push lines of code around in text files are going to
be hard to beat.

At one time or another, every programmer has imagined what it
would be like to work directly with the deep structure of code. Some of
the best minds in the business are working to make that happen. The
legendary Charles Simonyi, who left Microsoft a couple of years ago to
pursue his vision of intentional programming,
says deep structure is at the core of the toolset his new company,
Intentional Software, is building. Sergey Dmitriev shares Simonyi's
vision, and his company — JetBrains, creator of IntelliJ IDEA — wants
to do something similar with its next-generation toolset.

These projects are still under wraps, but another champion of deep
structure is working out in the open. Jonathan Edwards, currently a
visiting engineer with MIT's Software Design Group, has built a
prototype system that he is demonstrating in a screencast
at There are big ideas at work here. In Edwards'
prototype, programming, testing, and debugging are just different ways
of interacting with a program's tree structure. Edwards' 2004 OOPSLA
paper, Example-centric programming,
explores one of the benefits of this arrangement: the examples (or “use
cases”) that drive program design are worked out the context of the
living and evolving program.

We've all heard this stuff before. I may yet go to my grave
without emacs ever having been pried from my cold dead fingers. But
it's worth pondering, now and then, what we could do with tools that
didn't think of programs as strings of text. [Full story]

In an article for ACM Queue entitled Extensible Programming for the 21st Century (also available here), Greg Wilson skewers the fallacy of “I Want To See My Programs As They Really Are”:
[Jon's Radio]

Leave a comment