Talk:Computer program

From Wikipedia, the free encyclopedia
Jump to: navigation, search
Former good article Computer program was one of the Engineering and technology good articles, but it has been removed from the list. There are suggestions below for improving the article to meet the good article criteria. Once these issues have been addressed, the article can be renominated. Editors may also seek a reassessment of the decision if they believe there was a mistake.
Article milestones
Date Process Result
November 4, 2007 Good article nominee Not listed
November 9, 2007 Good article nominee Listed
November 17, 2007 Good article reassessment Delisted
Current status: Delisted good article

New introduction (Suggestion v 2.2)[edit]

A computer program is one or more instructions that are carried out by a computer. Computer programs, in source code form, must conform to the syntax specified in the programming language. Most programming languages are imperative, meaning each instruction is a step in an algorithm. (For an imperative example, see C.) However, some programming languages are declarative, meaning the computer program consists of a single instruction. The single instruction is crafted to tell the computer what to do, not how to do it. (For a declarative example, see SQL.)

What are your comments and edits? Timhowardriley 22:31, 2 May 2007 (UTC)

A computer program is one or more instructions that are carried out by a computer. 
Not true. NOP is not a computer program.
Sure it is. As is:
NOP
NOP
You are telling the computer to do something. It is doing it. Not entirely useful unless you need to waste a couple of clock cycles for some reason, and does not apparently have any code to return to the O/S, but it is a simple (though admittedly useless) program. SqlPac 03:30, 22 May 2007 (UTC)
Yes, but by that argument any random string of bytes is a program. Perhaps one that crashes the computer, maybe printing some garbage to the screen first if you're lucky, but still a program. Surely that's the same that a random heap of bricks is a house? --HappyDog 04:45, 22 May 2007 (UTC)
Any "random string of bytes" that contains valid machine-level instructions could be considered a program if the computer can execute it. This is why modern processor architectures evolved to try to keep data and programs separate. On a 65xx processor, or even the 8080/Z-80 series, data and application bytes were not separated in any way (no Data Segments, etc.) In fact, as has been highly publicized everytime Microsoft releases a service pack, people shove valid machine-level instructions into data all the time and try to make remote computers run it using a variety of methods.
So to answer your question, if you want to throw a "random heap of bricks" on a piece of land and decide to live underneath it, yes you can call it your "house" if you like. I might not want to live there, but if that's where you choose to live, then so be it. Bottom line is that there is nothing "magical" about data, and the only thing that separates "data" from "instructions" is a "Chinese wall" so to speak, built into the processor. If you were running at the appropriate privelege level, there is no reason you could not JMP into the middle of a JPEG image stored in memory somewhere. The computer would merrily hum along until it hits instructions it doesn't recognize or encounters some other fault (bad memory address, etc.) But it will execute any and all instructions it encounters.
You are trying to define a "program" in terms of doing "useful" work or "useful" output. That's a *very* slippery slope to go down, since what you consider "useful" work/output someone else might consider completely "useless". SqlPac 19:58, 22 May 2007 (UTC)
What's NOP? No operation? Isn't that a filler instruction to wait for a device? If so, then that would qualify as a computer program in assembly language form. Timhowardriley 19:15, 3 May 2007 (UTC)
NOP is Assembler Language (x86-series, Z-80, and I believe even 65xx-series) for No Operation. Basically an instruction to waste a clock cycle or two, which is occasionally necessary. SqlPac 03:30, 22 May 2007 (UTC)
Quote: "Isn't that a filler instruction to wait for a device?" HappyDog's Verdict - not qualified to write on this subject. --HappyDog 00:53, 4 May 2007 (UTC)
Quote: "not qualified to write on this subject." Not true. Just because someone doesn't know what a rarely used archaic Assembler Language instruction does, that does not make him/her "not qualified" to write about programming. Even people who know the intricacies of ROL and BIT instructions are going to have different levels of knowledge. That doesn't make any one of them less qualified than others to write about programming. SqlPac 03:35, 22 May 2007 (UTC)
Just because someone doesn't know what a rarely used archaic Assembler Language instruction doesn't mean they don't know how to use Google. That was my main point. To say "I don't know what this is" but then to go on and base an argument on your guesswork (when NOP is just a four keystrokes away) does not sound like someone qualified to write about a technical subject which, as you have already pointed out, even an expert is likely to need to do some research if they are going to cover all the bases. --HappyDog 04:45, 22 May 2007 (UTC)
And my point is that not everyone has the same set of skills, knowledge, or experience. It seems to me that Tim is attempting to learn by doing, and I personally think it would be a much better experience for everyone here if the more experienced people helped out by providing guidance rather than criticisms. Just my personal opinion, however, and it's worth exactly what you paid for it :) Personally I think it's great that he's actually excited enough about this particular topic to want to go in and make the article better. And I think we could do better in providing some starting points for him to begin his research. SqlPac 20:04, 22 May 2007 (UTC)
Computer programs, in source code form, must conform to the syntax specified in the programming language.
Why is this in the second sentence? In fact, I doubt it's important or enlightening enough to be in the intro at all.
It's a transition sentence to change the subject from computer program to the more general subject of programming languages. Timhowardriley 19:15, 3 May 2007 (UTC)
The more general subject of programming languages is better covered by the more general subject of programming languages, rather than the more specific subject of computer programs. --HappyDog 00:53, 4 May 2007 (UTC)
Most programming languages are imperative, 
Most? This kind of statement needs a citation.
OK. But I can think of a dozen languages that are procedural and only one that is non-procedural. A simple edit could fix this. Timhowardriley 19:15, 3 May 2007 (UTC)
Well, if you can only think of one, then perhaps we should say that there is only one. Is that one SQL, by any chance? --HappyDog 00:53, 4 May 2007 (UTC)
I'd say not - just because Timhowardriley has only one come to mind doesn't mean there aren't more. 24.68.148.215 (talk) 05:55, 18 December 2009 (UTC)
meaning each instruction is a step in an algorithm. (For an imperative example, see C.) 
Not true. A single step in the algorithm may require many instructions to be carried out. For example, try getting the square root of x in assembly language.
True. One instruction in the source code form gets converted to many instructions in the assembly form. This transformation process is explained in a subsequent paragraph. Timhowardriley 19:15, 3 May 2007 (UTC)
Sometimes, the source (believe it or not!) is in assembly language. HappyDog's Verdict - not qualified to write on this subject. --HappyDog 00:53, 4 May 2007 (UTC)
However, some programming languages are declarative, meaning the computer program
consists of a single instruction. The single instruction is crafted to tell the computer what to do, not how to do it. 
Completely false.
Please explain the flaw. Here's a single instruction that the interpreter has lots of leeway in deciding how best to fetch the answer: select salary from database where name = "Derek"; Timhowardriley 19:15, 3 May 2007 (UTC)
Here is a trivial example in Prolog, which is more than a single instruction:
sibling(X, Y)      :- parent_child(Z, X), parent_child(Z, Y).
parent_child(X, Y) :- father_child(X, Y).
parent_child(X, Y) :- mother_child(X, Y).
mother_child(trude, sally).
father_child(tom, sally).
father_child(tom, erica).
father_child(mike, tom).
If this is a 'single instruction' (bearing in mind that in a declarative language, the term 'instruction' is somewhat meaningless) then single_instruction == single_program. --HappyDog 00:53, 4 May 2007 (UTC)
(For a declarative example, see SQL.)
As detailed above, SQL is not declarative (although it contains some declarative elements). It is also debatable as to whether it is a programming language, and for this reason should not even be mentioned in the introduction.
How is it not a programming language? It has a grammar so it's a language. It runs in an interpreter like other computer programs. To be honest with you, declarative vs. imperative is new to me. Is the distinguishing characteristic whether or not the program tells the interpreter *how* to do the work? Timhowardriley 19:15, 3 May 2007 (UTC)
Language != programming language, although I retract the 'not a declarative language' statement. However, there is sufficient disagreement about this to avoid mentioning it so strongly in the first paragraph, imho.
Quote: "declarative vs. imperative is new to me." HappyDog's Verdict - not qualified to write on this subject. --HappyDog 00:53, 4 May 2007 (UTC)
In general - you have missed out several important points in the current intro, have expressed the remaining points less well and added some irrelevant and incorrect information. You have compressed the current 'friendly' intro into a single daunting block of text, which reads like "here is a list of things what I know about computer programs". Most importantly, you have still not explained what is wrong with the existing intro. Please do not bother posting any more suggestions for improvements until you have bullet-pointed the errors/omissions/ambiguities in the current intro.
--HappyDog 08:53, 3 May 2007 (UTC)
I will ignore the incendiary tone of your request. But to your point that I have not explained what is wrong with the existing intro, the following is a cut-and-paste of my previous post: If a computer program is the current definition, "a collection of instructions that describe a task, or set of tasks, to be carried out by a computer", and since "collection" means, "to gather", and since "describe" means "to depict in words", and since "task" means "work to be done", then you would have to agree that a computer program is a "gathering of instructions that depicts in words work to be done, or a set of works to be done, to be carried out by a computer." Is this really what you mean for the definition of a computer program? In spite the fact that SQL is flexible in it's syntax, I would not go as far as to say that it is simply a gathering of instructions. Moreover, "to depict in words" does not add any meaning because the alternative would be to depict in, say, pictures. Finally, "work to be done"? Well, maybe. But... Timhowardriley 19:15, 3 May 2007 (UTC)
Given the phrase "time flies like an arrow", since "time" means "measure the duration of", and since "flies" means "a group of insects", and since "like" means "in the same manner as" then you would have to agree that we should "measure the duration of a group of insects in the same manner as one would measure an arrow". Please raise your hand if you don't get the rather crass allusion. --HappyDog 00:53, 4 May 2007 (UTC)
Also, here is a cut-and-paste of my questioning the second sentence: "Computer programs are also known as ..." A list of synonyms should follow. However, what follows is a list which combines synonyms (software), classes (system vs. application), and nonsense (programs): "Computer programs are also known as programs" Timhowardriley 19:15, 3 May 2007 (UTC)
This point is worthy of consideration - the sentence could maybe be worked on. However, these are all names that are used to describe computer programs, and (to be honest) how you classify the programs is not that relevant here. In the introduction we should include the most common names that are used to describe computer programs, for people who have been redirected to this article. If the delineation between classes of program is important then it should have a separate section in the body of the article where the distinction is made clear. In my opinion, this sentence is neither incorrect, nor misleading (though it may be incomplete). Remember: (apples = fruit) != (fruit = apples) --HappyDog 00:53, 4 May 2007 (UTC)
In the many threads above this one, I have asked many questions that have remained unanswered. Like, how does "a set of tasks" help to define what a computer program is? Timhowardriley 19:15, 3 May 2007 (UTC)
Because a program may not simply carry out a single task. In fact, nowadays most programs carry out many tasks [1]. --HappyDog 00:53, 4 May 2007 (UTC)
Most importantly, the current article is not understandable. It does not clearly express computer program for both experts and non-experts in appropriate detail. Nor does it thoroughly explore and explain the subject. The subject should include the different states (forms) of computer programs, how computer programs transition to the different states, and the two classes of computer programs. This is where I believe I have added value. Timhowardriley 19:15, 3 May 2007 (UTC)
We're talking about the introduction here. I agree that the body of the article has many problems and needs a lot of work, but the points you raise are not relevant to the introduction. --HappyDog 00:53, 4 May 2007 (UTC)

The definition should be changed to include interrupters. What do you call something in JAVA? Not a program?. A lot of PASCAL programs were compiled to P-Code. --Steamerandy (talk) 20:50, 28 September 2014 (UTC)

Less specific intro[edit]

The lead in describing a program as a sequence of instruction is missleading. A list or sequence implies sequential execution of instructions the simplest form of a program. I suggest it be changed. How about a change that is less specific on organization. ...

1) A computer program is stored instructions performed by a computer.

2) A computer program is a set of instructions performed by a computer.

3) A computer program controls or directs a computers operation.

The lead description needs to convey that a program is executed instructions. It should not express sequential or non-sequential execution.

And just to inform some here. Computers were built that would not execute data. The Borrows B5000 1961 ALGOL machines had 3 type bits on every memory location that indicated the word type. The processor would only execute instructions from instruction type words. Omly in privileged mode could the MCP write the type bits of a memory location. Jumping into data caused an exception.

Micro computers at first were a backward step. Most mainframe computers separated instruction and data. Most using read only protection. Micro processors were not originally designed for general use. Usually having programs in ROM.

Steamerandy (talk) 21:05, 12 October 2015 (UTC)

Programs have some structure, at least, so "set" doesn't seems quite right. I've changed it into "collection", so you can read it as sequence, (abstract syntax) tree, or (control-flow) graph, depending on your preferred point-of-view. —Ruud 22:39, 12 October 2015 (UTC)

Must be me[edit]

"The terms computer programs, software program, or just program are the instructions for a computer." Does this seem just a little vague to anyone or is it just me? As I read this I'm looking at the instructions for an 8088-based computer in a book (the instructions look similar to this - [1]) and wondering where the "program" from this definition is located on the page. SqlPac (talk) 03:58, 17 March 2008 (UTC)

