IntentionalComputingSessionOverview

From SPA Wiki

Jump to: navigation, search

A few years ago, whilst working at Microsoft Research, Charles Simonyi began advocating an approach to software development he called Intentional Programming (IP). Essentially IP is about capturing the design intent of a software solution and transforming that into an executing system. He describes “The key components of the proprietary technology are a uniform tree-like representation for all the contributions from all the stakeholders of the software that is produced; and an intentional editor that maintains the invariances that are represented and lets the stakeholders edit the contributions in any number of notations that are projections of the intentional tree.”

Although there is much that can be questioned about Simonyi’s vision of software development and there are many technical and cultural barriers to realizing it, there seems something fundamentally sensible about representing software as a model and providing tools that present projections of it and implement operations to modify it.

But isn’t this essentially how all systems should be built, not just development tools, but the tools we deliver to users? Rather than talking about Intentional Programming, shouldn’t we widen our horizons to Intentional Computing?

We have hugely powerful computing platforms available to us today in terms of processing power, display speed and network bandwidth. The low cost of this computing power versus the high cost of development and the high value and criticality of the applications we deliver provides a very different economic model to the one that existed when our current development tools and techniques were developed. Perhaps it is time to think less about optimising our programming practice for computer execution and more time optimising for developers and users.

This working group will explore what Intentional Computing might look like in terms of platforms, tools and practices and consider the merits and implications of such an approach.

-> Back to IntentionalComputing