I've been thinking about eternal computing not so much in the context of software, but more from a cultural level.
Software ultimately runs on some underlying physical computing machine, and physical machines are always changing. If you want a program to run for a long time, the software needs to be flexible enough to move from host to host without losing its state. That's more of a requirements statement than an insight, and it's not a particularly steep hurdle (given some expectation of "down time"), so I'll leave it at that for now. I recently stumbled across the work of Quinlan Terry, whom I had never heard of until I did a search for an inscription in a print that caught my eye. I found this essay helps capture what makes him different from most people designing buildings today: http://www.qftarchitects.com/essays/sevenmisunderstandings.php I don't make any claims that these observations have anything do with software, except in a more general sense of the cultural values that influence design. I suppose the pitfalls of trivializing something because it seems familiar applies to software as well as any other design discipline. We have an engineering culture that pursues change at an ever increasing rate. The loss of eternal values in physical architecture is sad indeed, especially in the context of urban sprawl and the now rampant deterioration of buildings that were built a generation ago, to last only a single generation. The ongoing global financial mess is arguably a result of short-term thinking. Economics matters. One of the intriguing facets of computing is the incredible amount of money the industry generates and consumes. And nowhere is short-term thinking more generously rewarded than in the continual churn of new computing devices and software. Personally I find it overwhelming and I have been trying to keep up for 30 years. Clearly it's not slowing down. I think there's a good reason for the ever-increasing rate of change in computer technology, and that it is the nature of computation itself. Seth Lloyd has a very interesting perspective on revolutions in information processing: http://www.edge.org/3rd_culture/lloyd06/lloyd06_index.html If you consider that life itself is computational in nature (not a big leap given what we know about DNA), it's instructive to think about the amount of energy most organisms expend on the activities surrounding sexual reproduction. As our abilities to perform artificial computations increase, it seems that more and more of our economic life will be driven by computing activities. Computation is an essential part of what we are. In this context, I wonder what to make of the 10,000 year clock: http://www.10000yearclock.net/learnmore.html First, I'm skeptical that something made of metal will last 10,000 years. But suppose it would be possible to build a clock that lasts that long. If in a fraction of a second I have a device that can execute billions of instructions, what advantage does stone-age (or iron-age) technology offer beyond longevity? I think the key advantage is that no computation takes place in isolation. Every time you calculate a result, the contextual assumptions that held at the start of that calculation have changed. Other computations by other devices may have obviated your result or provided you with new inputs that can allow you to continue processing. Which means running for a long time is no longer a simple matter of saving your state and jumping to a new host, since all the other hosts that you are interacting with have made assumptions about you too. It starts to look like a model of life, where the best way to free up resources is to allow obsolete hosts to die, so that new generations can continue once they've learned everything their parents can teach them. So instead of a model of computation based around industrial metaphors from the 19th century (with "registers" and "stores") we need to recognize that computer science is more than an engineering discipline. That should be apparent by now, given the extent to which almost all human endeavors now depend on computers, but there's something more important. We often see people lamenting the fact that software development isn't more like engineering, where there are blueprints and top-down design processes that can produce predictable results with realistic cost estimates. Instead, we should understand that software is different because it is fundamental. Software serves industry, but at the same time, it has a profound impact on the way our social organizations are constructed. Over time, the computational abilities of organizations will move to where we can lead them with software. The challenge is to build upon new metaphors that are not unduly constrained by the assumptions of the past. Cheers, Steve _______________________________________________ fonc mailing list fonc@vpri.org http://vpri.org/mailman/listinfo/fonc