The definition is vague because of all the compromises that took place to get the article steady. Your point is well taken that a reference book containing an alphabetical listing of assembly language instructions does not constitute a computer program. (Or maybe it does, just not a meaningful computer program.) Instructions are implied to be executed sequentially in the definition. So by not saying, "are the sequence of instructions ...", but instead saying, "are the instructions ..." is not too far-fetched. Leaving out the word "sequence" accounts for declarative languages where the algorithm sequence is hidden. Timhowardriley (talk) 05:29, 17 March 2008 (UTC)
I understand a lot of compromises took place to get the intro to where it is, but compromise does not necessarily make good art, science, or writing ("a camel is a horse designed by committee".) A definition that is supposed to "imply" something, but cautiously avoids stating it outright seems a bit "weaselly". As you point out in your wording above, I think a big part of the problem is the fact that people still like to equate "order" with "sequential". I haven't seen a convincing argument on this talk page (or anywhere else for that matter) that the instructions in a computer program are not executed in an "orderly" fashion, whether sequential or otherwise.
The question of orderly execution aside, which "instructions for a computer" does the definition refer to? Probably not a list of instructions for a programming language from a reference guide somewhere. Case in point, SQL Server BOL lists all the T-SQL statements supported by SQL Server, but that list couldn't really be called a computer program could it? After all, typing in that list of statements as it appears: "ALTER TRIGGER ALTER TABLE ALTER SCHEMA" will just result in an error message.
Maybe a computer program is actually something more specific than a random list of instructions. Maybe it's more like a <insert collective noun here> of instructions submitted to a computer for the purpose of performing a specific task or tasks? Arguments over collective nouns could be avoided with a weaselly replacement for the collective noun, like "one or more" (assuming consensus could be reached that a computer program is always a minimum of one instruction in length, which I'm sure someone would want to argue.) SqlPac (talk) 04:20, 18 March 2008 (UTC)
I don't see why instructions contained in a book cannot be considered to be a computer program. It is a computer program that is not represented in an executable form, ie, a form of source code. Derek farn (talk) 11:33, 18 March 2008 (UTC)
If you could reconcile your definition of source code with these "instructions contained in a book" that I previously posted: "ALTER TRIGGER ALTER TABLE ALTER SCHEMA" it would help quite a bit. Although these three instructions are all valid instructions on SQL Server, pulled directly from a list of instructions in Microsoft's official documentation and reference guide, they seem to generate nothing but errors when they are run.
SQL Server CE DML statement list from Microsoft Books Online (BOL):
Statement Function
INSERT Adds a new row to a table.
UPDATE Changes existing data in a table.
DELETE Removes rows from a table
Result of running this source code as you call it:
 Msg 156, Level 15, State 1, Line 2 Incorrect syntax near the keyword 'UPDATE'.
In addition, see my previous example of "instructions copied from a book" above. If you can, please feel free to address the specific examples, or I can provide you with several more if necessary. Like this complete computer program in C++ which consists of valid instructions, but for some reason won't even compile:
 i++;
 i--;
Curious. SqlPac (talk) 14:42, 18 March 2008 (UTC)
BTW, while I don't particularly like the definition given on the source code page, for similar reasons to my dislike of the definition of computer program here, if you're going to equate "source code" with "computer program" as you did in your previous statement then you should have absolutely no problem using the word "sequence" in your definition as they did on the source code page. SqlPac (talk) 14:51, 18 March 2008 (UTC)
Perhaps the element missing from the current definition is syntax, which is after all the set of rules that define a well-formed (if not semantically correct) arrangement of instructions. That seems to be the part that you are taking issue with. --Allan McInnes (talk) 17:31, 18 March 2008 (UTC)
The part I'm taking issue with is that any "list of instructions" constitutes a "computer program". There are plenty of lists of computer instructions available in thousands of references all over the place, but this is the first time I've heard the claim that, for instance, a list of instructions ordered alphabetically for reference can be considered a program. The following are 100% syntactically valid individual instructions in C++:
 i++;
 i--;
Yet I would not define them as a computer program, and I don't personally know any C++ programmers who would define these syntactically valid instructions as a computer program. Can anyone here explain how the preceding syntactically valid instructions are in fact an actual honest-to-goodness C++ program, per the definition in the article?
If not, then you need to find a good definition. SqlPac (talk) 18:13, 18 March 2008 (UTC)
Sorry, I should have been more clear. The examples you give might be syntactically valid instructions, but they don't constitute a syntactically valid program. The grammar of a language defines the valid sequences of symbols that constitute a "program" in that language. Even binary executables must follow some kind of defined structure in order to constitute a program instead of just a chunk of arbitrary bits. --Allan McInnes (talk) 20:56, 18 March 2008 (UTC)
And yes, I know that I've mentioned the evil word "sequence" there. But even a declarative language like Haskell, or a concurrent language like occam, stores (source code) programs as a linear sequence of symbols. However, in those languages there's a difference between sequence of definition and sequence of execution (which is perhaps the distinction that needs to be drawn out here). I suppose that if we want to get pedantic, there are esoteric languages in which the program is a 2D array (Befunge being the example that comes to mind). But even those languages define a syntactic structure for the programs (see the Funge-98 spec for an example). --Allan McInnes (talk) 21:14, 18 March 2008 (UTC)
I don't begrudge you the word "sequence" here, although I think "ordered" is a better description of execution, since it encompasses a wide variety of possible scenarios. I find it interesting that people here who are going out of their way to avoid implying that programs have any order at all, yet they point you to articles that use the word "sequence" in their definitions (source code) and they believe it's implied in the definition given here (which it is not). I also think it's important to define the purpose of a computer program, which would make a much better definition I think. People get so caught up in trivial little details that they miss the big picture. I understand that this intro. was reached through a lot of compromise with a lot of different personalities, but the problem is that this intro. reads like it was reached through a lot of compromise with a lot of different personalities. Honestly, the intro. may be "safe", it's definitely "vague", and it's fairly useless to the target audience. SqlPac (talk) 21:46, 18 March 2008 (UTC)
We are, I think, in agreement. I agree that the present intro is vague to the point of uselessness. I also agree that "order" is a better term when discussing execution. As you rightly point out, "order" can encompass a variety of scenarios (including partial orders for concurrent and distributed execution :-) --Allan McInnes (talk) 01:37, 19 March 2008 (UTC)
I agree completely, especially since a program can be executed under a preemptive multitasking or parallel O/S, in which case the O/S controls order of execution of the program but still it ensures orderly execution :) It seems to me that it's important to nail down a solid definition of computer program because there are other aspects that haven't even been addressed yet. For instance, the second sentence is just slightly less vague than the first! I assume this was an intentional compromise of some sort as well. Also, I don't see where the difference between a "program" and a "subroutine" is explained. To be honest I may have missed it somewhere in the body of the text, but that's a fairly important distinction that should be pointed out early on. I avoided mentioning these items initially to keep the focus on fixing the first sentence. SqlPac (talk) 02:51, 19 March 2008 (UTC)
Does a set of instructions (in a sequence or otherwise) have to conform to some language syntax, or semantics, or perform some meaningful operation to be considered a program? There is a line to be drawn somewhere, but where? An alphabetic list of assembly instructions might prossibly be assembled and executed, who know what the result would be. The code i++; might be accepted by some basic-like language interpreter, even if it is not syntactically valid C or C++. The current wording avoids the issue, which is probably the safest thing to do in an introduction. Derek farn (talk) 19:10, 18 March 2008 (UTC)
The code i++; might be accepted by some basic-like language interpreter, even if it is not syntactically valid C or C++. Actually it is 100% Syntactically Valid C++. That is not even up for debate at this point. The question is "does 'i++;' constitute a computer program?" I'm not sure why you feel so compelled to cling to vagueness in your intro. Is there a Wikipedia policy on keeping the intro. to articles on technical topics vague and unclear for "safety" reasons? If so, can you give me that link? BTW, the alphabetic list of assembly instructions I provided previously, though it is a complete and accurate list of instructions, will not assemble; and it will not run (I tried it as I figured someone would say something to that effect). SqlPac (talk) 20:04, 18 March 2008 (UTC)
  1. Regarding, "Does a set of instructions (in a sequence or otherwise) have to conform to some language syntax, or semantics, or perform some meaningful operation to be considered a program?": This came up in the debate. The argument was that even a meaningless computer program was still a computer program. See this thread. User:Metrax observed that even starting a loop on an uninitialized variable constituted a computer program. However, I believe this 0.00001% nuance could be ignored. Instead, I placed my personal definition of a computer program on my talk page here. I'll address syntax below.
  2. Regarding, "I haven't seen a convincing argument on this talk page (or anywhere else for that matter) that the instructions in a computer program are not executed in an "orderly" fashion, whether sequential or otherwise.": I like sequence because I'm always drawn down to the program-counter register being incremented by one to get the next instruction. But orderly works for me too. One frequently proposed adjective that I object to is 'set'. 'Set of instructions' is no good because elements in a set cannot be duplicated. I chose the current definition because it could be sourced. However, I did modify the definition from the original author to appease some editors. Stair says on page 132 of "Principles of Information Systems" that a computer programs are "sequences of instructions for the computer."
  3. Regarding, "BTW, the alphabetic list of assembly instructions I provided previously, though it is a complete and accurate list of instructions, will not assemble; and it will not run (I tried it as I figured someone would say something to that effect)": I agree that computer programs must be in a proper syntax. But I'm not sure what to do about it. Can a definition with the word 'syntax' be sourced? Would you like to start a new thread to see if we can come up with a consensus on a definition that includes the word 'syntax'?

Please post replies below. The preceding was submitted by Timhowardriley (talk) 16:42, 19 March 2008 (UTC)

Regarding, "Does a set of instructions (in a sequence or otherwise)... You're combining multiple questions into one here, which is why you end up with your 0.00001% to begin with. The link you posted, unfortunately, has nothing to do with whether or not a program has to conform to a specific syntax. In fact, at that link, User:Metrax demonstrates with code samples that programs do conform to a specific syntax, language-defined. So that answers the first question.
The next quesion is about semantics. Most languages I can think of define semantics at the instruction level, not at the program level; so this is a non-issue to me. Those languages that define semantics for an entire program will vary widely in their specifics. So this, I think, is a non-issue anyway.
Now the third question is "does a program have to perform some meaningful operation?" This is a poorly worded question to begin with, and here's why: The word meaningful is completely subjective. You might consider a program that simply performs a bunch of NOPs in a loop to be completely meaningless. However, to a person doing performance testing of a processor or I/O subsytem this might be a perfectly reasonable and meaningful program. Get rid of the word meaningful, which is useless in an objective definition of a program, and instead just say that the program instructs the computer to perform specific tasks.
Regarding, "I haven't seen a convincing argument on this talk page ... Dictionary.com provides a few definitions of (computer) program, some involve the word "sequence" and others involve "set". I think that the word "sequence", when talking about execution order, might be too restrictive since you have programs that can be executed in non-sequential order (JMP statement can cause the program counter to go back by negative offsets or forward by larger than one offset, etc.), and order of execution can be controlled by the O/S and CPU (or CPUs) as well. Programs are, however, executed in an "orderly" fashion, with the order being controlled by various factors like the CPUs, O/S, etc. I think trying to define every possible order of execution would be a phenomenal waste of time and wouldn't add much value to the definition or the article as a whole. Plus, as soon as you think you've nailed down every possible order of execution, someone will come up with a new one for you.
Regarding, "BTW, the alphabetic list of assembly... Syntax is important, especially for source code. Syntax definitely needs to be included, but I think a major hurdle to getting the definition right would be to define what a program actually does. What is the purpose of a computer program? Then work backwards from there to fill in the blanks with the proper collective nouns and adjectives, etc. I think it's important here to start by defining a computer program in terms of what it does, since it's a somewhat abstract concept. And the expected/end result is often a good place to start when defining abstract concepts. And if you look at the Dictioanry.com defintions, you'll notice they have something in common. Whether they're talking about "sequences" or "sets", they all indicate that the program directs the computer to "solve problems", "perform tasks", basically to do something specific. SqlPac (talk) 18:18, 19 March 2008 (UTC)
A computer program might do something. If executed on a cpu it at least consumes electricity, if read by a person it alters the connection between some neurons in their brain. If a program generates another program that is never executed on a cpu or read by a person, is it a program? What is the sound of one hand clapping?
The sound of one hand clapping is immaterial, as is whether or not printed text fires a spark in your brain. The thing about "computer" programs is that they are designed to instruct a "computer" to do something. A Buddhist koan may not be the best place to start a definition of "computer program"; perhaps a slightly better starting point is with what exactly does a computer program do. And maybe we should try to separate the definition of source code from the definition of computer program? Or, if they are the same thing, then perhaps the two articles should be merged to reflect this reality?
What is the purpose of a computer program? I might write a program to show a perspective employer that I can program in language X, or as part of a requirement of a course I am on, or to sell to customers, or to be put in an advertising brochure (I was one asked to do this), the list goes on and on. Derek farn (talk) 19:01, 19 March 2008 (UTC)
What is the ultimate purpose of a computer program? Is it perhaps to instruct a computer to perform specific tasks? Or is that definition too narrow and Zen-less? SqlPac (talk) 02:46, 21 March 2008 (UTC)
Regarding, "The link you posted, unfortunately, has nothing to do with whether or not a program has to conform to a specific syntax.": You are right. That link has to do with a computer program having the correct syntax but is not meaningful. Timhowardriley (talk) 20:05, 19 March 2008 (UTC)
Yes, and meaningful is a meaningless term for this defintion :) "Computer program" should have an objective definition, and meaningful is a completely subjective adjective. Who's to say the program that I find meaningful will be meaningful to you as well, or vice versa? SqlPac (talk) 02:46, 21 March 2008 (UTC)

Computer program definition sandbox[edit]

Here is the current definition of computer program: The terms computer programs, software program, or just program are the instructions for a computer. What are your suggestions to change it? Should the word 'syntax' be included? Should the word 'sequence' be included? Should the word 'set' be included? Should the word 'order' (or 'orderly') be included? Does a computer program have to be executed at all, or could it be on paper for someone to read? Do computer programs have to be meaningful? Are computer programs the source code in sequential format (imperative), the source code in abstract format (declarative), the object code that finally gets generated after all the translations take place, or a combination of all three? If an optimizer changes the order the programmer requested, is the programmer's order no longer in sequence? Timhowardriley (talk) 20:05, 19 March 2008 (UTC)

