The Principals of 'Pataphysical Programming
by Darko Svitek, Chief Philosopher at Illposed Software
Feburary 9, 2006
updated: Feb. 23, 2006
The computer revolution hasn't happened yet, as Alan Kay, the inventor of Smalltalk, is fond of saying. But why not? Some may argue that the solution to making software better, cheaper, and easier to develop lies in a new programming language or methodology. We agree that these may be parts of the solution, and we are certainly fans of object-oriented programming languages and Agile methodologies like XP, but we feel that there are more fundamental issues confounding efforts to improve software.
The Philosophy of Software
When it comes to ideas about how software should be developed, we are swimming in a marketplace full of competing models. We can choose from a variety of programming languages — imperative languages ( C, Fortran ), functional programming languages ( Haskell, ML ), object-oriented programming languages ( C++, Java, C#, Smalltalk, Objective-C, Self ), logic programming languages ( Prolog ), languages that mix these paradigms ( OCaml, Lisp, Dylan ), not to mention scripting languages ( Perl, Python, Ruby ).
We also have a wide array of methodologies for structuring and developing software to choose from. There are heavyweight methodologies, lightweight methodologies, design patterns, analysis patterns ... the list goes on and on.
Now, given this cornucopia of ideas about how software should be developed, one would think there would also be quite a variety of ideas about the structure of software. But this is simply not to be found. Some writers focus on the small-scale structure of software — like the original GOF design patterns book. Other authors address the large-scale structure of software. In both these cases, however, there is one metaphor underlying their ideas: software is architecture.
Software as Architecture
There are probably many reasons why the “software theoreticians” continually beat this one horse, and they probably have more to do with politics and prestige than with the reality of software. Conceiving and constructing a building is admittedly an impressive feat, involving the cooperation of many people. Great architecture is something that the public at large can admire and respect. But does architecture really have anything to do with software? Buildings do have structure, as does software, but so do film, musical compositions, and knit sweaters. Of course, no one compares developing software to weaving (well, almost no one).
Otherwise, the dissimilarities are overwhelming and based on a very fundemental difference between architecture: ideas in architecture are communicated through organizing space; ideas in programming are generally communicated by organizing text. But there are other disciplines that are concerned with expressing ideas through text, for example, philosophy or writing.
Software as Writing
As an alternative to software as architecture, we at Illposed prefer another metaphor: software as writing. In writing, as in software, the end result is something abstract, a product purely of the of the mind. Though programming is undeniably a distinct discipline, we think that software can learn quite a bit from certain writing movements.
'Pataphysics is without a doubt familiar to some readers, but probably unfamiliar to others, so I will take a brief detour to discuss the its history.
'Pataphysics is the science of imaginary solutions, as defined by Alfred Jarry, the first thinker to explore its foundations. It is an extension of metaphysics, the same way metaphysics is an extension of physics. The central concept is to take an idea, assume its veracity, and see where that gets you. This concept is well illustrated by the pataphor.
Consider this example presented in Wikipedia:
NON-FIGURATIVETom and Alice stood side by side in the lunch line.METAPHORTom and Alice stood side by side in the lunch line, two pieces on a chessboard.PATAPHORTom took a step closer to Alice and made a date for Friday night, checkmating. Rudy was furious at losing to Margaret so easily and dumped the board on the rose-colored quilt, stomping downstairs.
Non-figurative programming has existed since the earliest days of computer programming. Metaphorical programming has existed at least since the introduction of object-oriented concepts to programming practice. We think the time has come to move to pataphorical programming: indeed we think it is imperative, if software development wishes to progress.
How do we do this? By creating programs based on patadata and pataobjects. This means that objects, the substance of computer programs, can no longer be relegated to serving merely as second-rate surrogates for their real-world counterparts. They must be emancipated to take on a reality of their own.
As crazy as it may sound, this is possible to do and, in fact, has already been done. Though we may be the first to articulate these concepts using this terminology, the position was also reasearched by the Self team at SunLabs, led by David Ungar and Randy Smith and their work continually serves as an inspiration for us. Though some of the great ideas underlying Self are being utilized daily by numerous programmers (in particular, the HotSpot VM), many of the best ideas have yet to be exploited by the programming community at large.
Patadata and Pataobjects
We think Self is the ideal language for developing 'pataphysical software, and hope that it will one day enjoy wide-spread usage, but we are also pragmatic. Thus, we are using Ruby to develop Incerpt, the worlds first 'pataphysical note-taking software, which is based on patadata and pataobjects. Watch this space for further developments!
Notes, References and Further Reading
What is especially pernicious about the software as architecture metaphor is that even excellent writers and thinkers about software, like Kent Beck, fall into it. This happens not necessarily because they buy it, but because the metaphor is so pervasive. For example read (or re-read) this disucssion between Kent Beck and Alan Cooper. It is especially interesting to read while keeping in mind the metaphor of software as writing.
The Crucifixion Considered as an Uphill Bicycle Race — one of the seminal texts of 'pataphysical literature
Check out this video of the Alternate Reality Kit http://www.open-video.org/details.php?videoid=8050 implemented by Randy Smith. Pataobjects from 1987!