In Sjoerd Visscher's blog response to The Hundred Year Language, he writes...
Historically programs are written to execute with existing data as input. But to be competitive on the internet, results need to be continuously updated while new input comes in. For example, you can sum live data by summing your input every time it changes. But this pseudo code would be much faster:
initial: sum = 0
on add(v): sum += v
on remove(v): sum -= v
I'm not even sure if i'd prefer to program this way, or if I'd just program summation for a collection, and let the compiler figure out the above code.
I can tie these thoughts in with some other sources that seem more or less related to me.
- Magnus Carlsson writes about Incremental Computations using Haskell. The simplest example of this being a spreadsheet.
- Ralph Johnson and Hiroaki Nakamura write about an adaptive framework for business systems.
These all represent to varying degrees the future of computing systems:
- assembled incrementally
- various participants
- somewhat ad hoc
- the whole emerging from the sum of its parts
And what they have most in common is there is no single "result". Instead the value of the system is the on-going re-evaluation of the previous results.