I believe the definition of a computer program should be, "computer programs are instructions a syntax that can be parsed by a compiler, interpreter, virtual machine, or CPU." The word 'sequence' is left out but implied. After all, all instructions are assumed to be executed sequentially. (Think recipes or bike assemblies.) Then declarative languages are represented, and object code is represented. Optimizations need not be considered because the instruction are looked at from the author's point of view, not from the translator's point of view which may be different. This definition also includes meaningless programs in that it omits any reference to algorithms, which must be meaningful. Finally, this definition works well for both paper and actual source code. Timhowardriley (talk) 20:36, 19 March 2008 (UTC)
I think that nothing should be both left out and implied. I also think that the definition does not imply any order, least of all sequential. I think your definition above is a lot closer than what is currently on the page; although it doesn't tell me what a program does. This definition is unsatisfying in much the same way that "an objects with wheels and a motor" is an unsatisfying definition of automobile. It doesn't really tell you anything useful about it. What's it do? What's it for? What's it's purpose? The purpose of a "computer program" is really extremely obvious once you remove all the obfuscatory Buddhist koans, metaphysics, and analysis paralysis. A computer program instructs a computer to perform tasks, plain and simple. Once you know what it's for, you can work backwards to include all the hypertechnical details about parsing, compilation, interpretation, etc., and hypothetical posturing you want.
I mean if you really want to get into hypertechnical details, are machine language instructions actually "parsed"? If so, what model of parsing is it? LL, LR, SLR, LALR? Do machine language instructions really go through lexical analysis, conversion to tokens, and syntactic analysis (possibly with creation of a parse tree/AST), all before being executed by the CPU?
I suggest that a decision be made as to what a computer program actually does before you try to redefine it. That, or just use the definition straight out of the dictionary, which is actually looking better by the minute. SqlPac (talk) 03:11, 21 March 2008 (UTC)
  1. I plead ignorant regarding the hypertechnical details of machine language instructions. I can only go by what Tanenbaum (he wrote minix) says in his book, "Structured Computer Organization." He says, "When the source language is essentially a symbolic representation for a numerical machine language, the translator is called an assembler and the source language is called an assembly language." He later explains, that there is a one-to-one mapping between assembly language instructions and machine instructions. To go from the assembly language to the machine instructions, pass one of the process is to take the symbolic representation and build a symbol table. I interpret building the symbol table as parsing each assembly language instruction.
  2. Regarding an automobile being an object with wheels and a motor. I think that's a satisfying definition. I would add that it's an object with wheels and a motor used to transport people (as opposed to being used to transport animals or things, like a truck). Actually, your definition is more specific than the automobile article. The article vaguely calls an automobile, "a vehicle that moves itself rather than being moved by another vehicle or animal." It doesn't even mention motor. Anyway, I don't believe that a definition needs to contain all of the characteristics of the object it's defining, just the essence of it. The article itself can then expand on the essence.
  3. Regarding starting with a dictionary's definition, I say throw it in this sandbox. My bias is for the definition to contain the word "syntax" in it.
  4. Regarding "I think that nothing should be both left out and implied." If you look closely at the vast history of this talk page, you'll notice that there's been an objection to every word ever suggested to be added to the definition of computer program. The objections vary in weight; nontheless, everyone has revert power. I've concluded that if we were still in the 1970s, defining computer program would be easier. But hardware has since increased so much that computer instructions are too varied to capture all of the meanings into a single, clear sentence.
Please post you replies below. The preceding was submitted by Timhowardriley (talk) 16:57, 21 March 2008 (UTC)
I interpret building the symbol table as parsing each assembly language instruction. Converting assembly language to machine language is not really the question at hand. The question is this: once you've assembled your source code and begin feeding those assembled machine language instructions into the CPU, is the CPU "parsing" at that point? There's already an article for source code, which should cover parsing of source code (a category that assembler code falls into). Again, let's not confuse source code with program. An assembled or compiled program is a computer program, but it is not source code. Source code is a subset of program, since a program can also be the compiled/assembled binary.
Regarding an automobile... Actually I believe it mentions motor in the next sentence or two. It also mentions being able to move without the aid of an animal or another vehicle, and it mentions what it transports. It clearly defines an automobile in terms of its purpose and characteristics assigned to it, without getting into the hypertechnical details. In the opening definition you'll notice a conspicuous absence of a detailed discussion of drive trains, the internal workings of transmissions, fuel-injection versus carburetors, etc. You're absolutely right that you don't need to pack all the characteristics of a thing into the first sentence of its definition, which is why I recommend taking two steps back and start by answering the questions "At it's most basic level, what does a computer program do? What is the purpose of a computer program?" That in itself will quickly lead to a decent opening for your article and a much better definition.
Regarding starting with a dictionary's definition... I put a link to it in the page earlier, there are actually a few slightly different definitions on the page. Personally I think mentioning syntax would be great in the second, third, or fourth sentence of the introduction. As you said, you don't need to jam every characteristic of an object into the first sentence of the definition. Start simple. What is the purpose of a computer program? Add all the hypertechnical discussion later.
Regarding "I think that nothing should be both left out and implied." What's happened on this page is that the posters have lost sight of the forest because they're standing face to face with a tree. Not to disparage anyone, but the discussion here has focused on hypertechnical details about whether source code on a printed page is a computer program because it changes your brain wave pattern when you read it. No offense, but who cares? Check the article on television. Is there a discussion of how watching TV changes your brain waves? Would it really add to the article? Would a discussion of photons, LCD, and plasma in the first sentence add a lot of value to the article? Or would it just confuse readers and provoke arguments on the talk page about hypertechical trivia?
No one has sat down to really think about what a computer program actually is; perhaps because it's way too obvious. A computer program in the '70s, '80s, and '90s was simply a means of instructing a computer to perform one or more tasks. In 2008 is a computer program something different from that? Is a computer program no longer a means of instructing a computer to perform one or more tasks? Is it something more important than that? Is it really more complex than that? Can someone here prove that a computer program is more than that? Everything above and beyond that is what I consider technical, and completely unnecessary in the opening sentence. SqlPac (talk) 02:17, 22 March 2008 (UTC)

The terms ill-formed program (C++ Standard, Clause 1.3.4: "input to a C++ implementation that is not a well-formed program.") and the commonly heard syntactically incorrect program both suggest that program can apply to (set|bag|sequence|collection) or instructions that do not completely obey rules of syntax or semantics. I say completely because I would suggest that a sequence of characters ought to have some semblance of looking like a program in some language and not just a random jumble. Derek farn (talk) 20:56, 19 March 2008 (UTC)

So, you're saying that the C++ standard says a computer program need not be in a proper syntax. Boy is that counter-intuitive. That's like a grammar book saying that an English sentence need not be grammatically correct. Please finish the sentence in the standard: "input to a C++ implementation that is not a well-formed program ..." what? Timhowardriley (talk) 21:08, 19 March 2008 (UTC)
The C++ Standard is saying that here are various kinds of programs, one of which is ill-formed. "The grass green is" is an ungrammatical English sentence, but it is still a sentence, written using English words. I can write a program using C++ keywords & tokens that looks like C++ but contains syntax errors. Derek farn (talk) 21:51, 19 March 2008 (UTC)
I don't think "The grass green is" will pass as a sentence in any English grammar book. I also believe that a C++ program that violates the C++ Backus–Naur form of grammar is not a computer program. Again, please finish the sentence in the C++ standard that begins, "input to a C++ implementation that is not a well-formed program ..." what? Timhowardriley (talk) 22:17, 19 March 2008 (UTC)
I find the diff history option useful for spotting when people make small changes. Reread what I wrote, we agree on the status of the sentence. Derek farn (talk) 02:11, 20 March 2008 (UTC)
OK. I see the period now. However, this statement is not a sentence: "input to a C++ implementation that is not a well-formed program." It lacks a verb. Maybe the sentence is meant to be, "Input to a C++ implementation that is not a well-formed program is still a computer program." Anyway, it seems like Derek is rejecting the idea that 'syntax' should be in the definition. Timhowardriley (talk) 05:57, 20 March 2008 (UTC)
This is some more of that hypertechnical trivia that is unnecessary to even address, but since we're veering off track let me go ahead and throw in my 2 cents. The C++ standard definitions are C++ specific. Their maximum effective range ends on the last page of that document. The definitions in the C++ standard do not map one-to-one with every other programming language in existence, and many have their own definitions for different concepts. While we're on the topic of hypertechnical trivia, you'll notice that the title of this article is computer program, not C++ "well-formed program" or "ill-formed program". This is distracting superfluous trivia with no bearing on the discussion at hand. SqlPac (talk) 02:17, 22 March 2008 (UTC)

A program does not have to be a sequence of instructions nor have to be executed by a processor. A computer program could be a set of rules.

The most general definition is: A computer program directs the operations a computer performs.

Programs are instruction given to a computer (or interrupter, program) directing it's actions.

You can not write a computer program in JAVA sense it is not run buy the computer? Right?

Does not a spreadsheet provide programming

--Steamerandy (talk) 22:03, 28 September 2014 (UTC)

RE: "... used to produce them"[edit]

In this paragraph, the phrase, "used to produce them", in the sentence, "Computer programs can be categorized by the programming language paradigm used to produce them", produces several problems.

  1. "Them" is supposed to be a pronoun that represents a group of people: "Give them the money." Dictionary.com says "them" is nonstandard for those: "He don't want them books." The sentence in question lacks a group of people to which "them" is supposed to represent.
  2. "Them", even if meant to mean "those", is a dangling modifier. "Them" is a pronoun that seems to represent the "programming language paradigm" because it most closely follows it. As a result, the pronoun gives the reader pause to think how do computer programs produce programming language paradigms? The correct reality is *people* use programming language paradigms to produce computer programs. So is "them" meant to represent "computer programs"? If so, then "them" is too far away in the sentence from the noun it supposedly represents. (I stand corrected after reading User:Koavf's posts.)
  3. "Them" is plural and "programming language paradigm" is singular. Rule: a pronoun must agree in number with the noun it represents. Example: "Many students got A's, giving them motivation to continue studying." Not, "John got an A, giving them motivation to continue studying." (I stand corrected after reading User:Koavf's posts.)
  4. The sentence in question implies that paradigms produce computer programs. The correct reality is *people* use programming language paradigms to produce computer programs. (Added subsequent to original post.) Timhowardriley (talk) 17:45, 4 April 2008 (UTC)

Since "them" does not represent any noun in the sentence, the sentence loses no meaning and gains clarity when the phrase, "used to produce them" is removed.

Please post replies below. The preceding was submitted by Timhowardriley (talk) 06:30, 16 March 2008 (UTC)

Them means something "Them" refers to the computer programs. If I wrote "Contestants in the Olympics are categorized by the countries that sent them," the word "them" would clearly refer to the contestants. Even if this is in fact a non-standard usage of the word "them," it does convey meaning and deleting that phrase would make the sentence unintelligible (what would "Computer programs can be categorized by the programming language paradigm" even mean?) If you want to re-word the sentence while maintaining all of the information in it, be my guest, but your assertion does not match reality. -Justin (koavf)TCM☯ 21:24, 3 April 2008 (UTC)
Furthermore You first claim is simply untrue as well. Dictionary.com states that them is "the objective case of they..." and they is the "nominative plural of he, she, and it" (emphasis added.) "Them" does not necessarily refer to persons (rather than "people" which actually is misused in your sentence.) -Justin (koavf)TCM☯ 21:27, 3 April 2008 (UTC)
  1. Regarding, "the word 'them' would clearly refer to the contestants": Yes, "them" is a pronoun representing a group of people, and contestants are a group of people. "Those" is the pronoun representing a group of things. Computer programs are things, not people. So if a pronoun is needed, then it would be "those", not "them".
  2. Regarding, "... deleting that phrase would make the sentence unintelligible. What would 'Computer programs can be categorized by the programming language paradigm" even mean?'": The sentence wouldn't be written exactly as that. Instead, it would be, "Computer programs can be categorized by programming language paradigm." By removing the article "the", the sentence makes a general statement of fact.
  3. Regarding, "You first claim is simply untrue as well.": OK. It seems like "them" can be an abstraction of "it", if you dig deeper than I did. But I still stand by my first claim that, "'Them' is supposed to be a pronoun that represents a group of people." Again, "those" is the pronoun representing a group of things. I would still argue that upon reading "... used to produce them", the reader of the sentence would have to think, "... used to produce whom?".
  4. Regarding, "rather than 'people' which actually is misused in your sentence.": Could you expand on this?
Please post your replies below. The preceding was submitted by Timhowardriley (talk) 23:24, 3 April 2008 (UTC)
People v. persons People is a group of persons or a nation with a common ethnicity or a folk. "Persons" is the plural of person. I think the phrase "Computer programs can be categorized by programming language paradigm" is too vague and it still omits information that is important in the original phrase - namely, that these programming language paradigms produced them. I think that in the vernacular as well as in definitional usage, "them" is completely appropriate. -Justin (koavf)TCM☯ 23:40, 3 April 2008 (UTC)
Regarding "namely, that these programming language paradigms produced them."
  1. This inference is exactly why the phrase should be removed. It adds information that is not true, namely that paradigms produce computer programs. A paradigm is simply a category -- it has no power to produce anything. People produce computer programs, and the resulting programs fall into one of two paradigms.
  2. If "them" is an appropriate pronoun for a group of things, then "those" should also be an appropriate pronoun for a group of things. "Give those to them." OK, "them" does have a vernacular acceptance for a group of things, now that I think of it more. "Some pencils need sharpening. Sharpen them now." But whether "them" or "those" is used as the pronoun in the sentence in question, it should be removed along with it's supporting verb, "used to produce ..." Again, paradigms do not produce computer programs.
  3. The sentence in question should be a simple topic sentence, "Computer programs can be categorized by programming language paradigm. Two of the main paradigms are ..." Another topic sentence in this same paradigm (pardon the pun) is, "Businesses can be categorized by output paradigm. Two of the main paradigms are product and service." Still another topic sentence, "Animals can be categorized by behavioral paradigm. Two of the main paradigms are aggressive and passive." You wouldn't expect any additions, like "used to [anything] them", in these topic sentences.
Submitted by Timhowardriley (talk) 16:25, 4 April 2008 (UTC)
Thanks to Justin (koavf) for such a detailed analysis of the grammar issues surrounding the use of this in a particular sentence. Timhowardriley and I have been involved in protracted discussions before on the use of particular terms and phrases, and I know he sometimes gets set on the use of some term. I objected to the original edit purely because it produced a nonsensical sentence. I am happy with any introductory sentence that clearly expresses the intent and keeps people happy. Derek farn (talk) 19:38, 4 April 2008 (UTC)
Derek, are you following the thread? The word "this" is not the issue. Assuming you mean "them", the issue is do paradigms produce computer programs? The sentence having the phrase, "used to produce them", implies that paradigms produce computer programs. Paradigms do not produce programs, people (persons) do. Your comment for this revert was, "POintless grammar rule ruins ease of understanding". I think the grammar rule you're referring to is pronouns must not dangle; instead, they must unambiguously refer to a corresponding noun. This grammar rule is not pointless. Yes, a consensus is forming to conclude that "them" refers to "computer programs" and is, therefore, not dangling. However, the phrase in question implies something nonsensical and should be removed. As an aside, if you're going to contribute to the talk, stick to the subject at hand. Do not interject any personal generalizations like, "... he sometimes gets set on the use of some term." Timhowardriley (talk) 00:38, 5 April 2008 (UTC)

Yes but... is that C?[edit]

The code in the article figure:

main()
   {
   output_string("Hello, Wikipedia!");
   return 0;
   }

will most certainly not compile on ANSI C (for two reasons). It might be some sort of proprietary subdialect. It's been a long time since I wrote anything in C, but it might look a lot more like:

#include <stdio.h>

int main(void)
   {
   puts("Hello, Wikipedia!");
   return 0;
   }

--Xyzt1234 (talk) 09:55, 25 April 2008 (UTC)

Maybe somebody left out the function definition for output_string(). :) SqlPac (talk) 02:34, 6 May 2008 (UTC)

Made a standard conforming variant. --Sebbb-m (talk) 13:47, 26 August 2008 (UTC)

Self-reference[edit]

The reference to Wikipedia in the example code is unwarranted (Wikipedia:Avoid self-references); the usual "Hello world" would be better. I'd also suggest the use of embedded text instead of an image, as in spell checker. Dcoetzee 21:35, 20 June 2008 (UTC)

Programmable machines[edit]

The article should address the idea that there are programmable machines that are not computers. Calculators and robots aren't computers according to their definitions in Wikipedia, so I think they work as examples.Diego (talk) 06:29, 31 July 2008 (UTC)

I don't think it's up to this article to define a computer. Is a CPU required? What about the IBM tabulating machine and other calculators before the Von Neumann architecture? Moreover, wp:lead says, "The lead serves both as an introduction to the article below and as a short, independent summary of the important aspects of the article's topic." And nuances like are calculators computers is not covered in the article. Timhowardriley (talk) 15:58, 31 July 2008 (UTC)
I don't mean to define what a computer is , but I think that those questions you ask should be addressed as relevant context of this article, because programs can also be written for those kinds of machines. I'll try to find some relevant sources that explore the meaning of "programming" and its limits - probably something from Douglas Hofstadter will give some insights. Diego (talk) 16:07, 31 July 2008 (UTC)
Also, keep in mind that there should be paragraph in the article if the lead is to continue to be an independent summary. Timhowardriley (talk) 16:13, 31 July 2008 (UTC)

Relationship between computer program and algorithm[edit]

I see a strong coupling between computer programs and algorithms. There should be a paragraph that compares and contrasts these subjects. One is started here, and it should be expanded upon and maybe even be moved up to the top of the article. But this edit added a nuance in the introduction that isn't covered in the article. To repeat my previous post: wp:lead says, "The lead serves both as an introduction to the article below and as a short, independent summary of the important aspects of the article's topic." —Preceding unsigned comment added by Timhowardriley (talkcontribs)

If you keep reading, right below it states "This should not be taken to exclude information from the lead, but to include it in both the lead and body" ;-) Since covering that subject is important, I think it's better to keep that edit in the lead even if it's inconsistent, until it can be expanded, instead of deleting it. Otherwise that information could never be added in the future, not having a 'hook' on which to expand it. Diego (talk) 17:37, 31 July 2008 (UTC)
I agree there's enough ambiguity to allow for judgement. Timhowardriley (talk) 17:42, 31 July 2008 (UTC)

