On 17 March of this year, Robert M. Lefkowitz, "r0ml", gave a talk at Hacker School: "When Programs Are Not Text." I don't find anything on line about this that I can cite, and although a full and well-constructed abstract came over the Hacker School internal mailing list, it's not public and I don't think I should cite it here. But I can summarize it in two parts.
First, the current text-based paradigm of the programming environment, where the source-code constitutes the program, was not always the dominant one. Earlier, and reliquary in a small number of languages now in use, the program resided in a non-textual form within the machine, where it could be altered and interacted with in situ. The program existed while its environment existed; in some cases, the environment itself could be stored and retrieved, closure-like, so that although the program was inaccessible when its environment was not active, on the retrieval of the environment the programmer could continue to alter and interact with the program.
R0ml calls this situation "workspace-based" or more hesitantly "image-oriented" (I suppose in the sense that we mean when we talk about a system image), and he had plenty of appreciative and sometimes trenchant things to say about its benefits and how it affects the cultivation of programming skill.
Second — and this does not appear in the abstract so you must trust my dubious memory now — r0ml contended that the workspace-based model was better than what we use today, source code instantiated as a text file.
I gladly accept the point that creating and modifying code within a closure-image forces me to use my mind in a way distinct from its familiar verbal habits. My perception of space may become involved; my sense of kinesthesia, the perception and memory of movement, may be involved — these are valuable parts of my mind and for some people they are the dominant sensibilities. So I have no argument with r0ml's praise of the workspace-based paradigm.
But I do feel uneasy about declaring its superiority to text. For source-code to have material form as text means that I can "subclass" many skills I already use for dealing with language-as-text and apply them in the service of programming. That seems to me to confer immense power on the code-as-text paradigm, since my code benefits from all the other highly developed skills I use in reading, writing, editing, proofreading, and so forth. Natural language is one of the most deep-seated and thorough-going of all human adaptations, and there's a lot to be gained by subclassing it.
I'm sure there's more to r0ml's argument, and I ought to stress that I don't confuse natural language in its primary form — speech — with the abstraction of writing. Some of the nuance in the relationship between natural language and code is expressed in Edsger Dijkstra's famous blurb on the subject. I've written elsewhere about differences in how I perceive writing prose and writing code.
[end]