|
|
|
|
|
by paulmd
3053 days ago
|
|
Both software and algorithms are an emergent property of the rules of the systems we create. They are essentially akin to prime numbers, in a direct and provable sense. (1) All computable programs can be expressed as a Universal Turing machine. (2) There are countably many Universal Turing machines (3) In an abstract sense, we can thus assign a unique identifier to each possible computer program. I can tell you "run program 383439343" and that will tell you everything you need to run that function. Most of these programs are of course not correct in the sense that they produce a useful output, or even necessarily terminate. But then, most numbers aren't useful either, it's only because of the emergent properties of our mathematical rules that something like a "prime number" even has a conceptual meaning, and it's only because of our contextual needs that, say, sorting an array would be a useful output. Distinguishing between algorithms and software is a distinction without a difference. If the two implementations produce a different output, then by definition they must be following a different algorithm. And if they are the same algorithm, then they can be reduced to the same Universal Turing machine. |
|
Second, even for algorithms which can be expressed as Turing Machines, you are giving the computer science equivalent of saying that a house and it's architecture drawing are the same. One is a thing which exists, one is a description of the thing. You cannot run an unimplemented algorithm without first doing the work of implementing it.