Self modifying code: out-of-scope facts[edit]

I moved the following sentences from the Self Modifying Code paragraph to this talk page. I don't understand the technology that's being described; however, caching has a clear definition, separate from Self modifying code. These facts either are dubious or belong someplace else. If my characterization is wrong, please revert this edit.

  • "Sometimes self modification is used as a form of dynamic optimization where the code becomes more efficient through caching or similar techniques. The technique is also often used to nullify all overhead of already embedded debugging code after a 'one time' test decides that debugging should be 'switched off' for the run. Early mainframe operating systems allowed program overlays as a normal practice for application programs, to conserve memory." Timhowardriley (talk) 20:46, 20 February 2009 (UTC)

Script vs Program[edit]

I think that script ends in time while program runs indefinitely (if not terminated). — Preceding unsigned comment added by 89.31.161.101 (talkcontribs) 04:43, 13 November 2009

Any citation for that?
It's not a definition I have ever come across, and it contradicts the ones I have come across. JöG (talk) 10:02, 25 November 2012 (UTC)
This is not correct. As a computer programmer and a student studying software at UC Berkeley, a script is an easily understandable program written in a flexible programming language, such as Python. A regular program is a rough, probably compiled executable file, most likely written in a more difficult to understand language such as C. --Carrot Lord (talk) 09:00, 20 January 2013 (UTC)
A script doesn't necessarily have to be easy to understand. See scripting language for a definition of what a script is. —Kri (talk) 22:23, 30 July 2017 (UTC)

Examples and history[edit]

Could we get a few more examples? Hello, world is interesting to me as a professional, but I think non-programmers would be thinking, "What's the point?" I'd like to see some actual calculations.

Also, some historical examples would be nice. How about some of the first actual computer programs used for the Mark I that Grace Hopper and her colleagues wrote? I'd like to see how their source code contrasts with modern source code. --Uncle Ed (talk) 21:29, 4 April 2011 (UTC)

I added a generic source code image to the top of the page (a while ago). It is not written in a real programming language. However, the code is more like a mixture of JavaScript and Ruby. I'm not sure. I just invented the fictional code. It is however, based off a personal project where I actually invent syntax for a real language. Even so, the image does NOT contain the code of a real programming language, making it very generic and easy to understand. --Carrot Lord (talk) 08:59, 20 January 2013 (UTC)

More names[edit]

Computer programs, besides being called apps and software, can also be called tools, utilities, and gadgets. --Carrot Lord (talk) 15:49, 20 January 2013 (UTC)

Spelling note[edit]

If I understand correctly, program is the American spelling of programme, so there should be some disambiguation here (from Computer Programme, the TV show). However, while it is the correct spelling, it is seldom used in British English. It appears like billion, though, that "computer program" now dominates in British English as well. Shouldn't the article reflect this? Ema--or (talk) 21:35, 1 November 2014 (UTC) PS That has already been addressed before I asked.Ema--or (talk) 23:13, 31 March 2015 (UTC) PPS This search bears this out.Ema--or (talk) 23:31, 31 March 2015 (UTC)

Article not a platform for advertising[edit]

  • Secondly, "app" is short for application. Paragraphs explaining "app" are better made here: Application software.
  • Thirdly, the newly created heading of "Nomenclature" lists the following brands: Windows Store, Apple App Store, Mac App Store, Google Play or Intel AppUp. None of these items help explain what a Computer Program is.
  • Finally, the newly created picture of a calculator also doesn't help explain what a Computer Program is.

Timhowardriley (talk) 22:44, 2 October 2015 (UTC)

Hello, Timhowardriley.
Glad to see you here. I will be addressing each bullet point with a corresponding one. I am hoping my explanation can bring satisfaction; but in case this did not happen, we can always resort to further dispute resolution like WP:3O.
  • If you excuse my frankness, you argument #1 consists of several layers of incorrectness. I can immediately spot three problems with it.
    1. Commercial ≠ Advertisement ≠ Advertising. After all, Principles of Information Systems, Sixth Edition is also commercial; one has to pay money to have a copy of it. None of the sources from 1 through 6 are advertisement.
    2. The words "ad", "advertising" and "advertisement" do not appear in Wikipedia:Identifying reliable sources at all. The policy does not even comes close to this verbal minefield. Its certification criteria are being primary, secondary and tertiary sources with three foundations of reliable author, reliable publisher and contents itself. In fact, advertisements are primary sources; if they pass the primary source validity test, they are okay. Sources 1, 4, 5 and 6 are all secondary sources. Sources 2 and 3 are tertiary sources.
    3. Principles of Information Systems, Sixth Edition is published in 2003; that's 13 years ago. "App" came to being in 2006. As of 2015, however, nearly all of computer programs out there are called "apps", a consequence of the explosive growth of the mobile apps. Even though the term "computer program" has longevity, the term "app" has popularity. And since we are dealing with words, why don't you look it up in COCA? It gives you real-world use cases in very popular mainstream journals. It is only a matter of linking them here.
  • That's right, they don't. They are not meant to. This article is not a strictly programming topic. This website is not a programming wiki either. It is an encyclopedia. The object of including these items is to have broad coverage of all aspects of the subject of the article. But maybe we should merge parts of the Nomenclature section with "Functional categories" section. If I may venture a guess, your opposition to their inclusion might have its root to your belief that an "app" is never a utility, but always an application program.
  • It is meant to show what a computer program looks like. "What it is?" is too broad a topic for one single image. But I am ready to waive this too. So, please tell me: What image do you think the article must have to best represent either all or the most immediate and primitive aspect of the subject? Rwessel might also want to weight in too. He said my original choice of image was too simplistic.
Best regards,
Codename Lisa (talk) 23:58, 2 October 2015 (UTC)
Your edits fit better here: Mobile app. Timhowardriley (talk) 00:39, 3 October 2015 (UTC)
@Timhowardriley: And web app. And portable app. And Metro-style app. And besides, my sources are specifically aimed at "desktop apps", thanks for suggestion, but no. Their inclusion here has Wikipedia:Verifiability's support. When I signed up for Wikipedia, I put a permanent separator between what I believe must be correct and what sources say. I suggest you do the same. Best regards, Codename Lisa (talk) 14:13, 3 October 2015 (UTC)
I believe that that advertising as an unreliable source is covered by WP:NOTRS. Also, in my experience, "app" is rarely applied to desktop applications. There are some browser based "apps", but the usual term is "application". Clearly the term app is commonly used for mobile applications. Rwessel (talk) 05:48, 3 October 2015 (UTC)
@Rwessel: NOTRS mentions ads in the footnotes. But again, my sources are not ads either.
You are right about "desktop apps"; the term began to enter wide circulation with Windows 8.0, near the end of 2012. But again, desktop apps are a very small population of all apps today. Per WP:RS, we must not give them undue weight. Like I said "computer program" has longevity; people have been using this name for at least thirty threes years. But again, I am not proposing this article to be renamed yet, am I?
Still, you did not mention the image at all. Do I take it that the issue is settled to your satisfaction?
Best regards,
Codename Lisa (talk) 14:13, 3 October 2015 (UTC)
WP:NOTRS includes "Such sources include websites and publications expressing views that are widely considered by other sources to be extremist or promotional" (the footnote makes that more explicit), and the following section is about self published sources. Advertisements fall into both categories. And "Questionable sources should only be used as sources of material on themselves." As to the picture. I'm not sure just how relevant it actually is, but it's better than the "hello, world" one. I do think the Nomenclature section, in whatever its final form, should, however, use the term "application" instead of "apps". Rwessel (talk) 15:42, 3 October 2015 (UTC)
I do think the Nomenclature section, in whatever its final form, should, however, use the term "application" instead of "apps". No original research, please. If the source says "app", you should write "app". Period. Quite frankly, I have seen people who have been using "computer program" for their entire life. They cannot seem to accept that what school children and youngsters call "app" has already taken over the world. If you are one such person, please refrain from editing Wikipedia altogether.
this edit was a blatant act of disrupting Wikipedia to make a point. Fleet Command (talk) 20:14, 3 October 2015 (UTC)
Update: Just to be clear: You are not the person who did the disruptive revert. Nevertheless, Wikipedia's policy is WP:V. Please refrain from counter-productive arguments like NOTRS. ZDNet is a trustworthy source. Fleet Command (talk) 20:16, 3 October 2015 (UTC)
I was responding to the assertion that advertisements were not largely excluded as reliable sources. And "...If you are one such person, please refrain from editing Wikipedia altogether." Seriously? Whatever. "App" is decidedly less formal than "application", and other than where "app" is meant specifically, we should prefer the later. Again, IMO. Rwessel (talk) 22:17, 3 October 2015 (UTC)

Hello, everyone! Additional source inbound. Brace yourselves!

Ars Technica

PC Magazine

PC World

