Wednesday, October 21, 2009

Software is Change

The title says it all. If a program never changes, it might as well be hardware: set in stone (circuitry?), meant to be worked with rather than meddled with.
So the ultimate programming, since programming is all about software (programming hardware is called engineering, not programming), must support change.
Example changes: (summary of this page, with typing removed)
  • Add/remove/replace something
  • Name/hide/rename something
  • Combine(merge/flatten/cache)/split(structurize?)/move things together/apart/elsewhere
  • Convert something
These changes are possible in any language, but I want these to be operations of the language: first-class, polymorphic, statically typed, dynamically typed, runtime, object-oriented, functionally pure, distibuted, atomic, <insert latest programming idea here>.
I see that Google has (finally) found my blog. The good news, fortunately, is that it doesn't yet have all the posts. Perhaps I might get a comment sometime...

4 comments:

  1. Does this also mean that you are in favor of a more abstract/persistent way of storing programs than a text file with concrete syntax? Count me in!

    ReplyDelete
  2. Well, I can't think of anything better than text to store text.

    ReplyDelete
  3. Better tools for editing programs are definitely needed, however.

    ReplyDelete
  4. And such tools can work better with more information about the data it manipulates. Ever used Smalltalk? There they combine a textual representation of the code with rather good method finds/replaces/adds etc. In part because the code isn't stored in "dead" text files, but in a live system.

    Of course storing the verbatim representation isn't bad per se, but having easy access to the AST, information about method relationships, runtime information and so on beats "only" having the verbatim representation any day.

    ReplyDelete