Talk:Programming language/Archive 4
This is an archive of past discussions about Programming language. Do not edit the contents of this page. If you wish to start a new discussion or revive an old one, please do so on the current talk page. |
Archive 1 | Archive 2 | Archive 3 | Archive 4 | Archive 5 | Archive 6 | → | Archive 8 |
Lead paragraph trying again
Okay I've slept on the matter. Let me try to summarize my position.
It really would be best to provide a simple citation, as I have done. All the evidence presented so far is indirect. Nevertheless, I expect to be shouted down on this point, so I will yield.
The next question is how to write the lead paragraph to be NPOV between the two positions. This is the question I tried to bring up before that was universally ignored. I hope no one disputes this, as I really can't see how you can possibly argue that the Turing-complete POV should be completely ignored as my POV, having two citations, is by Wikipedia policy in a stronger position than your POV, having none. Ideogram 01:36, 17 June 2006 (UTC)
Citations
Ideogram, it is somewhat frustrating that you keep insisting that the other POV has no citations. I have provided a number of citations where the term "programming language" is used to refer to a non-Turing complete language. I am not sure what would satisfy you. Sources that does not think that Turing-completeness is not a prerequisite for a programming language will not necessarily have a sentence saying "a programming language need not necessarily be Turing-complete"; if an author believes that Turing-completeness is irrelevant, then that author will most likely simply not mention it. In a similar fashion, sources that do not consider intelligent design relevant to evolutionary biology will not mention the absence of a designer; they will simply discuss evolutionary biology. Nevertheless, I will humor you and provide a few more citations, in addition to the ones I have already provided.
- Programming languages are notations. They are used for specifying, organizing, and reasoning about computations. Just as English compositions range from notes to sonnets, programs range from prototypes that are used once and forgotten to production tools that are shared and supported. This range of needs has motivated the creation of hundreds of programming languages.
- Language designers balance
- making computing convenient for people with
- making efficient use of computing machines.
- Convenience comes first. Without it, efficiency is irrelevant.
- ---Ravi Sethi, Programming Languages: Concepts and Constructs
Nothing about Turing-completeness there, nor in the whole textbook ("Turing" does not even appear in the index.) Also consider this:
- Programming languages are the medium of expression in the art of computer programming. An ideal programming language will make it easy for programmers to write programs succinctly and clearly. Because programs are meant to be understood, modified, and maintained over their lifetime, a good programming language will help others read programs and understand how they work.
- ---John C. Mitchell, Concepts in Programming Languages
Nothing about Turing-completeness there either. Mitchell does write, later:
- Computability theory establishes some important ground rules for programming language design and implementation. ...[deletia]... All standard general-purpose programming languages give us the same class of computable functions (p.16)
However, note that Mitchell felt the need to qualify this statement with the adjective "general-purpose". Mitchell could easily have omitted this qualifier, but then his statement would have been false. At best, the above statement only claims that general-purpose programming languages need to be Turing complete (although I still insist that this is a rather curious claim in the face of FORTRAN-77, which had neither a heap nor a stack). k.lee 22:23, 19 June 2006 (UTC)
p.s. See also SIGPLAN bylaws, cited by Allan below:
- The scope of SIGPLAN is the theory, design, implementation, description, and application of computer programming languages - languages that permit the specification of a variety of different computations, thereby providing the user with significant control (immediate or delayed) over the computer's operation.
Note that SIGPLAN represents the combined authority of virtually every serious programming language researcher on the planet. If there is any reasonable citation for a "consensus" definition of programming languages, SIGPLAN's definition is it. There is nothing about Turing-completeness here. k.lee 22:28, 19 June 2006 (UTC)
- I'm not trying to exclude your POV. I'm asking you not to exclude mine. Ideogram 22:41, 19 June 2006 (UTC)
Including my POV
That's not quite what I had in mind. I was talking about the lead paragraph. Here's a clunky first draft that might give you the idea:
- A programming language is an artificial language intended to be usable for controlling the behavior of a machine (often a computer). Some authors require a programming language to be general-purpose, that is, able to express any computer program (in mathematical terms, Turing-complete).
- Like human languages, programming languages have syntactic and semantic rules used to define meaning.
- Thousands of different programming languages[1] have been created and new ones are created every year. Few languages ever become sufficiently popular that they are used by more than a few people, but professional programmers are likely to use dozens of different languages during their career.
BTW we need a two to three paragraph lead that adequately summarizes the article for FA status.
Thank you for your patience and being willing to discuss. Ideogram 23:05, 19 June 2006 (UTC)
Why must we mention Turing-completeness in the article lead? k.lee 23:31, 19 June 2006 (UTC)
- We could footnote it if you prefer. Ideogram 23:35, 19 June 2006 (UTC)
- Please note that "Turing-complete" is emphatically not the same as "able to express any computer program". Turing machines expressly exclude the possibility of input during computation. Quoting from Turing's original paper:
- If at each stage the motion of a machine (in the sense of §1) is completely determined by the configuration, we shall call the machine an “automatic machine” (or a-machine). For some purposes we might use machines (choice machines or c-machines) whose motion is only partially determined by the configuration (hence the use of the word “possible” in §1). When such a machine reaches one of these ambiguous configurations, it cannot go on until some arbitrary choice has been made by an external operator. This would be the case if we were using machines to deal with axiomatic systems. In this paper I deal only with automatic machines, and will therefore often omit the prefix a-.
- Languages which include the capability to receive input during computation (i.e. most general-purpose languages) are capable of expressing programs that cannot be reduced to a Turing machine (but might be expressed as a "choice machine"). --Allan McInnes (talk) 16:11, 20 June 2006 (UTC)
- Good point. Since no language (at least that I've heard of) absolutely requires user input durring processing, Turing completeness still holds. Note that input before processing (like arguments) would still keep it in the automatic category, because the program doesn;t have to wait for input, it already has it. Jaxad0127 16:30, 20 June 2006 (UTC)
- Please note that "Turing-complete" is emphatically not the same as "able to express any computer program". Turing machines expressly exclude the possibility of input during computation. Quoting from Turing's original paper:
- You (I think) misunderstand my point. I'm not claiming that it isn't possible to write programs that conform to the Turing machine model of computation. I'm saying that there are programs that cannot be expressed as Turing machines, but can be expressed in programming languages (such as programs that involve interaction). As a result, the claim that Ideogram makes in his proposed leader (...able to express any computer program (in mathematical terms, Turing-complete)...) is false, since "Turing-completeness" != "able to express any computer program". It's perhaps true that "Turing-completeness" == "able to express any non-interactive computer program", but even that is questionable. See here for more. --Allan McInnes (talk) 16:39, 20 June 2006 (UTC)
- What if we change the wording to say algorithm instead of program? Algorithms are non-interactive, which would remove any those problems. We could also say that programs are made of algorithms. Jaxad0127 20:24, 20 June 2006 (UTC)
The Turing bit in "Definitions"
I still think a footnote is better, but I yield to Derek on his preference for inline text.
- I suspect that most readers will be surprised by these examples. Also I have seen instances where people have jumped in and edited material without reading the footnotes. An 'idiot proof' article cuts down on the maintenance. Derek farn 02:04, 18 June 2006 (UTC)
However, I want to not that I think something like sed is important to list in the examples.
- I think Joe Smoe will have heard of html, might have heard of sql and is very unlikely to have heard of sed (care to bet that an 'expert' windows programmer edits out that entry within 24 hours?). Derek farn 02:04, 18 June 2006 (UTC)
- If so, I'll restore it. Readership is mixed; it's general audience sure, but use of *nix systems is not "non-general". I don't want to belabor the issue of the exact computational power of 'sed' (which I believe should be equivalent to a regular grammar; or maybe even more than that), but mentioning something fairly well-known and at a meaningfully "intermediate" level of power is worthwhile. It's only a half-dozen words, if readers want to know more, they can follow the sed link. LotLE×talk 04:12, 18 June 2006 (UTC)
- As it turns out, sed is apparently Turing complete. --Allan McInnes (talk) 20:29, 19 June 2006 (UTC)
- Oh, that seems right. I had forgotten about the 'b' instruction since... well, when I use sed it's almost always just 's/foo/bar/'. LotLE×talk 20:41, 19 June 2006 (UTC)
In particular, my own use of "programming language" would almost certainly exclude HTML or similar markup-only languages, though I recognize PL is sometimes used by non-experts of HTML. On the other hand, I would myself almost certainly call sed scripts "programming language" (knowing full well their limited computation power).
- Which of the definitions of programming language would you apply to sed scripts? Derek farn 02:04, 18 June 2006 (UTC)
- Of the bullets, the first three all clearly apply to sed scripts, especially to scripts that are more than one-liners. The last bullet isn't exactly a definition: it says there are these different levels of computational power, and lots of things are Turing-equivalent, but it doesn't realy define the language in terms of computability. LotLE×talk 04:16, 18 June 2006 (UTC)
An important difference is that sed does something. That is, you can run a sed script to perform relatively sophisticated and complicated modifications to files, and in a way you might want to repeat against different input files. In that, it serves a very similar role to Perl, Python, Bash, etc. (Is Bash Turing-complete if you exclude all the standard file/text utilities it typically utilizes? The answer isn't immediately obvious to me, though I would lean toward "yes" in my intuition).
SQL has a little bit of the same quality. It performs meaningful manipulations on a special object, an RDBMS. But something that tweaks texts and files has much more of the "feel" of a regular programming language, quite apart from details of syntax or formal computational power. LotLE×talk 00:45, 18 June 2006 (UTC)
Digression on branching and loops
It's not a terribly important point, but the third bullet in "Definitions" lists flow control as part of the description. On might be inclined to think that sed does not include flow control. However, this is not so. While you cannot loop in sed, you can branch. For example, let's implement this pseudo-code IF block:
FOR LINE in FILE: IF contains_digits(LINE): use_ampersand(LINE)
Here's my sed version:
$ cat test.data Spam and 37 eggs Spam and twenty-one eggs $ cat test.sed s/\(.*\)\([0-9]\)/(HAS NUM)\1\2/ s/^\((HAS NUM)\)\(.*\)\(and\)\(.*\)/\2\&\4/ $ sed -f test.sed test.data Spam & 37 eggs Spam and twenty-one eggs
In particular, I create a placeholder prefix on the line in order to effectively have an "IF" test on the next line of the sed script. More complex arrangements are possible with such placeholders, but this shows the concept.
Also, as written, the article describes the need for a looping construct to be Turing complete. While something like a loop (including recursion, though calling that a loop feels a bit pedantic to me) is necessary, it is not sufficient. You need a specific kind of loop. The example BlooP was constructed specifically to show that a loop can be "too weak" for Turing completeness. This isn't the article to get into a lot of detail on that, but I wonder if maybe a word or two couldn't be changed to be slightly more accurate (what it says isn't false, but it's slightly misleading). LotLE×talk 05:09, 18 June 2006 (UTC)
- As I recall the BlooP/FlooP discussion had nothing to do with Turing completness (I cannot recall whether it was about Chomsky's four levels of grammar or first order logic vs. propositional calculus. I will have to go and dig my copy of GEB out from under a big pile of boxes in the garrage. Look at the definition of Turing machine to see that a test and jump loop is all that is needed (plus of course store/recall). Derek farn 20:38, 19 June 2006 (UTC)
- BlooP has a loop, but it's something like "Loop no more than N times". N is itself unbounded, but must be specified in the construct. That's enough to make it not-quite-Turing. Obviously, if it had a GOTO, that would also be strong enough, but it doesn't. LotLE×talk 20:44, 19 June 2006 (UTC)
Frankly, the article lacks some critical points
"program" is not defined in the article (A list of instructions performed by a computing machine). "Programming" is not defined in the article (The creation of such a list of instructions). "Language" is defined early but reference to it is preceed by "artificial" which is wholly insubstantial because there is nothing artificial about a list of instructions. A programming language is the most direct and best method of communicating with a machine and the purpose of a language is always communication. "Artifical" should be struck from the first line. "Program" should be placed first in the list of definitions. The article also mispresents, I believe, the commonality of modernly used languages. Its first paragraphs create a confusion of "thousands of languages" with no starting point for a person to begin to understand that a programming language is a method by which a person instructs a machine to perform a series of operations. Terryeo 08:58, 19 June 2006 (UTC)
Spurious "citation needed"
There were {fact} tags recently added to all the bullet points in "Definitions" (in what I certainly hope is not WP:POINT). I'm having a bit of trouble making sense of those tags. I removed the last of these since it seems only to accompany a brief summary of what's in the linked article theory of computation (the latter is, or should be, sufficiently cited).
The first three bullets have their {fact} tags right now. But I can only just barely make sense of what's being requested, and only if I kind of squint my eyes a bit. Most neutral summaries of uniform consensus opinions do not require a specific footnote. And it's hard for me to see where any actual dispute or doubt applies to the bulleted items. By analogy, the first sentence does not read:
- A programming language is an artificial language[citation needed] intended to be usable for controlling the behavior of a machine (often a computer[citation needed]). Like human languages, programming languages have syntactic[citation needed] and semantic[citation needed] rules used to define meaning.
...because no one seriously doubts or disagrees that PLs are artificial languages; often used on computers; have a syntax; or have a semantics. Some editors I come across seem to have a confusion between the idea that WP is not original research, and the wrong idea that WP is the same thing as a photocopier.
So what's actually in dispute about the bulleted definitions? LotLE×talk 17:53, 19 June 2006 (UTC)
- I'm not disputing them, nor is this a WP:POINT. I think they need citations (see below). Ideogram 19:06, 19 June 2006 (UTC)
- So it's just a random sprinkling of "citation needed" tags because you think the total number should be higher?! That's just plain wrong-headed, I'm afraid. And it sure sounds a lot like WP:POINT to me... a better approach would be to actually add a concrete citation where you think it is useful and relevant.
- Don't accuse me of WP:POINT, or I will get cranky. I specifically mentioned earlier that I wanted citations for these alternate definitions. Ideogram 19:21, 19 June 2006 (UTC)
- FWIW, I do think more footnotes would be desirable. But the last time I tried to add one, Derek farn took it out on the grounds that "readers don't look at footnotes". So I ceded on that, and let the material go in the main text. LotLE×talk 19:15, 19 June 2006 (UTC)
- Not footnotes. Citations. References to secondary sources backing up included material. See Wikipedia:Featured article candidates/Forth. Ideogram 19:21, 19 June 2006 (UTC)
Be specific
Leaving aside warring pointillism or crankishness, can you please explain with specificity, Ideogram, what you feel needs citation in the following... and what would constitute relevant citation:
- The language's users and audience. For example, a programming language differs from natural languages in that natural languages are used for interaction between people, while programming languages allow humans to communicate instructions to machines.[citation needed]
- The language's constructs. For example, a programming language may contain constructs for defining and manipulating data structures or for controlling the flow of execution.[citation needed]
I'm quite honestly and sincerely at a loss to understand how those differ from the lead sentence reductio ad absurdum I mention. What type of publication might be relevant to supporting such broad and commonplace summaries? Actually, let me back-pedal slightly... I can slightly make sense of how the data-structures/flow-control might be a non-universal characterization. The "interacting with machines" part I can't get at even that level. LotLE×talk 19:44, 19 June 2006 (UTC)
- Derek farn claimed that there were different definitions in use. I want to see citations stating those definitions like the citations I provided stating my definition.
- But if you don't want to do it, don't let me stand in your way. I've been advised, by the mediator no less, to leave this article entirely and let you guys work it out. No, I'm not bitter. Ideogram 20:22, 19 June 2006 (UTC)
- I didn't actually; what I said was "Leaving the article be is one solution" (User_talk:Kcordina#Derek farn) which is very different. If you're going to quote me, do it correctly. Kcordina Talk 10:05, 20 June 2006 (UTC)
- Sorry I misquoted you. Ideogram 12:51, 20 June 2006 (UTC)
- "The mediator"? Is that something like Erdos' "the Book"? Or is it just what you call the voices in your head :-) (don't worry... I call the voices in my head "Gertrude", which is no better). LotLE×talk 20:47, 19 June 2006 (UTC)
- The mediator is Kcordina, the user who took my Mediation Cabal request.
- The many voices in my head never stop arguing with each other, so I call them Usenet. Ideogram 21:59, 19 June 2006 (UTC)
FAC premature
I guarantee this FAC nomination will fail. I recently tried a FAC nomination and was told I need as many as one citation per paragraph. This article is nowhere near that. Ideogram 19:04, 19 June 2006 (UTC)
- FAC commentators make lots of different comments, often contradicting each other. I'm not per se disagreeing with the ">1 citation/para" guideline, but someone suggesting that isn't the same as it being an actual WP guideline.
- Several commentators noted the need for more citations in my nominee. This article has a similar level of citation. Ideogram 19:17, 19 June 2006 (UTC)
- In any case, I imagine we can benefit from whatever FAC commentators suggest. There's nothing particularly wrong with failing a FAC nomination; and it's even a good thing if it generates useful suggestions (there's no restriction on renominating later).
- I agree we can benefit from their suggestions, but I could have told you what they would say. Ideogram 19:17, 19 June 2006 (UTC)
- Actually, the truth is that I really could hardly care less whether or not this article becomes an Featured Article. Ideogram—and I think a couple other editors—have suggested that would be a desirable thing. So I figured some outside input on where it might fall short of that would be helpful. LotLE×talk 19:12, 19 June 2006 (UTC)
- Again, I do feel FA status is desirable, but if you had asked me I would have told you what that requires. Certainly a Peer Review first would have been a good idea. Ideogram 19:17, 19 June 2006 (UTC)
- Opinions vary, but I've had a number of editors comment that Peer Review rarely generates as much, or as relevant, commentary as FAC nomination. That's pretty much been my experience as well. LotLE×talk 19:34, 19 June 2006 (UTC)
- <Shrug>. It helped me. See Wikipedia:Peer review/Forth/archive1.
BTW we will need to wait a month after the failed nomination to renominate. It's ok, we will need the time. Ideogram 16:00, 20 June 2006 (UTC)
HTML as programming language
HTML is not a programming language; as its name says, it is a "markup language" designed to indicate the structure of data. Though it isn't really a data structure either, it is reasonable to treat the DOM tree that it describes as a data structure. Javascript operating on HTML to make "dynamic HTML" is not a new programming language; it is the Javascript programming language operating on the DOM data structure. It is like the difference between S-expressions and Lisp programs: (((a . b) c) (x) (23 4.5)) is a Lisp S-expression (a piece of data), while (cond ((atom x) x) (t (cons (cdr x) (car x)))) is a program fragment. In Lisp, of course, the program is expressed using the S-expression data structure. But then, there are *other* programming languages (such as, say, Planner) which use S-expressions as the representation of programs. --Macrakis 20:05, 19 June 2006 (UTC)
- While I haven't wanted to rock that particular boat, I second Macrakis' comments and his edit in removing HTML as an example. I wonder though if it might not be possible to add something along the lines of: Non-computational markup languages are sometimes informally referred to as programming languages. I agree the equation is a mistake, but it's one that's made fairly often by laypeople. LotLE×talk 20:12, 19 June 2006 (UTC)
- I also agree with Macrakis. PLs are a subset of computer languages. The key distinction is (I think) the ability to express some kind of computation. Many introductory PL texts start with a simple language of arithmetic. AFAIK HTML cannot be used to express even simple arithmetic. The semantics of HTML are structural rather than computational. --Allan McInnes (talk) 20:25, 19 June 2006 (UTC)
- And before anyone jumps on me for not providing a citation for the use of "ability to express computation" as a criteria for defining programming languages, I quote from the scope section of the Bylaws of the ACM SIGPLAN:
- The scope of SIGPLAN is the theory, design, implementation, description, and application of computer programming languages - languages that permit the specification of a variety of different computations, thereby providing the user with significant control (immediate or delayed) over the computer's operation. (emph. mine)
- --Allan McInnes (talk) 20:44, 19 June 2006 (UTC)
- And before anyone jumps on me for not providing a citation for the use of "ability to express computation" as a criteria for defining programming languages, I quote from the scope section of the Bylaws of the ACM SIGPLAN:
The issue is not whether we think HTML is a programming language (I don't), but that lots of other people think that it is. A definition of any term is decided by the poeple who use it. A subset of people may choose to define it one way (eg, Turing completeness), but that will not stop other people using it in other ways. If we are to write a truely unbiased article then we need to reflect views other than our own. If you go back through the logs you will see that there have been discussions about defining a general purpose language as one that is Turing complete.
So HMTL is a markup language, so is postscript and nobody claims that postscript is not a programming language (ok, perhaps a few people do). Derek farn 20:47, 19 June 2006 (UTC)
- But you can express computations in Postscript, or LaTeX. You cannot do so in HTML/XML/troff/etc. (wait, someone will come along and tell me I forgot some wrinkle in troff :-)). LotLE×talk 20:51, 19 June 2006 (UTC)
- Postscript is not a markup language, that is, a language intended to define the structure of string data. It actually computes the display in very general ways and is in fact Turing-complete (see WP article).... --Macrakis 20:55, 19 June 2006 (UTC)
- The line is slightly fuzzier than Macrakis suggests. TeX is also Turing complete, yet clearly the primary use of (La)Tex is to "markup documents". So it's not completely irrational for lay audiences to conflate the cases, given the overlap. LotLE×talk 20:58, 19 June 2006 (UTC)
- I agree that the line is not crystal clear, but it is not all that fuzzy. If the language is intended primarily to specify structure which can be used in various ways, then it is a markup language. If it is primarily intended for execution, then it is a programming language. Of course, you can do various things with programs (analyze them statically, etc.), so that is where some of the fuzziness comes in. The example of TeX vs. Latex is actually instructive. TeX is pretty clearly a programming language; Latex is a layer on top of TeX which is supposed to make it look more like a markup language, although it really does have TeX inside, so it is a programming language masquerading as a markup language. Brian Reid's Scribe was clearly supposed to be a markup language. The syntax is not the issue here: clearly you can define a programming language with S-expression or HTML-like syntax. --Macrakis 21:11, 19 June 2006 (UTC)
- Just because some people get programming languages and markup languages confused doesn't mean that we need to propagate the confusion here. If anything, I would think this article provides a perfect opportunity to inform those who are confused as to the distinction between markup and programming. I think that LotLE's suggestion to point out that some people incorrectly call markup languages programming languages is a good one. --Allan McInnes (talk) 20:59, 19 June 2006 (UTC)
- Sounds good. That distinction is very important. Jaxad0127 21:10, 19 June 2006 (UTC)
Ada
I note that Macrakis has again reverted the mention of Ada as a general-purpose programming language. In order to forestall another revert war, I'd like to point out the following, which support Macrakis:
- The Ada programming language article specfically states that Ada was originally created for embedded systems.
- The Ada Steelman language requirements document contains the following, which also confirms Macrakis' assertion that Ada was created a an embedded language rather than a general-purpose language
- The technical requirements for a common DoD high order programming language given here are a synthesis of the requirements submitted by the Military Departments. They specify a set of constraints on the design of languages that are appropriate for embedded computer applications (i.e., command and control, communications, avionics, shipboard, test equipment, software development and maintenance, and support applications). (emph. mine)
--Allan McInnes (talk) 20:20, 19 June 2006 (UTC)
Citation format
For your reference, templates like {{Cite web}} and {{Cite book}} may be useful. Ideogram 14:13, 20 June 2006 (UTC)
Please see User:Spangineer/inline citations. This user is a very active FAC commentator. Ideogram 15:41, 20 June 2006 (UTC)
Revised leader
I have two concerns about the recently revision to the leader:
- As I pointed out above, in the last dialogue on Turing completeness, "Turing complete" is not the same as "able to express any computer program", since Turing machines are non-interactive. Turing explicitly stated this in his original paper, as the quote I gave above shows.
- The present wording of the leader strikes me as odd. Are there truly authors that really require all programming languages to be "general-purpose"? Or do these authors require that "general-purpose" programming languages be Turing complete?
--Allan McInnes (talk) 16:26, 20 June 2006 (UTC)
Here is the quote I presented earlier, copied from the archive:
- A programming language is a language intended for the description of programs. Often a program is expressed in a programming language so that it can be executed on a computer. This is not the only use of programming languages, however. They may also be used by people to describe programs to other people. Indeed, since much of a programmer's time is spent reading programs, the understandability of a programming language to people is often more important than its understandability to computers.
- There are many languages that people use to control and interact with computers. These can all be referred to as computer languages. Many of these languages are used for special purposes, for example, for reserving seats on airplanes, conducting transactions with a bank, or generating reports. These special-purpose languages are not programming languages because they cannot be used for general programming. We reserve the term programming language for a computer language that can be used, at least in principle, to express any computer program. Thus, our final definition is:
- A programming language is a language that is intended for the expression of computer programs and that is capable of expressing any computer program.
- --Principles of Programming Languages, 2nd ed.
There is a footnote. The sentence "We reserve the term programming language for a computer language that can be used, at least in principle, to express any computer program." has the footnote "This is not a vague notion. There is a precise theoretical way of determining whether a computer language can be used to express any program, namely, by showing that it is equivalent to a universal Turing machine. This topic is beyond the scope of this book."
It seems quite clear.
I of course would agree with your adding your POV to the article, with the citations you have provided. Ideogram
- I have modified the wording to say "algorithm" instead of "computer program". This is a more accurate statement, since algorithms are explicitly non-interactive, while still retaining the spirit of what the PoPL quote says. Is this acceptable to you? --Allan McInnes (talk) 16:49, 20 June 2006 (UTC)
- I think your clarification is excellent, better than my wording. Ideogram 16:55, 20 June 2006 (UTC)
formatting bug
I notice you removed the breaks I inserted. I don't know about your browser, but on mine (firefox) there seems to be a formatting bug that runs all three paragraphs in the lead into one paragraph. I don't know how to fix this. Ideogram 17:11, 20 June 2006 (UTC)
- This appears to be a problem cause by the CSCOTW template. Since it's been more than a week since this article became CSCOTW I've simply removed the template. Not sure exactly what the problem was though. I'll have to take a look at the template. --Allan McInnes (talk) 17:19, 20 June 2006 (UTC)
- I suspect when you moved the footnote ahead of the period it fixed the bug. I've noticed this before when a footnote ends a paragraph. Ideogram 17:27, 20 June 2006 (UTC)
- I don't know how to remove Programming language from the box on Wikipedia:WikiProject Computer Science/Collaboration of the Week. Ideogram 17:47, 20 June 2006 (UTC)
- Ok, I've made the fix. I've also added a "change current CSCOTW" link to the template in question, so any time you want to chnage the article to a new one you can just click the link and make your edit. --Allan McInnes (talk) 18:40, 20 June 2006 (UTC)
Changes to lead
I don't like Lulu's changes to the lead. Ideogram 18:43, 20 June 2006 (UTC)
- They look good to me. What precisely are you objecting to? --Allan McInnes (talk) 19:22, 20 June 2006 (UTC)
I don't understand why my added sentence should be at the end of the lead para instead of the second sentence.On second glance, I see that the notion of algorithm is introduced in the previous sentence, so this makes some sense. Let me think about this.- I don't like "every", I don't see why that's better than "any", and I don't like it italicized. Ideogram 19:29, 20 June 2006 (UTC)
I really detest italics. It yells "look at me", almost as bad as capitalization. Ideogram 20:23, 20 June 2006 (UTC)
"every algorithm" is just plain incorrect here. It implies a programming language can express every algorithm all at the same time. Ideogram 20:29, 20 June 2006 (UTC)
- No, it doesn't imply that. Trust me, I get paid good money to write, and to understand the nuance of words. Any really fails to get at the contrast the sentence needs to make. It's ambiguous and restrictive, rather than appropriately expansive. E.g. "Is there any algorithm you can express in FlooP?" LotLE×talk 20:51, 20 June 2006 (UTC)
- Trust me, I won a national high school English award and did my Humanities concentration in Creative Writing at MIT. I gave you "conceives" over "views", why don't you give me "any" over "every"?
- E.g. "You can express any algorithm in FlooP" vs. "You can express every algorithm in FlooP"
- Right, the first one is tin-eared, the second one better expresses the intention. LotLE×talk 22:06, 20 June 2006 (UTC)
- I'm sorry to have to do this to you, but you also thought you knew more about FA status than I did, and you were proven wrong. I do take care to know what I'm talking about. Ideogram 21:11, 20 June 2006 (UTC)
- Honestly, Ideogram, you're not that new to Wikipedia anymore. It's time to grow past this Usenet-ish habit of turning every irrelevant thing into the most tortured argument, carried on to the lengthiest degree possible. (and no, I never expressed any opinion about whether I or you "knew more about FA status"). LotLE×talk 22:06, 20 June 2006 (UTC)
- You really should comment on the content and not the contributor. And if it's irrelevant, you could just let me have my way, like I let you have your way on FP. Ideogram 22:36, 20 June 2006 (UTC)
- There's no contrast. You just think there's a big contrast since we had a big argument about it. It's a minor detail hardly noticeable to someone new to the subject. Ideogram 21:18, 20 June 2006 (UTC)
- If there was no contrast, there would be no need for the final sentence. It's not some ideological war, it's just the development of the paragraph. It flows from a weaker, or more expansive, definition to a stronger or more restrictive one. The final sentence of the lead about every computation is a verbal contrast with the plain "some computation". But it needs to be highlighted, or it just reads like redundancy (yes, I realize that a reader paying very close attention can draw out the distinction, but we're not posing a puzzle, rather conveying a meaning). LotLE×talk 22:06, 20 June 2006 (UTC)
- I'm tired of arguing about this. Ideogram 22:36, 20 June 2006 (UTC)
Thanks for ISBN Allan
Thanks for that ISBN. I really should have done it myself since I have it right in front of me. Ideogram 18:56, 20 June 2006 (UTC)
Definitions section
The fourth entry is like Euclid's parallel lines postulate: it's way longer and more clunky than the others. Ideogram 19:49, 20 June 2006 (UTC)
punct then ref
The style guideline I read said both are acceptable. However, since both are acceptable, and the bug I was trying to avoid doesn't seem to be happening, I'll leave it. Personally I like it better this way too, I was just worried about the bug. Ideogram 20:18, 20 June 2006 (UTC)
- COTW template's gone, so no bug. See Wikipedia:Footnotes#Style recommendations for style guide: i.e. normally "word-punct-ref", with exception only when footnote refers only to specific term or clause inside a sentence. The example given is:
- Many editors prefer citations to follow punctuation,[6] like this.[6] However, if there are instances when there are two[7] terms that need a footnote[8] within the text of one sentence, then it is advisable to place the references right next to those terms.
- Notice especially the absence of extra space between punctuation and note. LotLE×talk 20:24, 20 June 2006 (UTC)
SQL
SQL is not a computational language. It's a query language. Ideogram 22:47, 20 June 2006 (UTC)
- Charity is not a computational language. It's a programming language. --Allan McInnes (talk) 23:34, 20 June 2006 (UTC)
- Well I don't know what adjective applies to them both. I tried "artificial", feel free to suggest something. Ideogram 23:53, 20 June 2006 (UTC)
- Er. "Programming language"? Recall that some authors restrict the term "programming language" to Turing complete languages, not all authors. That's the whole point of giving those examples in the first place. --Allan McInnes (talk) 23:58, 20 June 2006 (UTC)
- There is disagreement whether they are programming languages. A NPOV wouldn't take sides by calling them programming languages. Ideogram 00:00, 21 June 2006 (UTC)
- Perhaps the "expressive power" bullet-point needs to be modified to make it more clear that although some people consider Turing-completeness a criteria for being called a "programming language" there are things like SQL and Charity that are considered by many to be programming languages but are not Turing complete. --Allan McInnes (talk) 00:01, 21 June 2006 (UTC)
- Ok I took a stab at it. See what you think. Ideogram 00:10, 21 June 2006 (UTC)
Oh, I hadn't seen this discussion yet, and used the word "computational" again. I think it's the right word, but I didn't do it to step on any toes. SQL-92 is computational: you can filter, you can aggregate, you can do math, you can effectively "map()", etc. It does many of the things normally referred to as "computations". E.g. what do you call "SELECT AVG(Age) FROM Persons WHERE Income > 50000
" if not a computation? I'd be up for a different adjective, if someone can think of something good... but the main point is to contrast with "markup" or "annotational". LotLE×talk 01:27, 21 June 2006 (UTC)
- The ANSI/ISO thing is very good. Specific and informative. But I do have a problem with "and some other computational languages"; it seems vague, wordy, and hard to understand without adding much. I'd really prefer just to delete (I know you hate that word) it. Ideogram 01:51, 21 June 2006 (UTC)
- Well, five words. I don't necessarily find that exact phrase mellifluous, but I think it's important to let readers know that the list that includes SQL, Charity is not meant as an exhaustive one. As it read, it felt like a suggestion that only those two languages were "not-Turing". I don't really care about the specific examples (though SQL is pretty familiar), but only about the indefinite-size quality of the list. Other examples might include some macro languages, or RPN calculators (I'm pretty confident on that case now that I've read a bit more), or the deliberately limited BlooP, etc. LotLE×talk 02:46, 21 June 2006 (UTC)
- Try that. Ideogram 02:52, 21 June 2006 (UTC)
- Looks good. "Examples" is a nice word (I think it was there before, but in a slightly different sentence). LotLE×talk 02:54, 21 June 2006 (UTC)
- Works for me! Nice job, both of you. --Allan McInnes (talk) 03:02, 21 June 2006 (UTC)
- It's nice to see Lulu and I can still agree on something :-). Ideogram 03:03, 21 June 2006 (UTC)