Books

  • Moemeka, Edward; Moemeka, Elizabeth; Lomasky, Elizabeth (2013). Real World Windows 8 App Development with JavaScript: Create Great Windows Store Apps. Apress. ISBN 9781430250807. 
  • Marmel, Elaine (2013). Microsoft Windows 8 Digital Classroom A Complete Training Package. New York: Wiley. p. 149. ISBN 9781118392881. 
  • Ballew, Joli (2014). Exam Ref 70-688 Supporting Windows 8.1 (MCSA). Microsoft Press. pp. 29–84. ISBN 9780133986280. 
  • Boyce, Jim; Shapiro, Jeffrey R.; Tidrow, Rob (2014). Windows 8.1 Bible. John Wiley & Sons. ISBN 9781118835180. 
  • Bishop, Sherry (2014). Adobe Dreamweaver Creative Cloud Revealed. Cengage Learning. ISBN 9781305118713. 

Others magazine

Field uses

Best regards,
Codename Lisa (talk) 10:04, 4 October 2015 (UTC)

App is out of scope[edit]

I removed calling a Computer Program an App. A Computer Program can't be an App because an App is a Computer Program. See Mobile app. You're creating circular logic. Timhowardriley (talk) 17:09, 3 October 2015 (UTC)

Hi.
Actually, a circular reference in linguistics has a name: Synonym. And it is perfectly valid. Pants are trousers and trousers are pants. Autumn is fall and fall is autumn.
Also, do you see the word "mobile" before the word "app"? In linguistic, it is called a noun adjunct and restricts a noun. In this mobile app is a specific form of app, i.e. on that runs on a mobile device. We have web app, portable app and desktop app too.
But most importantly, the claim is supported by a six sources. More can be found via COCA.
Best regards,
Codename Lisa (talk) 18:41, 3 October 2015 (UTC)
@Timhowardriley: Your fellow editor has spent her time finding six sources and at least five of them are excellent sources. If you have an actual policy-certified objection, WP:DR is the way to go, not edit warring. Frankly, your objections so far have been very weak. The two ZDNet sources are more than enough in my book. Fleet Command (talk) 20:21, 3 October 2015 (UTC)
Hello, Timhowardriley

(Comment by block-evading sockpuppet removed per WP:DENY. See Wikipedia:Sockpuppet investigations/Janagewen.)

Hello, [redacted]
Wikipedia is not censored and I certainly am not asking for anybody's permission. And deleting contents that do comply with Wikipedia's base policies is called vandalism. I invited Tim here to discuss policy compliance with him and that's exactly what he has not been doing so far.
And FYI, Android and Windows 10 both warn left and right about malicious apps and how installing them can be harmful. So, yes, computer viruses are malicious apps. Group noun: Malicious software.
Best regards,
Codename Lisa (talk) 10:15, 4 October 2015 (UTC)

Let's focus on the hypothesis that Computer Program and App are synonyms, just like pants and trousers are synonyms.

Computer Program and App are not synonyms. For every true statement regarding pants, you can equally substitute the word trousers. However, that's not the case with Computer Program and App. For example, it's true that a computer program can be categorized as system software. However, an app cannot. Please prove to me that a Computer Program and App are synonyms. Show me where it says, "an app is a sequence of instructions, written to perform a specified task on a computer." Timhowardriley (talk) 23:39, 3 October 2015 (UTC)

If you intend to focus, creating a new heading is not the correct course of action. And Wikipedia policies strictly says your personal analysis are of no value. I simply answered you to be polite. I invited here to hear your objections to my sources. If you have none, I see no point in continuing with this futile course of action. Best regards, Codename Lisa (talk) 10:18, 4 October 2015 (UTC)
Codename Lisa The sources that you provided in the article and above allow the reader to infer that there is something called a desktop app. However, none of them define app or backup your assertions that Computer Program and App are synonymous. I think you would agree that an operating system kernel is a Computer Program, but that it is not an App. Of course, you are certainly free to disagree, although we require a source before we can publish your opinion. 173.53.127.55 (talk) 13:08, 4 October 2015 (UTC)
You have mistaken "computer program" with "machine code". A kernel is a piece of machine code. A computer program definitely has one executable file. Kernels have none because they are part of the supervisor layer.
But I am ready to have a compromise with you on one thing: "App" is definitely different from "Computer program"; but the difference isn't so much as to warrant a full article.
Best regards,
Codename Lisa (talk) 17:14, 4 October 2015 (UTC)
There is no correspondence between "computer program" and a single executable. Some it is one executable, sometimes it's not, sometimes it’s not an executable at all but some sort of script file. It’s a matter of packaging. And certainly an OS kernel is one or more computer programs. Rwessel (talk) 02:48, 5 October 2015 (UTC)
Script files do have an executable file called an interpreter. Without it, they are mere text files. (At least most scripts are plain text if not all.) And as for an OS kernel, it is a component, like a cog, that has no purpose by itself alone. Once it becomes something whole, like an OS, you can debate whether it is an app or not. And yes, an OS is technically an app; Microsoft even sold Windows 8.1 in Windows Store, just like an app. And even if it was not app, so what? When you introduce one single example in a world with billions of apps, that example becomes an exception, not reason to fault 31 sources.
Best regards,
Codename Lisa (talk) 12:46, 5 October 2015 (UTC)

Are Computer Program and App synonyms?[edit]

Let's (again) focus on the hypothesis that Computer Program and App are synonyms, just like pants and trousers are synonyms. User:Codename Lisa used this logic to justify the inclusion of App in the definition of Computer Program.

Computer Program and App are not synonyms. If they were, then each would have the same definition. Dr. Ralph M. Stair (Florida State University) defined Computer Program in a textbook published by Thomson Reuters. He wrote on page 132, "Computer programs: sequences of instructions for the computer." Please cite the professor and publisher who defines App as sequences of computer instructions. (User:Codename Lisa, please don't edit my talk entries.) Timhowardriley (talk) 16:30, 4 October 2015 (UTC)

Hi.
I do not modify the text of your message. But proper heading and indentation are public property; we are expected to adhere to an etiquette here.
As for the citation, no problem. Will do. I will cite a source with specifications that we discussed in my talk page.
Best regards,
Codename Lisa (talk) 17:19, 4 October 2015 (UTC)
User:Codename Lisa's editing process is backwards. This editor first made edits and is now looking for sources.
This article used to be designated one of the Wikipedia:Good articles. To achieve this standard, editors paraphrased computer science textbook chapters into Wikipedia paragraphs. The sources came first, then the edits were made.
I doubt that Computer Program and App have the same definition. However, if a professor published the definition of App in a textbook that survived peer review as "a sequence of computer instructions", then I will change my opinion.
Regarding Apps in general: If a professor published a chapter describing the characteristics of computer programs written for computers without keyboards, then that would make an insightful Wikipedia paragraph. Timhowardriley (talk) 20:34, 4 October 2015 (UTC)
"This editor first made edits and is now looking for sources." Now, now! My first edit had six sources and I have provided 25 additional ones! And yet so far, you have done nothing but poisoning the atmosphere with your negativity, ignorance, frivolous demands and in this case, a blatant lie. The problem isn't the compliance of my edits with Wikipedia policies at all, an issue to which you never attended. The problem is your own brain, which is unable to accept the existence of the word "app", and constantly generate new excuses to reject it.
The three most important men in the computing industry are all university dropouts. (Bill Gates, Steve Wozniak and Steve Jobs) So, please stop making a God out of those stuffy college professors, who have never done anything worthy of notice for the computing industry. The academia is incredibly obtuse about computers, incredibly behind the time and incredibly slow to update itself. I will use their sources whenever those sources meet qualification requirements set down by WP:RS.
I also don't care if "computer program" and "app" are 100% synonyms. (The word "synonym" was to defuse your circular logic and it has served its purpose already.) Even if they overlap 50% in meaning, they deserve inclusion in the article.
Codename Lisa (talk) 21:28, 4 October 2015 (UTC)
I'm going to give you the opportunity here to apologize to me for the personal attack you made. You said, "The problem is your own brain..." If you don't sincerely apologize, then I'm going to file an administrator's complaint. If I do, you will receive the following message: "Information icon There is currently a discussion at Wikipedia:Administrators' noticeboard/Incidents regarding an issue with which you may have been involved. Thank you." Timhowardriley (talk) 21:45, 4 October 2015 (UTC)

(Previously involved party coming to this via ANI, but only here to comment on content) - This debate has produced a wall of text above. Can I first suggest forgetting about the "advertising" claims as a distraction. Company websites are rarely considered reliable sources for anything beyond the company itself, but using them as such is not "advertising". Besides, many, many more sources look to have been provided that aren't company websites, so that issue looks to be moot. Codename Lisa it would help others to jump in, I think, if you could point to the specific sources that show that "app" is another word for computer program (forgive me if I'm missing something obvious). I clicked on a few of the links above (admittedly just a few), and only see the use of the term "app". If the definitions in reliable sources about the terms give them as different (one as a subtype of the other looks to be the claim Timhowardriley is making), how they're [mis]used elsewhere shouldn't affect how we define it here. If a word becomes synonymous in popular usage, it should subsequently lead to reliable sources defining the terms as synonymous, at which point it's worth noting more prominently. We could also find 100 typically reliable sources to support modifications like 'Disassociative identity disorder, or "schizophrenia"...', 'An MP3 player, or "iPod"...', or 'A crescendo, or "climax"...'. — Rhododendrites talk \\ 17:33, 5 October 2015 (UTC)

@Rhododendrites: Your comment is very interesting. So, I also went ahead and examined some of the sources. I noticed that Microsoft Windows 8 Digital Classroom: A Complete Training Package actually has a page number. So I checked it: [2] It gives a very good definition of desktop apps. I will proceed with examining Exam Ref 70-688 Supporting Windows 8.1 (MCSA), which also has page numbers. Now that I think, you are the first person who have said anything here that works towards constructing an article instead of stonewalling it. You ask for something refined, not something with stringent parameters. I think we can find that refined thing, but Rome was not built overnight.
For now, I think it is established beyond doubt that what CL says is at least sketchily correct and has inclusion merit, even if it means we must refine it. What do you say?
Fleet Command (talk) 19:06, 5 October 2015 (UTC)
It seems worth noting that the switch from "program" to "app" with Windows 8 was a concerted marketing decision rather than an employment of predefined terms. E.g. Windows 8 For Tablets for Dummies says "Windows 8 brings many changes, but one of the most baffling is that it no longer likes the word program. Programs -- software for writing letters or playing games -- are now called apps in the world of Windows 8." Thanks to the iPhone, "app" has started to be used to describe any software. That's absolutely worth noting in the article, but doesn't mean we have to treat them as synonymous.
That "app" has been appropriated and popularized by marketing and popular media doesn't change the fact that it still means (or, if you prefer, comes from) "application" (which many of the sources that spend any time at all on the term note). And there is a long-standing way of looking at software that separates application software from e.g. system software. One of the reasons it's been popularly replaced so easily might be that most people just don't talk about services, background processes, specific parts of the operating system, etc. Is the source code of an app still an app? Is it still a program? If you separate it into component parts, are the frameworks, tools, libraries, files, etc. a whole bunch of separate "apps"? What about the programs that let applications be visible on a screen at all or the programs that help hardware to do their job? (These are rhetorical questions, of course, and not actually in response to anybody's arguments).
Coming back to Wikipedia policy, maybe it would be simpler to look at it from the other direction in the name of determining WP:WEIGHT. Rather than looking for sources that use the relatively recent popular term "app" to mean "software program", maybe it would be more productive to look at the literature about "software programs" and see how many of them also call it an "app". Taking one of my examples above, it would be easy to find sources that connect "multiple personality disorder" with "schizophrenia" because we'd be seeking out the sources that use it incorrectly/imprecisely. If we instead start with the technical definition, we quickly find that using "schizophrenia" to refer to the concept is an outlier and in comparatively poorer sources.
I don't know that I would compare building Rome to debating "app" vs. "computer program" :) but I agree with the sentiment. No need to rush. — Rhododendrites talk \\ 20:05, 5 October 2015 (UTC)

Are Computer Program and App synonyms? (redux)[edit]

Let's focus on the hypothesis that Computer Program and App are synonyms, just like pants and trousers are synonyms. User:Codename Lisa used this logic to justify the inclusion of App in the definition of Computer Program.

Computer Program and App are not synonyms. If they were, then each would have the same definition. Dr. Ralph M. Stair (Florida State University) defined Computer Program in a textbook published by Thomson Reuters. He wrote on page 132, "Computer programs: sequences of instructions for the computer." Please cite the publication that defines App as sequences of computer instructions. Timhowardriley (talk) 18:45, 5 October 2015 (UTC)

"User:Codename Lisa used this logic to justify the inclusion of App in the definition of Computer Program.". I see no such thing. Quite to the contrary, I see she has tried to do this by adding sources.
"Let's focus on the hypothesis that Computer Program and App are synonyms, just like pants and trousers are synonyms. Let's not. This the third time you are writing this message and both your previous attempts were malicious. You are not here to build an encyclopedia.
Fleet Command (talk) 19:20, 5 October 2015 (UTC)
I am not here to build an encyclopedia. Instead, I'm looking for a Wikipedia:reliable source showing that App shouldn't be removed from the definition. Please keep this conversation technical. Timhowardriley (talk) 19:32, 5 October 2015 (UTC)

Comment

  1. "App" is, of course, shorthand for an application, so it would seem much more appropriate to state this as an alternative name for application software (which, given that we have two separate articles, seems to have a subtly different meaning from the humble "computer program").
  2. The current sourcing is inadequate. None of the six(!) sources seems to explicitly declare "app" and "computer program" synonymous and none of the six sources would seems to pass as reliable sources for such a statement. This smells of an attempt at synthesis.

The obvious thing to do here, would be to move the boldfaced app over to application software, where it can stay without any supporting sources (because the sky is blue). —Ruud 19:47, 5 October 2015 (UTC)

