No, and ...
No, and ...
Posted Jun 5, 2009 1:14 UTC (Fri) by bojan (subscriber, #14302)In reply to: No, and ... by welinder
Parent article: Donald Knuth: Mathematical Ideas, or Algorithms, Should Not Be Patented (Groklaw)
The end state of it will depend of how exactly we reached the end of processing: signal, crash, reboot, electricity switched off, hardware failure, end of civilisation etc. But for each of these events, we will have some end-state of that program.
More specifically, consider a Linux program compiled from your code. If you send it a SIGKILL, it will stop. Obviously, has a well defined end-state.
Posted Jun 5, 2009 2:47 UTC (Fri)
by sepreece (guest, #19270)
[Link] (1 responses)
A program can implement an algorithm, but it is not itself the algorithm. Nor is every program an algorithm.
Posted Jun 5, 2009 3:05 UTC (Fri)
by bojan (subscriber, #14302)
[Link]
Of course it will be well defined. It will be one of its possible states. In fact, you can even find out what that state was, although that's not even necessary to have a well defined state (reality doesn't care what you can and cannot see).
> Now it's non-deterministic
Just because you didn't set the variable, doesn't mean it was not set to a particular value. Which then gives the program another possible state.
Try this. Have an undefined variable in your program. The run it under GDB. Of course, you'll get "random" garbage in the variable, which is still a value, which gives your program a well defined state. For example, if this was a 32-bit integer variable, the initial state will be any value that this variable can hold.
Maybe your flowchart didn't take that into account. Irrelevant for the purposes of having a state.
Posted Jun 5, 2009 4:35 UTC (Fri)
by chad.netzer (subscriber, #4257)
[Link] (8 responses)
Posted Jun 5, 2009 5:20 UTC (Fri)
by bojan (subscriber, #14302)
[Link] (7 responses)
Similarly, when you push the reset button on you computer, that program (kernel + userspace) will terminate and have an end-state. (In the olden days of Atari, you could even save your ramdisk across resets, if I remember correctly).
We may think that a computer program is what we wrote in that piece of source code only. But the fact is that there is so much more to it when it actually becomes a program that runs on the computer. Just remember the ext4 v. POSIX episode. The crashes of the kernel were causing an end-state that we didn't particularly like. So, the algorithm was changed to have a different end-state in case of a crash.
It is easy to pretend that these events are not the input for the logic of the algorithm that is running on our computers. (Un)Fortunately, the reality is different.
Posted Jun 5, 2009 6:30 UTC (Fri)
by chad.netzer (subscriber, #4257)
[Link] (6 responses)
Just as an example, the "Halting Problem" doesn't exist by your definition of computational theory, and yet it is one of the most fundamental results in everyone else's version.
Posted Jun 5, 2009 7:03 UTC (Fri)
by bojan (subscriber, #14302)
[Link] (5 responses)
Halting problem:
http://en.wikipedia.org/wiki/Halting_problem
Deals with an idealistic scenario, much like it is depicted in that forever loop. It is, of course, useful for finding theoretical solutions to theoretical problems.
However, for such scenarios to be realised in practice, one needs to have a computer that runs forever. Such computers do not exist. Programs do not run on non-existing computers.
Posted Jun 5, 2009 9:18 UTC (Fri)
by chad.netzer (subscriber, #4257)
[Link] (4 responses)
Posted Jun 5, 2009 10:37 UTC (Fri)
by bojan (subscriber, #14302)
[Link] (3 responses)
The original notion put forward was that computer programs are not algorithms, because they do not halt, are not deterministic and are not finite. Sure, when you write your source, it may seem that way (and in theory it is). Once you put that program on a computer with finite resources and execute it, memory gives initial state (whether set by you or not), which then brings your code through a set of well defined states (whether written in your source or not), which then eventually ends in some final state (whether your program ended execution itself or not). The fact that the source may not be sufficient to describe all these states doesn't diminish the fact that all these states indeed happened in a well defined way.
As for your question of whether such beasts should be patentable or not, I am of the opinion that they should not be patentable. Computer programs deal exclusively with information processing and are in that respect very similar to maths. Whether number three is printed on the screen or three sticks are spat out of the machine at the end of processing, the purpose of the computer program was to determine that number, which is a just piece of information.
Posted Jun 5, 2009 18:45 UTC (Fri)
by chad.netzer (subscriber, #4257)
[Link]
No it was not! It was suggested that you *could* create a program that would not halt, and that such a program was not an algorithm, if you go by that definition. It was clearly discussing a notion of computational *theory*. You completely sidetracked that discussion for your own banal point, for what purpose I don't know.
/*
The legal/patent aspect of all this is that the law cares about definitions (whether they intersect with reality or not), and so an unfortunate definition could have bad consequences, particularly in the patent realm that can intertwine with the realm of concepts, and well as physical realities.
Posted Jun 7, 2009 14:19 UTC (Sun)
by malor (guest, #2973)
[Link]
You're arguing about physical implementations OF algorithms, not algorithms themselves. In the context of this discussion, it's unimportant wankery.
Posted Jun 11, 2009 11:27 UTC (Thu)
by malor (guest, #2973)
[Link]
No, and ...
No, and ...
No, and ...
No, and ...
No, and ...
No, and ...
No, and ...
No, and ...
No, and ...
* The following is *not* an executing program, it is a
* text representation of an endless loop. It represents
* a computation that doesn't halt, and could be turned
* into a program that is bounded by the computational
* constraints of the universe.
*
* Is it an "algorithm?" bojan says yes, because it can be
* converted into an execution that *must* 'halt' by the
* constraints of physics.
* I say an algorithm is a CONCEPT, and that conceptually,
* this represents a non-halting computation. It's not
* just a "program" executing on a specific computing device.
*/
int main() {for(;;);}
No, and ...
No, and ...
