What Makes Creative Computer Programs Different from Non-creative Ones?
In a recent conversation with Eli Tyre, David Deutsch asks:
[T]heres something different about knowledge creation from other physical processes. […] What’s the thing that makes creative computer programs different from non-creative ones? I don’t know. That’s one of the problems of our age.
Deutsch has guessed that “[c]reativity is a property of software” (2012, 414). (It’s important to note that therefore, people are not the bodies they inhabit, but a property of the software running in their brains.) Building on that, I guess that creativity is a particular emergent property (or set of properties) of that software.
What are some examples of emergent properties of computer programs? Let’s not worry about the distinction between creative and non-creative yet. Consider the number of times a program has been run—its ‘invocation count’. Even if a given program is never run, its invocation count exists objectively, and we know several things about it: it always starts at
0; it can only ever increase or stay the same; when it isn’t
0 it can only be a positive integer; and so on.
There’s also the property of whether a program is currently running. It likewise exists objectively, even if nobody ever thinks of it, and we know certain things about it, too: it’s a boolean (meaning it can only be
false); it always starts at
false; and so on.
Performance characteristics are another example. Oversimplifying for the moment, some programs run faster than others. Performance characteristics are not specified in the code itself—they fall out of it.
All computer programs have causal power, which is another emergent property. Among other things, they instruct their underlying hardware to perform certain operations: there’s a causal direction from program to hardware. Causal power is a necessary condition that needs to be met for a program to be creative—after all, people have causal power, they influence the world around them—but that doesn’t tell us much because, as I’ve just shown, all programs have causal power. We need to find something else that makes the difference.
Unpredictability comes to mind: people think and behave in ways that are fundamentally unpredictable. As Deutsch and Tyre discuss, you cannot predict what a person will do short of running a simulation of that person. The underlying reason is that people are knowledge-creating entities: if a purely predictive process could predict new knowledge, that knowledge either wouldn’t be new or the process wouldn’t be purely predictive. Only a creative process—like a person or biological evolution—can ‘predict’ new knowledge by first creating it. While unpredictability is likewise a necessary condition, it can’t be the decisive factor either: as Alan Turing showed, some programs have the property that one cannot predict whether they will halt. They either will or won’t—and whether they do once you run them is predetermined—but you just can’t know in advance. Many programs, including non-creative ones, are unpredictable in that sense.
All the properties I have mentioned so far have one thing in common: they exist independently of whether the corresponding program is currently running (or ever run). If you think of a program and write it down but never run it, its invocation count is, as I have said,
0. That count still exists. The same goes for the property ‘is this program currently running’ starting at
false, and for causal power as well: a never-run program can have the causal power to get people to run it, especially if it’s a good program that automates the solution to an important problem. But one interesting property people have—who are running instantiations of the creative program according to Deutsch (2012)—is that when their creative algorithm is stopped, they stop being people. And they’re not people before runtime either. The creative algorithm is only a person as it runs.
For example, when somebody dies in a way that leaves the brain sufficiently intact, the creative algorithm is still embodied in that brain. It’s still present; it continues to have properties such as the invocation count, causal power (e.g. to cause others to try to revive the person), etc—but it is not a person anymore because it isn’t running.
This is a curious property which I have not seen in other programs. Let’s call emergent properties of computer programs that only exist during runtime ephemeral or fleeting. Personhood is a fleeting property, as I have explained. Perhaps exploring the nature of fleeting properties can shed light on how the creative algorithm works.
No creative program has ever been written, but non-creative programs are commonplace and well-understood at this point. Therefore, the easiest place to start may be to think of fleeting properties of non-creative programs and then to study them.
Those familiar with Deutsch’s and also Karl Popper’s work will no doubt notice a conspicuous absence of some important concepts like problems, conjectures and criticisms, and evolution in this article. Eventually we will need to incorporate these concepts into a broader understanding of fleeting properties of computer programs. For example, maybe some of these fleeting properties can self-replicate imperfectly, leading to evolution. But at this stage, I believe it’s best to proceed piecemeal and take smaller bites than that.
In short: to understand creativity better—itself a fleeting property—I suggest finding and studying fleeting properties of our current, non-creative programs. If you can think of any, leave a comment below.
Deutsch, David. 2012. The Beginning of Infinity: Explanations that Transform the World. New York: Penguin Books.