@Ruud Koot: How do you know it is not a back-formation? I have been using app stores for years now and I see them branding utility software items like antivirus as app. And actually, application software section has a very interesting section about metonymy. Fleet Command (talk) 20:05, 5 October 2015 (UTC)
Without any reliable sources describing the etymology of the word "app" it is hard to know any of this. Unfortunately the interesting section on the metonymy of the word "application" does not point us to any such sources either. Anecdotally, my experience with app stores has thaught me that anti-virus apps one can find there are the kind with fancy user-interfaces, that I'd be perfectly content with calling "application software". —Ruud 20:37, 5 October 2015 (UTC)
Actually, reliable sources obviously exist by now:
  • Oxford English Dictionary: "Etymology: Shortened < application n. / Computing colloq. / An application, esp. an application program (see application n. Compounds 2). Also freq. in killer app n. at killer n. Additions. Cf. applications program n. at application n. Compounds 2b" [3]
  • Meriam-Webster: "Definition of app: application" [4]
  • American Dialect Society: "noun, an abbreviated form of application, a software program for a computer or phone operating system" word of the year 2010
Ruud 20:37, 5 October 2015 (UTC)
Hello, Ruud Koot. Thanks for coming. Since you, Dsimic and FleetCommand have joined the discussion, it is rolling. Already, you guys have registered out very solid objections that I feel are in definite need of being properly addressed. So, I looked up your Meriam-Webster and it says App = Application. But... I looked up "Application" in it and it says "Computer program". Hence, by its definition:

"App" = "Application" = "Computer program".

In addition, American Dialect Society also defines "application" as "a software program for a computer or phone operating system". So:

"app" = "application" = "a software program for a computer or phone operating system"

I could not access your Oxford English Dictionary. I receive a 403 error.
So, do you not find that your sources consider "app" a synonym for "application" and "application" a synonym for "computer program" at least for computers and phones, if not for supercomputers?
Also, I hear your WP:SYNTH objection. I will look for more source. I am confident that I will find one. But... if you think removing contents helps ending this discussion, please go ahead. I know how to restore them when and if I found better sources, right?
Best regards,
Codename Lisa (talk) 10:50, 6 October 2015 (UTC)
The OED and ADS define "apps" as specific kinds of applications. Furthermore, dictionary definitions are not formal mathematical definitions, so you can't transitively combine them without running into more synthesis issues. But the real problem is that there are just too many examples of computer programs that are never called "apps" in common speech:
  • The 10M lines of COBOL code running on your bank's mainframe. Computer program? Yes. App? No.
  • The 20K lines of assembler code running on your washing machine's microcontroller. Computer program? Yes. App? No.
  • Microsoft SQL Server. Computer program? Yes. App? Maybe, probably not.
  • The 10 line "Hello, world!" program printed in a text book. Computer program? Yes. App? No.
  • ...
Ruud 17:31, 6 October 2015 (UTC)
No. In fact, dictionaries are the least trustworthy sources. Sometimes they don't even provide enough information for collocations and linguistics students are forced to use a corpus. But:
  • "The 10M lines of COBOL code running on your bank's mainframe". I don't know about COBOL, but we have a Ruby on Rails one down here. Yes, it is an app. Even its manual says so.
  • "The 20K lines of assembler code running on your washing machine's microcontroller." It is called an embedded app.
  • "Microsoft SQL Server" 2016 as service calls itself an Azure container app.
  • "The 10 line 'Hello, world!' program printed in a text book" is a source code. Only when it is compiled, it becomes both a computer program and an app, especially if it is a Metro-style "Hello, world".
Best regards,
Codename Lisa (talk) 19:49, 6 October 2015 (UTC)
IMHO, it's just that various manuals and online descriptions "swim with the stream", and the primary purpose of all those materials is to bring the merchandise closer to the consumers, who are nowadays accustomed to downloading "apps" to their smartphones. As simple as that. As an example, the Linux kernel is, in essence, a very large computer program, but would it make any sense to call it an application or "app"? Quite frankly, that would be pretty much comical. :) — Dsimic (talk | contribs) 16:01, 7 October 2015 (UTC)
Note that "app" is already described in application software (the section Apps and killer apps), although I think a note of the common short form should be added to the lead). Rwessel (talk) 04:18, 6 October 2015 (UTC)

Hello! IMHO, the "app" term is just a shallow PR invention intended toward making the things people download to their phones and tablets more "yummy" and easier to the people's mental digestion. Exactly the same thing as with all those "clouds", nothing more than PR nonsense. As such, "app" should be mentioned somewhere as a common abbreviation, but not as the primary topic. — Dsimic (talk | contribs) 20:17, 5 October 2015 (UTC)

@Dsimic: Finally! Some smart guy joined the discussion. You are a sight for the sore eyes.
I myself said the same PR invention years ago. But now, things that are called app and sold in app stores are 90% of total computer programs in the world. So, it is an invention that worked. (I guess PRs are people after all.) WP:NPOV requires to cover this phenomenon without passing judgment on it. We should cover it somehow. And we already have articles titled portable app, web app, mobile app; inevitably, one article must define "app".
As someone said above, it is hard to just say goodbye to "computer program"; people have been using it for ages, but "app" is merely six years old.
You know, both you and I worked with Codename Lisa before. When she does something, I think it is at least in the right direction, if not entirely correct. Don't you think? Fleet Command (talk) 20:35, 5 October 2015 (UTC)
Well, thanks. :) Indeed, "apps" form a very large portion of currently existing computer programs world-wide, but that's just for the quantity. Though, let's be straight, probably close to 90% of all those "apps" are of very low quality. I totally agree that "apps" must be covered in a neutral way, but it should be clearly noted that the term is primarily a shorthand for "application" or "software application". Oh, by the way, I was invited here by Ruud Koot. :)
Speaking about Codename Lisa, I would agree on that... She's almost always pointing the things into right direction, although on a rare occasion some additional steering is required, but that's perfectly fine – nobody is flawless. :) — Dsimic (talk | contribs) 21:01, 5 October 2015 (UTC)
Hello, Dsimic.
So, you are here to steer me? Face-wink.svg
It is true that quantity alone does not justify WP:DUE requirements. And yes, most apps are so low quality that do not merit our regard. (I once searched "StarCraft" in Windows Store just to make a point!) But the WP:DUE requirement, IMHO, is fulfilled by (1) the controversy surrounding their quality, covered in Windows Store article and (2) Ruud Koot's source: “App” voted 2010 word of the year by the American Dialect Society.
I will work on the SYNTH issue by looking for more refined sources. And I do not insist on keeping the existing contents anymore. I know how to restore them when I find those sources.
Best regards,
Codename Lisa (talk) 10:57, 6 October 2015 (UTC)
Hello! Please don't get me wrong, we're all here to continuously steer each other. :) As I've demonstrated it in the Linux kernel example above, there has to be a line somewhere because calling certain classes of computer programs "apps" is simply inappropriate. However, we're obliged by the WP:NPOV guideline to mention that certain classes of computer programs are commonly called "apps", which is a commonly used abbreviation for "application". — Dsimic (talk | contribs) 16:01, 7 October 2015 (UTC)
The notion that the majority of applications are called "apps" (even 90%) has been made more than once. That really requires some substantiation. Obviously that also depends on how you count - Apple's App Store generate about $10B in revenue in 2014 - MS Office generates about twice than much for the single product line. Rwessel (talk) 04:12, 6 October 2015 (UTC)

It may also be helpful to make this discussion a bit more concrete. A good counterexample of a computer program that is not an app would be galaxy formation simulation, written in FORTRAN, running on a supercomputer. Putting "app" in the lede, in boldface, without any qualifications suggests these terms are completely synonymous, which is misleading. Some (many, most?) computer programs are apps, but not all of them are. —Ruud 21:16, 5 October 2015 (UTC)

I would agree on that. Rarely anyone would call a complex physics simulation an "application" or, even less likely, an "app". That's certainly a computer program in the most "old-fashioned" way. Moreover, such computer programs will hardly cease to exist. — Dsimic (talk | contribs) 21:30, 5 October 2015 (UTC)
Such things have often, and long, been called applications. Here's a paper by S. C. Johnson and D. M. Ritchie (yes, *that* DMR), from 1978: [5]. The third paragraph of the introduction starts with: "Most large computer systems spend most of their time executing application programs; circuit design and analysis, network routing, simulation, data base applications, and text processing are particularly important at Bell Laboratories." Rwessel (talk) 04:29, 7 October 2015 (UTC)
Within that enumeration a "simulation application" seems most likely to refer to software like LabVIEW or LTspice. Those surely are applications. But that's besides the point here. Does anyone ever call numerical computations, transaction processing systems, embedded code, or program listings "apps"? No. —Ruud 09:19, 7 October 2015 (UTC)
Many fewer of those packages existed in 1978, the original SPICE only dates back to 1973. In context they certainly mean in-house developed simulations (and other applications). And given that they said "large computer systems spend most of their time executing application programs", they certainly were referring to in-house (bespoke) applications, and not any sort of packaged software. Again, the context is 1978. A semi-recent (2007) reference from an IBM whitepaper [6], clearly includes in-house developed programs as "applications". Rwessel (talk) 14:23, 7 October 2015 (UTC)
In the quotation above, "application programs" is used to distinguish what we'd now most usually call "application software" that runs in userspace. The key is in the use of "application programs", not just "applications"; that's clearly visible from the broader context that surrounds the quotation:
Most large computer systems spend most of their time executing application programs; circuit design and analysis, network routing, simulation, data base applications, and text processing are particularly important at Bell Laboratories. For years, application programs have been written in high-level languages, but the programs that provide the basic software environment of computers (for example, operating systems, compilers, text editors, etc.) are still usually coded in assembly language. When the costs of hardware were large relative to the costs of software, there was perhaps some justification for this approach; perhaps an equally important reason was the lack of appropriate, adequately supported languages. Today hardware is relatively cheap, software is expensive, and any number of languages are capable of expressing well the algorithms required for basic system software. It is a mystery why the vast majority of computer manufacturers continue to generate so much assembly-language software.
Thus, the paper refers to the difference between system software and application software, which are all computer programs. In the end, the title of the paper is "Portability of C Programs and the UNIX System". — Dsimic (talk | contribs) 16:01, 7 October 2015 (UTC)
I'm confused. Are you saying there's a difference between "applications" and "applications programs" (or "...software")? Rwessel (talk) 00:03, 8 October 2015 (UTC)
It's just that the paper still refers to different types of computer programs. If we go into linguistic details, especially when ingnoring the computer lingo, "application program" is somewhat different than just "application" – an application program (which is a computer program) is what powers a specific application of computers. — Dsimic (talk | contribs) 02:45, 8 October 2015 (UTC)
Sense 7 of application appears to be identical to application program in the above. Frankly at this point I'm not sure what we're arguing about anymore... 04:50, 8 October 2015 (UTC)
(edit conflict) I agree. And the quality problem that Dsimic mentioned is also a factor. But first, let's take a look at it neutrally and see if we can have anything called "app" in the article. So, Ruud, do you agree that web app, mobile app and portable app are genres of computer programs? If yes, we can include them using Wikipedia:Summary style, without trying to define an "app". That is probably a good compromise for the first step. Next, I will go to the library tomorrow and look for ISBN 9780133986280, Exam Ref 70-688 Supporting Windows 8.1 (MCSA). If this book is anything like those that Microsoft publishes, maybe its glossary has defined "desktop app", or even better, "app". Fleet Command (talk) 21:31, 5 October 2015 (UTC)
It could go in the third paragraph ("Computer programs may be ranked along functional lines: ...") That paragraph should probably also mention my simulation example, which is neither system, not application software. —Ruud 21:39, 5 October 2015 (UTC)

(Comment by block-evading sockpuppet removed per WP:DENY. See Wikipedia:Sockpuppet investigations/Janagewen.)

In my opinion, the term "app" is shorthand that is synonymous with application software with focused functionality that are intended primarily for use on touch-based (read: mobile) or feature-limited "closed" platforms. ViperSnake151  Talk  16:22, 12 October 2015 (UTC)

That makes sense, but the trouble is that "app" as a shorthand creeps into many other areas to which it clearly doesn't belong. — Dsimic (talk | contribs) 06:30, 13 October 2015 (UTC)

Created new article[edit]

I created App (Computer science). Does this help? Timhowardriley (talk) 22:19, 5 October 2015 (UTC)

It does not. It's a redundant WP:DICDEF that should be redirected to Software application (and, despite these threads, not to this article). — Rhododendrites talk \\ 22:41, 5 October 2015 (UTC)
Sorry, I should've asked what your intention is. Are you saying it's a wholly different subject from both software application and computer program? I don't think it is, and I think to the extent it's different because of the word's usage, it certainly doesn't merit a stand-alone article (again WP:DICDEF). — Rhododendrites talk \\ 22:43, 5 October 2015 (UTC)
Here's how I see the relationship hierarchy: An app is a software application running on a touchscreen device or browser. A software application is a computer program serving end users. A utility program is a computer program used for system maintenance. A system program is a computer program interfacing with the hardware. An embedded program is a computer program embedded into hardware. So, app would surely fit better in software application than computer program. Moreover, I'm sure touchscreen and browser technology are going to advance so much that App (Computer science) will grow into something big. Timhowardriley (talk) 23:14, 5 October 2015 (UTC)
Sorry, no. MS Word runs on Win8 desktops with touch screens. As do many other applications traditionally called "applications". They may even get some touch related functionality in the process. The word "app" is quite a bit older than smartphones, but as a shortening of "application" (people spent decades talking about "killer apps"). "Applet" was also used in the past for small applications. With smartphones and the like, "app" initially meant a "small" application, although there are now quite large applications running on smartphones. And the word app is now applied to other platforms as well (it *is* fashionable). Other than convention, there is no real difference between "application" and "app". Now it's possible that the term "app" will displace "application" at some point in the future (consider what happened with "switch" and "bridge" in networking), but it hasn't happened yet, but if it does, it may be appropriate to do some renames. Rwessel (talk) 04:02, 6 October 2015 (UTC)
So in our context, App is synonymous with Application software? Timhowardriley (talk) 04:26, 6 October 2015 (UTC)
I can see little difference, other than what is the preferred in various areas. Rwessel (talk) 04:35, 6 October 2015 (UTC)
That new article has one too many problems. First, it is a copyright violation because its text is taken without due process for borrowing contents licensed under CC BY-SA 3.0 or GFDL. It is also self-contradictory; the first sentence goes against the rest. (Well, that's what happens when you refactor other contributor's contribution without due regard for context.) The most obvious contradiction is the image. WP:SIZERULE and WP:NOTABILITY is also not observed. Neither Ruud's argument about WP:SYNTH. And correct me if I am wrong: It appears Tim is going to any length to erase any and every mention of the word "app" from this article. I am wondering why. Also, I am in a dispute with someone, the thing that I definitely will not do is creating an article bearing my disputed point of view of the subject matter.
Best regards,
Codename Lisa ( talk) 10:29, 6 October 2015 (UTC)
Regarding "It appears Tim is going to any length to erase any and every mention of the word 'app' from this article.": I recommend we: 1) erase App from the definition, 2) merge "Nomenclature" into "Application Software", and 3) move the calculator picture to "Application Software". Timhowardriley (talk) 13:23, 6 October 2015 (UTC)
Also, we could move up "Functional Categories", where "Application Software" resides, to the first paragraph following the intro. Timhowardriley (talk) 14:56, 6 October 2015 (UTC)

