The following is an abstract of a position statement for the Live programming workshop at ICSE.
Time is of the Essence
Today we only know how to do live programming in special cases, such as pure functions on primitive values as in spreadsheets, or at the top level of domain-specific programs like games and graphics. To fully realize live programming we must solve an essential problem to do with time. This problem is bridging the gap between the programmer’s experience of time while programming and the program’s internal semantics of time. Indeed the current examples of live programming are all cases with a narrow time gap: either the program is timeless as in pure functions, or it has a macro-level user-comprehensible notion of time as in games. To achieve comprehensive live programming, programming that is live all the way down, we must confront the fact that mainstream imperative languages embrace the CPU’s perception of time, which is quite foreign from that of the programmer. To envision a path forward we draw a lesson from the history of programming languages. To rationalize the insanity of programs that could read and write arbitrary data to any memory address, languages evolved the now ubiquitous notion of automatic memory management. We suggest that to rationalize the insanity of programs that can read and write globally at any time that languages should impose automatic time management. Managed time would offer live programming a representation of program execution at a higher level than program counter traces. We survey current research on managed time, including functional reactive programming (FRP), synchronous reactive programming (SRP), effect systems, and transactions. Perhaps surprisingly, we conclude that although transactions are the most popular form of time management they are not actually very helpful for live programming. Without progress towards managing time we expect that live programming will succeed mainly where a domain-specific notion of time can be exploited.
I have decided not to submit this. It puts me in the position of an old guy telling a bunch of enthusiastic kids that what they want to do is naive and impossible. When I was a kid I just ignored those old guys and went ahead and did the impossible.