TITLE: Software Development Fantasies
AUTHOR: Eugene Wallingford
DATE: October 31, 2004 4:15 PM
DESC: What one change in the nature of software development -- or software itself -- would make the world a much better place?
-----
BODY:
Don't worry. This entry is rated G, for general audiences.
The last session of the Onward! track at OOPSLA was a
panel-turned-open-mike called Breakthrough Ideas. The
idea was simple: Anyone could take the mike for four
minutes or less and propose something that would, if
true or made so by future development, fundamentally
alter the way we use computers, program them, or view
computation. The four-minute limit was strictly enforced
in order to cycle through as many ideas as possible in
the ninety minute session, and to prevent the inevitable
rambling that ensues when some of us start talking about
some idea yet ill-formed in our minds. The format can't
eliminate rambling, only cut it off.
A few of the proposed ideas made me smile and want
to think about them further:
- programmed program death: build into each piece
of code an expiration date or a dying process so
that, at the appointed time, the code goes away.
(So much for the Y2K problem!)
- a Pulitzer Prize for wonderful code, code that
is elegant, understated, understandable, beautiful.
The genre categories might be application areas
or, more likely, languages. In order to appreciate
the beauty of most code, you have to speak the
language.
- program our computer tools to ask us questions,
rather than waiting for us to fill in every details
and, in the process, make mistakes.
- programming on the model of a research professor:
when you need a program, you delegate to a graduate
student. What would that be like between me and my
computer?
- an oldie but a goodie: the whiteboard compiler.
But maybe we are getting closer on this one...
A poster on the Squeak list recently said that he now
uses Squeak for much of his creative work. He can't
throw his pencils and paper out quite yet, but he feels
like he's getting closer. Alan Kay's talks certainly
encouraged us to think about how we can make progress
toward this goal.
Some other ideas immediately became questions in my mind,
either because I didn't understand the proposal or because
the proposal really was a question.
What would it be like to write software on the model of
living organisms? Software these days has hard edges --
rigid interfaces -- that delineate the boundaries of each
functional component, which does its job and nothing else.
But biological systems have soft edges and seem to operate
on the premise that components fail all the time. (See
Brian Marick's
body-as-kludge article.)
Their components also differ from software in that, say,
a liver consists of oodles of liver cells, none of which
are a liver but which in concert act as a liver -- with
primary and secondary and tertiary functions intermingled.
Finally, what would you do if you knew that one billion
people would use your software? For starters, you would
probably have to make the program multilingual down to its
foundations... Or would you?
I think it's neat that some people think thoughts like these,
and that at least a few of them are even actively pursuing
answers...
-----