Compilation and interpretation wikilink question[edit]

Regarding the sentence that ends, "... and machine code is the central processing unit's native code, ready for execution.": "code" has a wikilink to Microcode. I think this should point to Machine code, instead. But I'm not completely sure. Timhowardriley (talk) 05:15, 8 October 2015 (UTC)

Microcode is certainly incorrect. While machine code is correct, as written this becomes "machine code is... machine code". I've reworked it a bit. Rwessel (talk) 06:04, 8 October 2015 (UTC)

(Comment by block-evading sockpuppet removed per WP:DENY. See Wikipedia:Sockpuppet investigations/Janagewen.)

Some types of microcode are sufficiently similar to conventional code that I think I brief mention here is warranted. OTOH, what was there before was a mess, and the details only applied to a specific hardware implementation. I've reworked it some. Rwessel (talk) 04:46, 9 October 2015 (UTC)

(Comment by block-evading sockpuppet removed per WP:DENY. See Wikipedia:Sockpuppet investigations/Janagewen.)

[redacted], if you're going to edit here, there are significant advantages to creating an account. Wikipedia:Why create an account?. Rwessel (talk) 06:08, 9 October 2015 (UTC)

(Comment by block-evading sockpuppet removed per WP:DENY. See Wikipedia:Sockpuppet investigations/Janagewen.)

The rework now says "some CPUs". If a CPU doesn't have microcode, then what does it have instead? Timhowardriley (talk) 06:17, 9 October 2015 (UTC)
Such CPUs have "monolithic" instructions that aren't implemented as series of microinstructions. — Dsimic (talk | contribs) 06:54, 9 October 2015 (UTC)

(Comment by block-evading sockpuppet removed per WP:DENY. See Wikipedia:Sockpuppet investigations/Janagewen.)

To expand a bit on [redacted]'s comments, microcoding is one technique for generating the sequence of control signals needed to run a (complex) digital device. Microcode allows a very regular structure for that sequencer, and a very easy to modify one. It is, however, usually slower that a hardwired sequencer. Modern deeply pipelined and out-of-order CPUs are poor fits for traditional microcode, and so you don't usually see it anymore, although there is usually a function that breaks up complex operations into multiple "micro-ops", and sometimes a fairly traditional microcode sequencer that generates micro-ops for very complex instruction, and often a mechanism to allow something microcode-like somewhere near the front end of the CPU to provide the ability to patch bugs (usually at a significant performance cost). Most fast processors have a mix of hardwired and complex instructions requiring multiple internal operations, the exact mix being highly dependent on the implementation.
For example the IBM z196 microprocessor implemented some 984 instructions, 762 were implemented entirely in hardware. The recent IBM Z machines don't use microcode in its traditional form, but have a special mode called "millicode" where the complex instructions are simulated, with what looks much like a subset of the normal Z ISA (the subset includes the hardwired architectural instructions, as well as some instructions designed to support the task of implementing the remaining instructions). IBM has taken to calling that code "licensed internal code", although that's mainly for legal reasons (microcode has been held to be part of the machine, which meant that IBM could not license it separately for the physical hardware).
Anyway, the point is that there are many ways to generate the coordinated control signals that run a complex digital device, and microcode is one approach that works in some situations. A CPU might not have microcode at all, and even if it does, it might not look very much like the very basic model (and old) that was described in the article before I removed it. But traditional microcode bears enough similarity to programming in assembler that it, IMO, deserves a (brief) mention here. Rwessel (talk) 09:07, 9 October 2015 (UTC)
That's very interesting, I wasn't aware of the "millicode" term. What was the reason for coining that term, perhaps to indicate that the whole approach is limited to the "programmatic" (or "microprogrammatic"? :) implementation of more complex instructions? — Dsimic (talk | contribs) 09:49, 9 October 2015 (UTC)

(Comment by block-evading sockpuppet removed per WP:DENY. See Wikipedia:Sockpuppet investigations/Janagewen.)

Thanks. Are there some papers or other documentation about the concept and implementation of millicode? I've tried searching for it but found virtually nothing except this description of milicode routines, which seems to be somewhat similar to intrinsic functions although on a much lower level and without optionality. — Dsimic (talk | contribs) 11:49, 9 October 2015 (UTC)
See the reference for and the external link in the millicode article. If you're willing to drop some coins into the change booth at the IEEE paywall, there's also Millicode in an IBM zSeries processor from the IBM Journal of Research and Development. Guy Harris (talk) 19:49, 12 October 2015 (UTC)
Thank you very much, Guy Harris, much appreciated as always! These papers provide a very good overview, and I've totally missed to check out our millicode article. — Dsimic (talk | contribs) 07:20, 13 October 2015 (UTC)
See also PALcode, kind-of microcode.. While RISC (here Alpha) usually did not have. ARM had no microcode. It had SWI instructions, that seems somewhat similar to PAL.. You have access to kernel level registers, maybe, maybe not PAL is lower level.. (didn't quite get it at the time..). comp.arch (talk) 12:22, 9 October 2015 (UTC)
That's quite interesting, PALcode seems to be somewhat similar to the routines offered by the PC BIOS. — Dsimic (talk | contribs) 12:50, 9 October 2015 (UTC)
PALcode is more like IBM millicode than BIOS functions. Its main use is to implement CPU functions that are not directly implemented in hardware. In both cases they provide a super-privileged state with access to facilities not architected, but the primary execution is of the architected instructions. IBM uses millicode to both implement various system functions (the I/O support processor code is implemented in millicode, for example), as well as instructions that are not directly implemented in hardware. DEC mostly avoided the former usage (certain aspects of system startup were done in PALcode), but they did implement "instructions" that were not directly implemented in the hardware - for example certain types of atomic updates. The difference with the IBM approach is that IBM had implemented "normal" complex instructions to trap to millicode, while Alpha PALcode just defined certain PALcode invocations as being required (IOW, DEC defined "call PALcode #14" to be the whatever function, and the implementation had to provide it). I believe DEC also provided mechanisms for patching ISA bugs in PALcode in later versions of Alpha (making it more like instruction trapping in millicode). PALcode (both its existence, and some of the functions implemented in PALcode that were required to be provided) was an architected part of Alpha, while millicode is purely an implementation detail (as is microcode). Interestingly, the required set of PALcode functions varied by the environment being supported (so VMS, Unix and Windows support required different sets of PALcode functions - DEC used that to build "Windows only" machines, for example"). I believe the term "millicode" was coined by IBM a couple of decades ago. The best references are the IBM System Journals and IBM Journals of Research and Development, which are now sadly behind a paywall. I assume they did so because millicode is much higher level than traditional microcode (mainly using ordinary CPU instructions), and they wanted to distinguish it from microcode. Various other terms have been coined for low-level internal coding as well. Motorola coined the term "nanocode" for code/tables/ROMs that decoded vertical microcode fields into horizontal ones on the 68K, for example. Rwessel (talk) 15:16, 9 October 2015 (UTC)
Thank you very much for a detailed explanation! The Cyrix MediaGX processor is an interesting example of how physically missing features were "emulated" in the PC world; it isn't microcode per se, but the underlying concept is rather similar. The MediaGX processor had no integrated graphics hardware, but it trapped access to the "virtual" graphics hardware and used SMM to emulate it. — Dsimic (talk | contribs) 15:52, 9 October 2015 (UTC)
My thinking is to fill in the gaps in the paragraph. It says, "... *some* central processing units ..." This makes me curious about the others, which must be most of them. I had to write microcode in my computer organization class, and it was similar to assembly programs. After reading the explanations by Dsimic, [redacted], and Rwessel, it seems like CPUs are controlled by 1) microcode, 2) monolithic instructions, 3) PALcode, 4) SWI instructions, 5) internal code, 6) nanocode, and 7) milicode. I think the paragraph would be well enhanced if it had a brief (sophomore level) description of each. Timhowardriley (talk) 15:13, 9 October 2015 (UTC)
Well, that's a rather vast area to discuss. Perhaps we could just redirect to Central processing unit, Processor design or Microarchitecture? Of the above (and you missed #8: whatever else the CPU designers managed to come up with), only microcode is really distinct from ordinary programming *and* anything like programming. As mentioned, millicode and PALcode are more like ordinary assembler programming (with special access to the inside of machines), "internal code" means whatever the manufacturer wants it to mean (although usually they just mean "firmware" or something like millicode or PALcode), hardwired instructions are just that - physically built into the CPU, and there's no programming involved. SWI instructions on ARM don't really qualify, they're more like INT xx instruction on x86 - an OS or BIOS might well use those to provide functions, but unlike all the others, it really avoids any sort of un-architected facilities. Note that microcode is not limited to CPUs, but is (one) general way to implement the sequencer controlling a (usually complex) digital device. So my concern is not cluttering this article with internal details of CPU design, while keeping a brief mention, since microcode can definitely have similarities to ordinary programming. As an analogy, you could use bricks to build a house or pave a road - but the article on bricks really doesn't need a long discussion of other house and road building techniques. Rwessel (talk) 15:36, 9 October 2015 (UTC)
Okay, but I'm not giving up on the idea. I'm inspired by the "Up Goer Five" article which explains rocket science to 8th graders. See http://www.explainxkcd.com/wiki/index.php/1133:_Up_Goer_Five . How about if the paragraph heading were change to "Micro programs"?
Central Processing Units and complex devices are typically controlled by micro programs. Micro programs move data between the registers, buses, arithmetic logic units, and other functional units. Micro programming syntax is similar to assembly language. Examples include microcode, PALcode, SWI, and nanocode.
Timhowardriley (talk) 16:07, 9 October 2015 (UTC)
I understand, but while I don't have time to respond extensively now, microprogramming is *not* the current "typical" implementation technique, and when it is used, it tends to be more for special cases. The whole controlling data movement around internal CPU structures thing is a fair description of microprogramming, but really doesn't apply to the other techniques. And I don't think you'd generally consider millicode or PALcode (or any of the others) to be microprogramming, which is usually specifically related to microcode. Also, let's not overemphasis the comparison with assembler syntax, it can be, in its simpler forms, but other than commonly having a (sometimes quite large) number of fields for each micro-operation coded, the actual tools used for coding vary considerable - an assembler like syntax is not uncommon, as it works reasonably well, and is easy to parse, and familiar to anyone designing a CPU. OTOH, it can be done in binary as well, or with tools that provide an interface that looks more like a spreadsheet. Rwessel (talk) 16:22, 9 October 2015 (UTC)
Okay, but I'm still not giving up -- 's/typically/sometimes/', 's/PALcode//', 's/Micro programming syntax/Some micro programming syntax/':
Central Processing Units and complex devices are sometimes controlled by micro programs. Micro programs move data between the registers, buses, arithmetic logic units, and other functional units. Some micro programming syntax is similar to assembly language. Examples include microcode, SWI, and nanocode.
Timhowardriley (talk) 16:33, 9 October 2015 (UTC)
What are the categories of micro programs that 1) have a syntax and 2) move data between the registers, buses, arithmetic logic units, and other functional units? Timhowardriley (talk) 16:48, 9 October 2015 (UTC)
Sorry to belabor the point. Regarding, "... with tools that provide an interface that looks more like a spreadsheet." The very first computer program looked like this: https://en.wikipedia.org/wiki/Computer_program#/media/File:Diagram_for_the_computation_of_Bernoulli_numbers.jpg . Timhowardriley (talk) 17:27, 9 October 2015 (UTC)

(Comment by block-evading sockpuppet removed per WP:DENY. See Wikipedia:Sockpuppet investigations/Janagewen.)

Hello, [redacted]. I respectfully assert that a high-level article on computer programs should include a summary description of the programs that run CPUs. My computer organization class in the 1990s covered micro programming using Tanenbaum's 3rd edition. I now see the 6th edition for sale at Amazon. I also found the 5th edition online here: https://eleccompengineering.files.wordpress.com/2014/07/structured_computer_organization_5th_edition_801_pages_2007_.pdf . It's going to make a dandy source for useful material on micro programs. Timhowardriley (talk) 00:07, 10 October 2015 (UTC)

(Comment by block-evading sockpuppet removed per WP:DENY. See Wikipedia:Sockpuppet investigations/Janagewen.)

