Saturday, October 20, 2007

Are there any software platonists?

A formulation of mathematical platonism is that mathematical entities exist independently of us and when we do math we are exploring the realm of the mathematical entities and discovering new things about them. This is a fairly basic or naive formulation of it, but it gets the flavor roughly right. A software platonist would think that programs exist independently of us and when we do computer science or programming (not sure which would be the better formulation) we are exploring the realm of programs and discovering new things about them. A mathematical platonist would say that the natural numbers would exist even if humans never did and a software platonist would say, e.g., that LISP or Apple OS X would exist even if humans never did. Further, the natural numbers were around long before there were humans, and, similarly, LISP and Apple OS X were around long before there were humans. We started exploring the natural numbers a long time ago but only recently started exploring LISP and even more recently Apple OS X.

It seems to me that software platonism is nuts. There is a fairly strong sense, I would think, in which Apple OS X would not have existed were we (broad, inclusive 'we') not around to create it. It was created by engineers and is changing over time. But, it is still just a program. However, as such, there is a Turing machine equivalent to it. Now, LISP was also created by a computer scientist, but it is a bit more abstract and so the platonist intuitions are maybe stronger for it. Engineers have changed LISP over time, and I don't know how a software platonist would explain what links the various versions of LISP (or, for that matter, how programs of any sort run on hardware, but that might not be so different than us counting with the natural numbers). LISP has, I believe, been shown to be able to compute the same functions as Turing machines; the term is Turing-complete, I think.

The question is: are we creating or exploring an antecedently existing realm of programs? There is a related question: are we creating or exploring an antecedently existing realm of Turing machines? I'd hope the two fall together, given the tight connection between programs and Turing machines. However, there seems to be a little bit of room to drive a wedge between the two. I suppose that would allow one to be a Turing machine platonist without being a software platonist. Although, one could try to use the Turing machines, which may be able to draw on mathematical platonist leanings, to argue for platonism about programs.

I don't have any worked out ideas in this area, but it does seem to me that software platonism is hopeless. Are there any software platonists?


joyrexus said...

One could perhaps think of the "digital philosophy" folks (e.g., Stephen Wolfram, Gregory Chaitin, and Konrad Zuse) as "software platonists" if you're willing to keep that term sufficiently vague. They propose we conceive of the universe itself as a turing complete automaton. Well, consider the ramifications.

Kenny said...

I'm sure there must be software platonists. However, actual programs and programming languages have some aspects that probably don't make sense to be platonistic about - in particular, something like Apple OSX involves a specific implementation of a lot of abstract rules. Perhaps something like the design specifications of lisp or OSX might make sense to talk about in a platonistic fashion, but the actual implementations in a physical system messes things up.

Perhaps the best reason to be a platonist about software (if one is a platonist about mathematics) is that any piece of software is generally represented on the computer as a string of 0's and 1's. This string also represents a number, and we're platonists about this number, so why not be platonists about the associated algorithm? Only the physical representation and the physical implementation are clearly non-platonist.

tanas said...

Let me bite the bullet, and say that programs exist independently of there being humans.

To defend that position, let me change the talk of programs to more abstract things - algorithms. A specific case of an algorithm would be Quick Sort.

As a way to sort data Quick Sort algorithm was there even before anybody thought of it. One won't say that people created this way of sorting data, as the way to sort was there, and same as people discovered Pythagorean theorem, some people discovered Quick Sort.

To make it independent of humans, we can say that Turing Machine as a way to do things existed independently from humans. Humans merely discovered it.

We now have the situation that the Turing machine (along with concrete ways in which it can be implemented), and the programs/algorithms as a ways for the Turing machines to perform some task are both independent of humans.

To further defend software platonism, we can say that there are truths both for Turing machine, and for certain algorithms which are independent from humans, and really from the issue if someone implemented those things.

Shawn said...

I clearly underestimated software platonism. I think there were also a couple of competing ideas in my post that I didn't sort out. One of the ideas was that one of the motivations for mathematical platonism is that that is how lots of mathematicians seem to think about their subject and describe themselves. As far as a I know, no (or at least few) programmers are software platonists. Beyond that I was trying to play with thoughts about what this might mean for Turing machines since those are fairly close to programs.

I'm not sure where to begin considering what happens if the universe itself is a Turing machine. There is an interesting looking discussion of this at Brains.

In any case, I hadn't thought about the binary representation of a program. That does seem like a reasonable way for a mathematical platonist to be a software platonist. They are already believe in the natural numbers and the binary representation of the program is in there somewhere.

That seems like the right sort of response a software platonist would make. The move to algorithms is a good one. I don't know what to say about it, since that does seem to be a move to a setting more conducive to platonistic thinking. Although, I'm not sure I can characterize the difference well (not comfortable enough with thinking about algorithms). I think you got it with the label "more abstract". There is a certain amount of concreteness in the idea of software that I'd want to hold onto, but I'm not sure how to resist the move to talking about, say, Quick Sort (It is just so useful...).

There are the sort of moves that Kenny points out that seem like the right ones as well, distinguishing implementations from the platonistic program, etc. But, at the least, a software platonist should have some story about how what they are talking about and what the engineers we know and love are fiddling with are related. No?

Iris said...

Other people ^^ have started down this path, but...

It seems to make a lot more sense if you take algorithms and other such abstract notions, rather than concrete implementations thereof, to exist independently. When you get down to it, algorithms are essentially mathematical constructs. I suppose it's like making the distinction between numerals and the underlying concepts they're used to express.