Wikipedia:Mediation Cabal/Cases/2007-08-22 Computer program

Request details
User:Timhowardriley is questioning the current definition of computer program. I reworded the opening paragraph to include two variations of the definition and cited both sources. However, the edit was reverted by one of two editors who are guarding the status quo. The status quo definition is convoluted, flawed, and unsourced. The talk page has over 100K of heated exchanges, but no consensus. Consensus would have been achieved if the discussion had remained focused. So I am asking a mediator to help keep answers focused to the question asked. I've boiled my viewpoint down to 9 3 questions.


 * 1) Is a computer program the instructions executed by a computer?
 * 2) At one time in history -- before declarative programming, instruction pipelining, and parallel computing -- were computer programs sequences of instructions?
 * 3) Now that we have declarative programming, instruction pipelining, and parallel computing, are computer programs collections of instructions?
 * 4) Now that we have declarative programming, instruction pipelining, and parallel computing, are computer programs no longer sequences of instructions?
 * 5) Is sequence of instructions redundant? In other words, are any (non-single) instructions expected to be executed in random order?
 * 6) Is collection of instructions an oxymoron? In other words, are any (non-single) instructions expected to be executed in random order?
 * 7) Do instructions describe tasks? Do instructions describe anything?
 * 8) If computer instructions do indeed describe tasks, does adding "or set of tasks" add insight to the definition of computer program? Timhowardriley 06:38, 22 August 2007 (UTC)
 * 9) Is a computer program essentially an algorithm? Timhowardriley 17:30, 7 September 2007 (UTC)

Who are the involved parties?
The two editors guarding the status quo are User:Derek farn and User:HappyDog. Timhowardriley 10:01, 23 August 2007 (UTC)

What's going on?
The current definition of computer program is a single sentence that attempts to define an abstract idea. However, abstract ideas are difficult to define (try defining music). Moreover, the main characteristic of computer programs (the instructions) has changed a little bit over time because of advancements in hardware. Yet at the same time, the main characteristic has also remained the same. As a result, whereas a vast majority of existing and future computer programs are sequential instructions , a very small minority of computer programs have the sequential characteristic camouflaged. (These minority computer programs are called declarative programming and are used to create expert systems.) The two status quo editors are obviously familiar with declarative programming and have decided that all computers, therefore, execute collections of instructions. Timhowardriley 17:45, 28 August 2007 (UTC)

What would you like to change about that?
It is a challenge to define an abstract idea that has changed over time. However, I believe a multi-sentence definition could be produced that defines both the vast majority of existing and future computer programs plus declarative computer programs. Timhowardriley 17:45, 28 August 2007 (UTC)

A multi-sentence definition of computer program should be produced that:
 * 1) does not contain "collection". The definition should define both the vast majority of existing and future computer programs (sequence of instructions) plus declarative computer programs (where the sequencing is camouflaged).
 * 'collection' is intended to show that the order is not necessarily important, as is the case with some languages (and at a block level, with most languages). Originally we used the word 'set', and in this context, the difference to me is trivial.  In neither case is a precise mathematical meaning intended - this sentence is  aimed at the layman after all - and so far, no better alternative has been given. --HappyDog 13:24, 20 September 2007 (UTC)
 * 1) does not contain "instructions that describe..."
 * Why not? You ask above, 'do instructions describe tasks', and I would say the answer is no. But the real question is 'do collections of instructions describe tasks', and the answer to that is, I think, yes. --HappyDog 13:24, 20 September 2007 (UTC)
 * 1) does not contain "or set of tasks."
 * This is important. A program may do more than one thing! --HappyDog 13:24, 20 September 2007 (UTC)
 * 1) replaces "describes a task" with "executes an algorithm."
 * No. Not all programs are executable.  Most (all?) programs are algorithms (by some definition of the term), but this sentence is aimed at a layperson so jargon should be avoided. --HappyDog 13:24, 20 September 2007 (UTC)
 * Please consider my essay, "What is a computer program?". Timhowardriley 11:44, 22 September 2007 (UTC)
 * Notice that the procedure "move_right" (a computer program) executes "Algorithm number 1." Timhowardriley 16:39, 26 September 2007 (UTC)


 * Wrong. Your statement ["Therefore, a computer program is essentially an algorithm."] is equivalent to "Socrates is a man, therefore all men are Socrates". A logical fallacy. --HappyDog 23:10, 26 September 2007 (UTC) (Moved here because this is where the discussion is.) Timhowardriley 18:12, 27 September 2007 (UTC)


 * I politely disagree with your assertion that I generated a fallacy. I said, "If you have an algorithm in a syntax that can be ..., then you have a computer program. Therefore, a computer program is essentially an algorithm." Algorithm is the superset, and computer program is the subset. A subset is a superset with unique characteristics. So I'm saying, "If you have a superset with these unique characteristics, then you have a subset. Therefore, the subset is essentially the superset." To use your example I'm saying, "Socrates is a man with the following unique characteristics: c1, c2, c3, ... Therefore, all men with these unique characteristics are Socrates." You are welcome to question my proposed unique characteristics defining computer program in terms of algorithm, however. Timhowardriley 19:29, 27 September 2007 (UTC)


 * Your argument is as follows: "If you have an algorithm [that matches these conditions] then you have a computer program. Therefore, a computer program is essentially an algorithm." There are two logical fallacies in this argument.
 * The first is, I think, called affirming the consequent. Your argument is:

An algorithm may have properties X, Y & Z.  Something with properties X, Y & Z is a computer program. Therefore a computer program is an algorithm.
 * Your conclusion is plain incorrect. The most you can deduce from your premises is that "an algorithm may be a computer program".  This means that, if anything, 'algorithm' is a subset of 'computer program', not a superset as you claimed above.  (In fact, the most you can say with certainty is that the two sets are non-disjoint).
 * The second is called begging the question. You have already decided that a computer program is an algorithm, therefore you are defining your premise in a way that ensures you get the conclusion you want.
 * In short, both your premise and your reasoning are incorrect.
 * btw, this probably isn't the right place to mention it, but I saw your skit and was interested to see that you had cast me in the role of the student, rather than the POV-pushing teacher. It leaves me wondering what point you were trying to make there... --HappyDog 20:22, 1 October 2007 (UTC)


 * OK. I can see the vagueness in my proof. So, I enhanced it to be more clear. (Here is the old version preserved.) Timhowardriley 17:18, 3 October 2007 (UTC)

Original post by Timhowardriley 04:00, 20 September 2007 (UTC), responses signed by the responder.