Your message is well received. Timhowardriley (talk) 01:21, 10 October 2015 (UTC)
Again, microprogramming is always related to microcode, so there's no distinction to be made. SWI and nanocode don't apply (as I described above, ARM SWI is nothing like microcode (and it's ARM specific, in any event), more like an x86 "Int xx", and nanocode was really a way to compress microcode on the 68K. Now I personally am not fond of Tanenbaum's book, but take a look at the syntax of the IJVM microcode starting on page 262 of the link you provided - it looks very little like assembler (although there is considerable variation is just what assemblers look like). Rwessel (talk) 03:37, 11 October 2015 (UTC)

(Comment by block-evading sockpuppet removed per WP:DENY. See Wikipedia:Sockpuppet investigations/Janagewen.)

Even what's left is a mess.

  • "Computer programs accessing devices connected to the motherboard constitute the operating system." Managing hardware is an important part of most OSs, but these don't need to be (directly) attached to the motherboard, and heck, there doesn't need to be a motherboard at all. And then OS also manage the programs running under it, things like memory, visualization of I/O devices security of resources (and security is a particularly good example - how does managing and enforcing the rights assigned to users involve a "device connected to the motherboard"), etc.
  • "The operating system must ensure the correct operation of the computer." Well, sort of. It is responsible for keeping the system safe(-ish) from rogue programs, but it is in no position to "ensure the correct operation of the computer", since most OS's can't deal well with many hardware failures.
  • "It must prevent application software from interfering with the proper operation of the other systems." "Other systems"? Sure, the OS (usually) tries to protect other applications and the OS from rogue programs.
  • "Operating System programs are written in low-level programming languages, like assembly or C." Perhaps most commonly, and for some definition of "OS" and "low level language". Large portions of the Windows and Mac GUIs are not written in C (or assembler), IBM i (the OS for the line of systems that used to be called AS/400) was rewritten mostly in C++ in the late 90s/early 2000s.

Maybe we could just steal the opening paragraph of Operating system? Rwessel (talk) 03:19, 11 October 2015 (UTC)

I rewrote the paragraph with only the last sentence being original research. Of course, the concept of the last sentence should be expanded upon. I hope its expansion uses reliable sources. Timhowardriley (talk) 17:07, 11 October 2015 (UTC)

Industrial programs[edit]

Here is the Industrial programs paragraph.

===Industrial programs===
A computer program can be deemed an [[Software industry|industrial]] or [[Commercial software|commercial]] product when that is useful for the concerns of a [[business model]], which involves such aspects as labor, markets, profitability, and quality-control.  This is how most [[proprietary software]] is classified, though [[open-source software]] can also be regarded as a product if a commercial entity specializes in it; e.g. [[Red Hat|Red Hat, Inc.]] or [[SUSE]], as both which develop and [[Customer support|maintain]] open-source software products.

I started fixing "product when that is useful for the concerns". However, I'm stuck trying to figure out the general message of the paragraph. Timhowardriley (talk) 20:18, 12 October 2015 (UTC)

Relevant vs. Reliable[edit]

A recent edit changed the definition of computer program from a "sequence" to a "collection." It may be relevant to consider some computer programs as non-sequential. However, it is more reliable to define computer program as a "sequence" because that's how the author of the cited source defined it. The cited source is a published book and, therefore, considered a reliable source; it's not original research. I'm sure if you look hard enough, you'll find computer program defined in a published document as a "collection." Then that source would be most welcome. Timhowardriley (talk) 23:02, 12 October 2015 (UTC)

Top hits on Google Books: [7] [8]. —Ruud 00:13, 13 October 2015 (UTC)
B.t.w., even though material should be attributed to other sources, it must still be paraphrased for reasons of copyright, plagiarism and readability. See Wikipedia:Close paraphrasing. —Ruud 00:27, 13 October 2015 (UTC)
Changed the citation sourcing the new definition. Timhowardriley (talk) 05:13, 13 October 2015 (UTC)

Defined as a "collection of instructions" confusion[edit]

It seems counter intuitive to consider computer programs as non-sequential. I'm assuming "collection" refers to declarative programming languages. I recommend this nuance be explained in the lead. Timhowardriley (talk) 16:02, 14 October 2015 (UTC)

Hello! I'm not really sure what's so wrong with using "collection of instructions"? Surely, we might want to explain it further, but using "sequence" actually isn't better. Almost no program is a plain linear sequence of instructions – just think of various libraries, for example. Moreover, the sequence is only one element of structured programming, besides the selection and iteration. — Dsimic (talk | contribs) 16:22, 14 October 2015 (UTC)
Soon after the definition was changed, this edit was made: https://en.wikipedia.org/w/index.php?title=Computer_program&diff=685664350&oldid=685658307 I don't think I'm the only one scratching my head. Timhowardriley (talk) 16:31, 14 October 2015 (UTC)
See turing machine: "Despite the model's simplicity, given any computer algorithm, a Turing machine can be constructed that is capable of simulating that algorithm's logic." A turing machine has an initial state. The sequence has a starting point. Timhowardriley (talk) 16:34, 14 October 2015 (UTC)
Regarding "Surely, we might want to explain it further": What words would you suggest? Timhowardriley (talk) 16:38, 14 October 2015 (UTC)
(edit conflict) That particular edit seems perfectly fine to me. Speaking about the Turing machine, the tape it operates on is just the data, while the instruction table is the actual program it executes. Thus, it doesn't represent a plain sequence of something, if you agree. At the moment, I don't see how to explain the "collection of instructions" further and whether we actually need to do that, but I'm open to discussing any proposals. — Dsimic (talk | contribs) 16:46, 14 October 2015 (UTC)
I changed the definition in response to #Less specific intro above. Only the simplest of programs can be said to be "sequences" in any interpretation of that claim. Some valid ways to claim that programs are sequences would be:
  • The machine code is stored as a sequence of instructions. (But that's no longer strictly true today, now we have fancy executable file formats and dynamic linking).
  • The execution trace of a program is a sequence. (But that's not how we "intuitively" think of a program, and is no longer true if we introduce multithreading or other forms of concurrency).
The source code of high-level languages is usually thought of as an abstract syntax tree (not as an abstract syntax sequence). The semantics of a program can be though of as a control-flow or dependency graph, or in terms of other fancy (fancier than a sequence, that is) mathematical structures.
In the end, I think, we just want to say that "a program is a bunch of instructions" and not go into to much more detail in the lede (elaborating in the body would be fine). And "collection" seems like a sufficiently formal synonym of "bunch" so that it can pass as an encyclopedic definition, and with just the right amount of vagueness, so that we neither say anything we don't want to say, nor say nothing at all. —Ruud 17:18, 14 October 2015 (UTC)
I suggest the following experiment: Google "computer program is a collection of instructions." Google "computer program is a sequence of instructions." Timhowardriley (talk) 17:56, 14 October 2015 (UTC)
I suggest the following experiment instead: Google "we did land on the moon." Goole "we did not land on the moon." —Ruud 18:08, 14 October 2015 (UTC)
This was a less than nice thing to say. Timhowardriley (talk) 18:24, 14 October 2015 (UTC)
Please, let's keep in mind the existence of WP:GOOGLEHITS guideline, which of course isn't directly related, but applies to a certain extent. — Dsimic (talk | contribs) 18:29, 14 October 2015 (UTC)
WP:GYNOT would be the applicable guideline here. Google "comparisons" are problematic because they often give silly results depending on the exact way you phrase and interpret your queries. In this case we in particular don't know how many of those hits correspond to people simply having copied the Wikipedia definition, which has been in the article for several years, I think. And we're supposed to be educating people here, not simply repeat the same (mis)information that has been spreading among the hoi polloi. —Ruud 18:53, 14 October 2015 (UTC)
May I politely assert that I thought of using Google comparisons because I read this talk message: "Top hits on Google Books: [7] [8]. —Ruud 00:13, 13 October 2015 (UTC)". I know Ruud didn't mean to illustrate popularity. But when I made my suggestion to use Google, I should have said, "Google Books". Books.google.com matches published material defining Computer program as a sequence. Nonetheless, from my earliest computer education until I learned about Declarative programming, computer programs were sequential. They had a starting point, followed a sequence of instructions, then outputted the results. However, declarative programming "expresses the logic of a computation without describing its control flow." Declarative computer programs are sets of instructions; they don't express a computer algorithm. I'm going to keep thinking about how to explain the new definition of computer program to young readers of this article. Timhowardriley (talk) 17:49, 15 October 2015 (UTC)
Even programs as simple as computing a greatest common divisor or summing a list of numbers aren't sequential, as they require iteration or recursion. Only if you take the execution trace point-of-view can those said to be sequential (which I don't think is the mental model most people would have when thinking about programs), and then only because they don't use any form of concurrency (which is getting increasingly common nowadays). I don't mind including a few white lies in the lede, so as to keep it sufficiently simple (such as that programs are made up from "instructions"; radical declarative programmers would insist they are made up from declarations, and they are right to some degree, but that discussion belongs in the subsection on Programming languages, not in the lede). But claiming that programs are sequences seems to be making a rather strong commitment to how programs are stored and executed, and one that can be easily avoided by using slightly different terminology. —Ruud 18:09, 15 October 2015 (UTC)
I can reconcile iteration and recursion as sequential activities. Concurrency is an optimization that compiler and hardware designers provide – well, mostly. Pedantic declarative programmers probably appreciate the new definition. My motive is to effectively communicate computer program to the largest audience possible. Timhowardriley (talk) 18:34, 15 October 2015 (UTC)

How computer programs relate to algorithms[edit]

The following sentence is vague: "A small part of a computer program that performs a well-defined task is known as an algorithm." What does "a small part" mean? I found a textbook definition of algorithm and replaced this sentence with the definition. I also used words to couple algorithm to computer program. "A programmer implements algorithms with computer programs." Okay, maybe I should have written, "Programmers generally use algorithms to build programs." But that was reverted, also. What's wrong with my edits? Timhowardriley (talk) 15:37, 17 October 2015 (UTC)

I moved Ruud's personal talk page comment to here for discussion: He said, "Concerning the third paragraph of the lede of Computer program: the intention of mentioning algorithms there is to succinctly relate that concept to computer programs and direct the reader to the article Algorithm for further information. It does not intend to give a precise definition of an algorithm, as the quoted source tried to do.
Ruud 16:43, 17 October 2015 (UTC)" Timhowardriley (talk) 17:47, 17 October 2015 (UTC)
However, I believe more specific information is better, if it's available. And a textbook definition of algorithm best serves the reader. There still can be a Wikilink to its article. Timhowardriley (talk) 17:58, 17 October 2015 (UTC)
Again, I moved Ruud's personal talk page comment to here for discussion: He said, "'Computer programmers implement algorithms with computer programs.' (or 'Programmers generally use algorithms to build computer programs.') is an awkward sentence. It doesn't feel natural in that paragraph. If I try to put the phrase 'computer program' back into 'An algorithm is a clearly specified set of simple instructions to be followed to solve a problem.', then I end up with almost the original sentence. —Ruud 18:59, 17 October 2015 (UTC)" Timhowardriley (talk) 20:34, 17 October 2015 (UTC)
Ruud, I interpret your viewpoint as: the current sentence, although a little white-washed, is sufficient enough information for the broadest audience to grasp, considering it's in the lead. Is this correct? Timhowardriley (talk) 20:40, 17 October 2015 (UTC)
Yes, I think it's accurate enough for its purpose. I don't immediately see a good way to make that sentence more precise, without it becoming very long-winded. But I'm open for suggestions. —Ruud 20:47, 17 October 2015 (UTC)

Number of digits in Analytical Engine store/memory words[edit]

Timhowardriley There seems to be support for both 40 and 50 digit words in the Analytical Engine. I've started a discussion at Talk:Analytical Engine#Number of digits in store/memory words. As to what Babbage was thinking with such a large word size... My guess is he hadn't thought of floating point arithmetic, and 40 or 50 digits was what he thought was needed to cover the useful range of magnitudes of calculations. Rwessel (talk) 17:28, 30 October 2015 (UTC)

Very good. Timhowardriley (talk) 17:46, 1 November 2015 (UTC)

"Declarative programming language" is an Oxymoron[edit]

This text ----- Computer programs can be categorized by the programming language paradigm used to produce them. Two of the main paradigms are ... Imperative programming languages specify a sequential algorithm using declarations, expressions, and statements ... Declarative programming languages describe what computation should be performed and not how to compute it...


has a problem with the English language.

The word "program", handed down to us the ancient Greeks, is used for sequences of actions: what is to be played by the orchestra and in what order, the meeting rooms and their time, and so on.

We can write Fortran
and Fortran language
and Fortran programming language

The "-ing" attached to "program" turns it into an adjective, describing an attribute of "Fortran" - sequence.

But the "programming" following "Declarative" above is an oxymoron - there is no sequence. Unless, of course, the goal is to revise the English meaning of "program".

This article should be split into two articles:

 -- Computer imperative (programming) languages
 -- Computer declarative languages

If you look at the table of contents, much of the article applies only to programming languages; a split would benefit both sets of users. 50.136.242.131 (talk) 05:48, 11 January 2016 (UTC)

It's okay to not be too technical. Timhowardriley (talk) 21:29, 11 January 2016 (UTC)
Whatever the roots, "program" is used to describe a wide spectrum of techniques, including the declarative ones. You'd be hard pressed to find anyone, for example, to argue that Prolog is not a programming language or that something written in Prolog is not a program. Rwessel (talk) 06:03, 12 January 2016 (UTC)

Added information needs development[edit]

I removed "(an intermediate representation of the decoded code, such as Python's .pyc files, may be stored for efficiency purposes)" and "(It is possible to build a REPL on top of a compiler, as the Scala REPL does, but this involves the overhead of full compilation.)" because the extra information needs to be developed. Timhowardriley (talk) 19:13, 27 March 2017 (UTC)

I also removed "(less relevant these days, when interpreters are typically redistributable without charge)". This is a point of view. And I removed "which compile Java code to native machine code ahead of time,". Information should be presented in pieces, not one long concept. Timhowardriley (talk) 19:22, 27 March 2017 (UTC)