Information Technology Reference
In-Depth Information
laborious to adults, but she carries on with an absorption that makes it clear that time has
lost its meaning for her.” Sherry Turkle ( 2005 , p. 92), on Robin, aged 4, programming a
computer.
Having investigated the representation and operation of bricolage programming
we now examine how the creative process operates in time. Dijkstra might argue
that considering computer programs as operating in time at all, rather than as en-
tirely abstract logic, is itself a form of the anthropomorphism examined in Sect. 9.3 .
However from the above quotation it seems that Robin stepped out of any notion of
physical time, and into the algorithm she was composing, entering a timeless state.
This could be a state of optimum experience, the “flow” investigated by Csikszent-
mihalyi where “duration of time is altered; hours pass by in minutes, and minutes
can stretch out to seem like hours” (Csikszentmihalyi 2008 , p. 49). Perhaps in this
state a programmer is thinking in algorithmic time, attending to control flow as it
replays over and over in their imagination, and not to the world around them. Or per-
haps they are not attending to the passage of time at all, thinking entirely of declar-
ative abstract logic, in a timeless state of building. In either case, it would seem that
the human is entering time relationships of their software, rather than the opposite,
anthropocentric direction of software entering human time. While programmers can
appear detached from “physical” time, there are ways in which the timelines of pro-
gram development and operation may be united, which we will come to shortly.
Temporal relationships are generally not represented in source code. When a pro-
grammer needs to do so, for example, as an experimental psychologist requiring ac-
curate time measurements, or a musician needing accurate synchronisation between
processes, they run into problems of accuracy and latency. With the wide prolifera-
tion of interacting embedded systems, this is becoming a broad concern (Lee 2009 ).
In commodity systems time has been decentralised, abstracted away through layers
of caching, where exact temporal dependencies and intervals between events are
not deemed worthy of general interest. Programmers talk of “processing cycles” as
a valuable resource which their processes should conserve, but they generally no
longer have programmatic access to the high frequency oscillations of the central
processing units (now, frequently plural) in their computer. The allocation of time to
processes is organised top-down by an overseeing scheduler, and programmers must
work to achieve what timing guarantees are available. All is not lost, however, as re-
altime kernels are now available for commodity systems, allowing psychologists
(Finney 2001 ) and musicians (e.g. via http://jackaudio.org/ ) to get closer to physical
time. Further, the representation of time semantics in programming is undergoing
active research in a sub-field of computer science known as reactive programming
(Elliott 2009 ), with applications emerging in music (McLean and Wiggins 2010a ).
9.6.1 Interactive Programming
Interactive programming allows a programmer to examine an algorithm while it is
interpreted, taking on live changes without restarts. This unites the time flow of a
Search WWH ::




Custom Search