Talk:Programming language/Archive 6

Page contents not supported in other languages.
From Wikipedia, the free encyclopedia

Charity

I notice that an anon editor keeps removing references to the Charity programming language from the article, claiming that Charity is obscure. I'm not particularly wedded to using Charity as an example, if someone can come up with a better one. HTML is not a better example, since it is not a computational language

I don't understand the problem with HTML not being a computational language (whatever that might be). There are lots of people who believe that HTML is a language. Charity is well known in programming language circles? I think not. 67.62.122.162 20:16, 28 June 2006 (UTC)
The problem with HTML is that not only is it not Turing complete, it can't be used to compute anything. Even the toy languages provided as introductory examples in PL texts can do simple arithmetic evaluations. Regular expression languages can do string processing. HTML simply provides structural markup (hence the name Hyper-Text Markup Language). What we're looking for is an example of a language that is commonly referred to as a "programming language" (which eliminates things like regexps), even though it doesn't provide Turing completeness. As I have already said, I happy to use an example other than Charity, if you can come up with one. --Allan McInnes (talk) 21:25, 28 June 2006 (UTC)

it defines structure rather than computation. OTOH, Charity is (at least in programming language circles) one of the better-known examples of a non-Turing-complete general purpose language. For an example, see Darius Bacon's comment in this thread on Turing-completeness at the Lambda the Ultimate programming language weblog. --Allan McInnes (talk) 02:44, 26 June 2006 (UTC)

What about office suite macros? Jaxad0127 03:35, 26 June 2006 (UTC)
VBscript is a pretty crappy language, but it's a Turing-complete one. Same is true for most other macro languages: I remember way back writing WP5.1 macros which was cumbersome, but technically had the usual loop/conditional/storage constructs. LotLE×talk 05:09, 26 June 2006 (UTC)
What uses VBScript? MS Office uses VBA. Batch files? Jaxad0127 05:39, 26 June 2006 (UTC)
I think it's exactly the same thing, modulo a little bit of marketing-speak. I may have the sequence wrong, but I think MS originally called VBA "VBscript", then decided to use the VBA name later. In any case, not quite as ancient as my WP 5.1 macro days, I also once wrote some VBA scripts to process some Excel sheets... and it definitely had the minimal statements necessary to implement a Turing machine (in a way just barely less ugly than the "Turing-machine in sed" link Allan found).
In any case, Charity is a perfectly good example. It's definitely not in widespread use, but as an academic exercise it is well understood. It's not that a lot of Charity programmers are wondering what Charity is, it's just a clear case of something that almost anyone would call a programming language, while formally having less power than Turing-complete. LotLE×talk 07:41, 26 June 2006 (UTC)
For reference, VBA was the original name, dating back to (I think) Excel 3. VBscript is the name of the reimplementation used by Internet Explorer and Windows Scripting Host. As I understand it, they are pretty similar to each other. JulesH 13:42, 3 July 2006 (UTC)
An example is an example is an example -- just because it is obscure doesn't make it any less of an example. Dysprosia 07:49, 26 June 2006 (UTC)

A major flaw - the article does not even mention the first programming language! Konrad Zuse's Z3 (1941), the first functional program-controlled computer, used machine language programs. But just a few years later, between 1943 and 1945, Zuse designed the first high-level programming language Plankalkül. Even today notes survive with scribblings about such a plan calculation dating back to 1941. By 1946 Zuse had written a book on the subject but this remained unpublished. Heinz Rutishauser, one of the founders of ALGOL, wrote: "The very first attempt to devise an algorithmic language was undertaken in 1948 by K. Zuse. His notation was quite general, but the proposal never attained the consideration it deserved." Science History 11:57, 19 July 2007 (UTC)

It is not appropriate to mention Plankalkul in the article. It was an interesting effort that was never used, and had little if any direct influence on later languages. It's always possible to find some neat lesser known pioneer, and do a bit of hagiography around him/her. But this amounts to a footnote at most, and not really one for this particular article. Probably in something like "List of Programming Languages", maybe some other specialized articles.
I saw the same editor had previously added quite a bit of this hagiography of Zuse in this artilce (and I think a couple others). While Zuse was indeed an interesting guy, the point of an article isn't to "discover" the underemphasized significance of favorite figures. LotLE×talk 21:47, 19 July 2007 (UTC)
Well, are you able to find "some neat lesser known pioneer" who designed a programming language prior to Zuse? Then tell us about him. The section is about the history of programming languages. How could you possibly justify the omission of the very first documented design of a programming language? Could any decent history article about the discovery of America ignore those who discovered it before Columbus did? Science History 14:29, 30 July 2007 (UTC)

FORTRAN

I have always seen FORTRAN-77 listed among Turing-complete languages, and the article on Turing completeness lists it as complete. Can we have a source that the conventional wisdom is mistaken? Robert A.West (Talk) 01:42, 27 June 2006 (UTC)

FORTRAN-77 (and earlier versions) had neither recursion nor dynamic memory allocation; as the Fortran article says, it was a big deal when these were added to FORTRAN-90. There can be at most one activation of any given procedure on the stack at a time in FORTRAN-77; all scalar values occupy a predefined number of "storage units" (1 unit for integers and reals, 2 units for double-precision reals, etc.); and all compound data values (e.g., arrays) must have statically defined bounds. Therefore, any given FORTRAN-77 program is finite-state, unless you include I/O (which, IMO, does not count; if you include I/O, then any other non-Turing language at least as expressive as FSMs, including presumably Charity, can also be Turing-complete). There is, in short, no way to express the following program in FORTRAN, without using the I/O backdoor:
fun f(x) = let y = 1::x in f(y);
f(nil)
I believe that these facts are common knowledge among compiler writers, so I am having trouble finding a reference (other than the FORTRAN-77 standard, but I assume you want a more concise reference addressing exactly this issue). If you think I/O is sufficient to call FORTRAN-77 Turing-complete (some people do, I admit; it is included in the language definition) then feel free to revert. It would be nice, though, to find a nontrivial programming language that is better-known than Charity and yet not Turing-complete. k.lee 06:52, 27 June 2006 (UTC)
I was somewhat wondering what you meant too. I figured you were assuming READ TAPE was omitted from the meaning of FORTRAN-77, which is somewhat reasonable, since a machine might not have a tape drive (or equivalent). I sort of like the example, but we can't rely on "widely known" or "common sense". To use the example, I think we really need to cite someone else who specifically observes what you do.
For that matter, by somewhat similar reasoning (that I've given on the talk page archives), C is also not Turing-complete unless you count I/O (i.e. fixed, finite pointer size). LotLE×talk 07:03, 27 June 2006 (UTC)
OK, fair enough. I'm not going to argue this point further.
BTW, this has nothing to do with anything, but my reading of the C standard says that the amount of space that a pointer takes up when stored in an object must be statically fixed and finite, but it says nothing about how the hardware must interpret these bit patterns. Therefore, although there are a finite number of live pointer values in a program at any given time, there is no particular reason that the hardware for a conformant C implementation could not keep a table mapping each live pointer bit pattern to a bignum. (There are only k possible bit patterns and an infinite number of bignums, but who cares, as long as there are never more than k pointer values live at once?) To construct a Turing machine, define a function that calls itself recursively when it needs more tape, and use a single static pointer for the tape head. To move left and right on the tape, use pointer arithmetic to move the head between stack frames; this is not guaranteed to be defined, but it is also not prohibited, so an implementation that supports it is still technically standards-conforming. k.lee 08:45, 27 June 2006 (UTC)
Bah. Right after I wrote the above, I realized that you could probably make FORTRAN integers hold bignums via the same trick. k.lee 08:59, 27 June 2006 (UTC)
C doesn't have unbounded integers in the language spec, does it?! If you have an unbounded integer, you only need two of those to implement a Turing machine: One to represent the "tape", and one to represent the pointer. Say you have an m-symbol alphabet, consider the "tape-number" to hold one tape position per base-M digit. Since the "tape" can be indefinitely long, you might need more than a bounded 32-bit (or 128-bit, etc) number to point to the right position. Anyway, operations on the Turing machine can just be changes to the value of "tape-number". However, I really don't think C has an inherent type of "unbounded integer" (you need something like the GNU MP library, I think). Finite pointers to finite data types gets you a (really big) FSM, but not a TM.
In any case, for whatever language, our own analysis in WP:OR. I don't think it needs a really fancy source, just someone outside WP who makes the point. That was the advantage of Charity. It's own website make the computational power issue direct and straightforward. We don't have to rely on our own analysis of what the language does. LotLE×talk 16:40, 27 June 2006 (UTC)
Well, I never thought Postscript was Turing-complete either, but I am really rusty on the subject. At minimum, there should not be a contradiction between Wikipedia articles. It has been a long time since I used FORTRAN II, but I seem to recall that the language definition did not require that the same unit be usable for both input and output. Would that rescue the example? Robert A.West (Talk) 12:46, 27 June 2006 (UTC)
Take it or leave it, but I almost never failed to hear the mantra "Postscript is Turing complete". It feels like a commonplace to me. LotLE×talk 16:41, 27 June 2006 (UTC)
I seem to recall reading that the Turing-completeness of Postscript was demonstrated only after the language had been in use for some years. Perhaps I am remembering wrongly? Not that it really matters -- the expressive power of Postcript is not in dispute. I'll see if I can find some authority on the Turing-completeness, or lack thereof, of FORTRAN II, or possibly COBOL. At least those languages were widely used. Robert A.West (Talk) 22:04, 28 June 2006 (UTC)

It seems that the Hume language - at least the levels below "full" Hume - are not Turing-complete. But Hume is probably even more obscure than Charity. --Allan McInnes (talk) 21:56, 28 June 2006 (UTC)

float right images bad

The float right images were overlying the code box and that looked bad. I made an attempt to fix it, but I think what we really want is two columns with images that stretch to fit whatever size the browser window is. Does anyone know how to do this? Ideogram 19:55, 27 June 2006 (UTC)

Aliasing. I find that sizing image as an integer ratio reduction of the originals, where reasonable for an article, tends to produce better rendering of line-art. Continuous tone images like photos tend to respond to various sizes better. So I sized the two images I recently put in at exactly 1/2 their original size, rather than some complex ratio; this seems like OK sizes for WP articles (the originals are around 600-800 pixel width). LotLE×talk 20:11, 27 June 2006 (UTC)
You mean you don't have SVG output? Ideogram 20:14, 27 June 2006 (UTC)
Of course I do. But many readers will not be able to render SVG, so providing PNG images is better. If you want SVG versions of the iamges... well, actually, I don't have the touched up ones. I added the captions and inset the tokenization using a bitmap editor. But I am happy to upload the SVG of the parse tree and tokenization if you feel you have a need for them. LotLE×talk
I didn't realize that was an issue. I'll leave it up to you. Ideogram 20:28, 27 June 2006 (UTC)

I am concerned with the most common browser window sizes. 1280 and 1024 are fine. 800 is ok except there are some orphans in the text. 640 is bad but maybe we don't have to worry about that. Ideogram 20:14, 27 June 2006 (UTC)

The parser tree is a little wider than I'd want, I think something like 390 pixels as reduced. For the most part, I prefer images in articles not to exceed 300 pixels, or 350 tops. However, reducing it further—either to 1/3 the original size, or to some non-simple ratio—just doesn't seem legible if you don't zoom in. Still, even in a 640 width screen, the image will fit on screen, it will just make the text very narrow. With 800x600 screens, it should be fine. LotLE×talk 20:21, 27 June 2006 (UTC)
At 640 the image overlays some of the text for some reason. The image is already too small to read at the current size; I think the thumb should just give the shape of the tree and assume the reader will click on it if they want to read the text. Ideogram
You're not by chance using an archaic browser like IE, are you? In any case, 640x480 will cause difficulties in a lot of articles... we should not strive for causing difficulty, but neither should we primarily consider plain VGA nowadays. LotLE×talk 20:37, 27 June 2006 (UTC)
I'm using firefox. I like to have two side-by-side windows on the screen; on my current (old) computer at 1280x1024 that gives a browser width of 640. Ideogram 20:40, 27 June 2006 (UTC)
Luxury ;-) On my phone, the screen is tiny (though pictures are shrunk too, so it amazingly still works). Luckily my Mac has 2560x1600 (though no doubt this will look small when people look back at this in the archive). So I have to adjust between 15 lines sigs and one line paragraphs. The idea with thumbnails is that you can set a user-default size so people can adjust their experience without affecting anyone else. Stephen B Streater 20:45, 27 June 2006 (UTC)
When I get my main machine back from the shop I will have two 2048x1536 screens. Now that's what I'm talkin' 'bout. Ideogram 20:49, 27 June 2006 (UTC)
Sounds good :-) I forgot to mention that with Safari, the code boxes were overwritten on the right hand side, but no actual code was unless I made the browser window very narrow - in which case the right hand image did overwrite the code text as you described with your Firefox browser. Stephen B Streater 20:53, 27 June 2006 (UTC)

separate tokenization box

I think we should take the tokenization box out of the parse tree image. It is already too small to be readable. Ideogram 20:30, 27 June 2006 (UTC)

I disagree. I don't want an article dominated by too many images, and an image that is mostly whitespace wastes space on the page. It's true that you need to zoom in on the image to really read the tokenization. But even at the condensed size, you can see the general form of it: namely just a tape of symbols. The tokenization isn't exactly all that interesting in its details; but they aren't hard to see if you do click on the image to zoom in. Of course, I've given editors all my working parts here on the talk... you can cut-and-paste as well as I can. In fact, you even have all the source code used in the production process too. So have at it. LotLE×talk 20:34, 27 June 2006 (UTC)
The tokenization is pure text. Making it an image isn't even necessary. You can embed it in the text if you like. Ideogram 20:37, 27 June 2006 (UTC)
Well, yeah... but it looks better like I did it. Just look earlier on this page to see you can also do the parser tree as text, if you really want. LotLE×talk 20:38, 27 June 2006 (UTC)
I don't really see the need to "fill up" the whitespace in the tree diagram. But it's not that important to me so I'll leave it for now. Ideogram 20:42, 27 June 2006 (UTC)

Congrats

Congratulations on the work on this article. It is looking very good. Hope that editors can continue contributing to it and making it one that they can all feel proud about it, and while doing that having both fun and respect for each other's effort. I will keep an eye on this article and assist with any disputes that require a non-involved third-party. ≈ jossi ≈ t@ 04:33, 28 June 2006 (UTC)

citations

Lulu, what is with you and WP:POINT? You really need to drop your prejudice about me.

As for the fact tags, it does take some effort to tag what needs a citation and it does help to have them in there so that people know what is needed and can contribute. For FA status we need this level of citation, I've been trying to tell you that. On other articles I've had success getting people to add citations by adding fact tags. Ideogram 10:49, 28 June 2006 (UTC)

There is no need to add {{fact}} to each sentence. There is already a tag {{citations missing}} at top. You can invite editors to find some citations for each segment, if there are any disputed statements. If some statements are not disputed, as these may be facts rather than opinion, we do not need a specific citation. ≈ jossi ≈ t@ 16:06, 28 June 2006 (UTC)
I didn't add fact to every sentence. I added it to sentences that I felt we could find citations for. And if you try to get FA status the commentators will tell you to get citations for every fact in the article, not just the disputed ones. Ideogram 16:38, 28 June 2006 (UTC)

Please use this talk page to indicate facts you feel need additional citational support. If it were a matter of adding one or two at a time, it would be reasonable to try to address the questions. But looking at dozens or hundreds of inappropriately used tags makes it impossible to discern which might cover genuine concerns, and which are plainly WP:POINT. In the large majority of cases, I cannot make heads nor tails of what about a sentence might be thought to need a citation, nor why. A disruptive tag, bordering on vandalism, doesn't provide any such explanation... in fact, it makes it far less likely that any actual issues will be addressed when their lost in the noise.

We have been through this several times before, Ideogram. I appreciate all your good work, but you and I both know perfectly well that 90%+ of these tags are utterly meaningless (and apparently some sort of ego thing on your part), and concern sentences for which a specific citation is neiter needed nor even desirable. If I'm wrong (but I'm not), explain why here on this talk page, in sufficient detail to understand what it is you think needs citation. If you honestly believe there is some dispute, e.g. about the fact that Fortran was developed in the 1950s, the burden on you is to explain why such a doubt about apparently undisputed material exists. LotLE×talk 17:28, 28 June 2006 (UTC)

I don't know why you keep accusing me of WP:POINT. You seem to have some kind of paranoia about it. I never have, and never will, engage in WP:POINT. Can we lay that to rest?
I refer you again to User:Spangineer/inline citations for the need for citations. I refer you to Wikipedia:Featured article candidates/Forth for a page that failed FAC for not enough citations. Go ahead and read Forth if you don't understand how many citations we need.
Believe it or not, I usually know what I'm doing, and it's not WP:POINT. Despite appearances, I did not "randomly" sprinkle fact tags throughout the article. I spent significant effort thinking about every sentence to determine whether it was desirable and possible to find a citation for it. It certainly took me more effort than it will to remove the tags if we determine we don't need them.
I don't understand why I have to repeat this, but fact tags are not about disputes. They are about providing backup for every fact in the article, because no matter how smart you think you are, you are not a real expert. Ideogram 18:03, 28 June 2006 (UTC)
  • Ideogram, I hate to be rude... but you have butted heads with several editors of this page now. At least one of the editors whom you have butted heads with, appears to be the irascable, confrontational sort. But several others, include LotLE, are not. May I suggest that you may be taking personally things that you ought not get upset about? LotLE is an expert in these matters, and he seems to be a quite reasonable fellow.
Lulu can be irascible too. Just ask him. And he's not an expert, certainly not on FAC requirements. As for butting heads, I do pick my battles carefully. You just don't notice the battles I choose not to fight. And I'm not taking anything personally. I have patiently explained my reasoning several times, but if Lulu keeps accusing me of WP:POINT I may take that personally. Ideogram 18:06, 28 June 2006 (UTC)
  • Regarding FA criteria concerning citations. My understanding (which could be wrong), is that all claims of a FA must be backed by appropriate references. This doesn't, however, mean that every sentence in such an article should have a <ref> tag after the period; rather, it means that some source listed in the article should cover the topic at hand and provide evidence for the point. Articles with zillions of footnotes are generally poor style and difficult to read. Inline footnotes are best reserved for claims which are of key importance, or are surprising or controversial. IMHO, the appropriate level of footnoting for an encyclopedia article should be similar to that which is found in an academic paper or a scientific textbook (perhaps moreso as we have to assume an audience with general knowledge), but not egregiously moreso. Considering the case of Fortran; it's likely true that all relevant claims about Fortran can be attributed to a single source; there are likely several such sources to be found in Fortran.
  • --EngineerScotty 17:50, 28 June 2006 (UTC)
See the links I provided above for why this is not true. Ideogram 18:06, 28 June 2006 (UTC)
  • Talking procedurally, everything mentioned in Wikipedia should be cited. However placing a couple of references in every sentence will unnecessarily clutter the article. What I prefer is that references should be provided to all claims and any possible controversial statement (something that anyone can attempt to refute). However for most of the information present (whose source is necessary), I prefer {{inotes}}. To the reader, they are invisible, and at the same time help editors in following up to the sources as well as fulfil the requirements of GFDL about attributing sources. Also, if anyone thinks the statement/information is controversial enough to warrent sources, while trying to add the {{fact}}, s/he will notice the source and can convert to a reference. As an example, you may wish to see Indian Institutes of Technology article's "Education" section in edit mode, which I believe contains about a dozen inotes. In most the cases the decision of what to add as reference and what as an inote is largely arbitary and I have only provided my opinion. Also, I don't say that each and every sentence need to be cited in every way. Many things are no-brainer (like the capital city of a country, or specifically in this article's context like Fortran being a Programming Language), and need not be referenced in any way. — Ambuj Saxena (talk) 06:25, 29 June 2006 (UTC)
Please explain why Forth did not have enough citations, even though there were no statements left that anyone could attempt to refute. Ideogram 06:29, 29 June 2006 (UTC)

can we stop editing while we resolve this dispute

The more work we do now the more work it will be later to put the fact tags back in if that is what we decide. Ideogram 18:16, 28 June 2006 (UTC)

A shotgun spray of dozens and dozens of {fact} tags are never going to become acceptable. I am going to revert any such indiscriminate application on sight. Adding these is extremely disruptive, and shows real bad faith.
How many times do I have to tell you it wasn't a shotgun spray? And don't think you WP:OWN the article. And you must assume good faith.
Well, likewise. In complete sincerity, I believe that every tag I removed was attached to a sentence that did not need any citation beyond those provided by the general resources listed at the bottom of the article. If you disagree about a specific case, explain why on this talk page, explicitly and in relation to the particular sentence. LotLE×talk 22:16, 28 June 2006 (UTC)
I never accused you of bad faith. I never accused you of WP:POINT. I never said you "stomped your feet," Those comments are violations of Wikipedia policy.
We need a citation for every fact, at least one per paragraph. That's what the FAC commentators are telling me, don't get mad at me, I'm just the messenger. If you don't care about FAC status that's fine, but don't get in the way of those of us who do. Ideogram 22:26, 28 June 2006 (UTC)
I cannot believe you misunderstand the purpose of citations so badly. In fact, I do not believe it. Individual citations are not a quota thing.
Why don't you argue with User:Spangineer, User:Wackymacs, and User:Ambuj.Saxena, because that's what you're going to have to do to get FA status. Ideogram 03:11, 29 June 2006 (UTC)
You are not "the messenger", you are simply disrupting the article out of some sort of WP:POINT agenda, or to show off, or just to tilt and windmills for its own sake.
I absolutely refuse to talk to you as long as you keep accusing me of WP:POINT. Ideogram 03:11, 29 June 2006 (UTC)
But in the meanwhile, you essentially destroyed the article by making it unusuable for readers. It pisses me off for an editor to vindictively destroy an article I've worked pretty hard on. I'd hope that the fact you've also worked hard on it to would make you not desire destruction... but I guess not.
I absolutely refuse to talk to you as long as you are incapable of assuming good faith. Ideogram 03:11, 29 June 2006 (UTC)
You cannot achieve quality by doing a word count and quota count, and decide that a certain ratio means high quality. As EngineerScotty put it (and I've repeated already): Inline footnotes are best reserved for claims which are of key importance, or are surprising or controversial. As near as I can tell, no single claim you added scattershod tags to was surprising, controversial or of key importance. Or inasmuch as some may have been of key importance, they are perfectly well supported by the several general reference texts given as general source materials. LotLE×talk 03:02, 29 June 2006 (UTC)
Feel free to add tags to one or two narrow and specific points at a time; and accompany it with specific discussion here on the talk page. For example, recently Robert A West raised a very reasonable concern when FORTRAN-77 was added as an example of not-quite-Turing languages. He added one tag to that specific claim, and it was productively discussed on this talk page. That's what the tags are meant for. Or better still, just add citations yourself, rather than stomp your feet about their need (in what is, quite frankly, going to continue to be a WP:POINT violation).
You are failing to be civil. This is really annoying.
Still, it's never going to be appropriate or desirable to have footnotes on every sentence. Most sentences are non-controversial, and are supported in a more general way by the broad sources provided in this article. EngineerScotty characterized matters exactly right with: Inline footnotes are best reserved for claims which are of key importance, or are surprising or controversial. In other words, 90%+ of the places you put the tag aren't remotely relevant. LotLE×talk 18:33, 28 June 2006 (UTC)
Lulu, if you don't care about FP ever becoming a FA, that's fine, I'm not going to fight you on that. But I want PL to become a FA, and the citations are the largest chunk left to be done. What do I have to do to convince you? Did you even read any of the links I provided? Read the article by Spangineer. Read the Forth FAC discussion: "One per subsection is sort of a minimum... ideally, there should be a citation for every fact, which might be around one per paragraph, maybe more." Read the previous nomination for similar comments by User:Wackymacs and User:Spangineer.
You are not going to close out discussion on me. I will do whatever it takes to get you to listen to me. Ideogram 22:11, 28 June 2006 (UTC)
I think this article becoming FA would be good. I am absolutely certain that your shotgun random disruption makes that goal much farther from being achieved, not closer. The user space essay you mention looks fine, but it says nothing advocating misuse of tags to disrupt articles. LotLE×talk 22:18, 28 June 2006 (UTC)
Stop calling it random and a disruption. That is your opinion and it shows a failure to assume good faith. I have used this tagging process very successfully on Forth and Scheme programming language to get people to add specific references where a general call for "more references" acheived nothing. Ideogram 22:28, 28 June 2006 (UTC)

Nice point about programs writing programs

I like that addition by EngineerScotty. The main use of Postscript in machine-to-machine communication is piquant. Actually, my whole effort above with drawing the diagrams was possibly an example of this. Of course, DOT is not really a programming language, but a "graph description language". Nonetheless, I've seen people use DOT descriptions to schematically extract FSMs. It's not hard to imagine an actual "DOT2FSM" compiler being written in the future... at such time, a syntactically identical language could go from being a "markup language" to being a "programming language". Curious. Maybe I'll write that.LotLE×talk 19:11, 28 June 2006 (UTC)

Along those lines, you might be interested in taking a look at this paper. It discusses the use of graphviz and the dot file format as a frontend for the development of FSMs that ultimately get translated into VHDL. --Allan McInnes (talk) 20:06, 28 June 2006 (UTC)
Oh well, someone beat me to it. I was sort of contemplating using DOT as a higher level description of the semi-coroutine based Python state machine I present in some articles (and in my book). My idea was that DOT might be something like an embedded language there. My state machine framework is a little bit funny though: my states actually do something when they run; passing control to another state is just one option, they can also process for a while inside the state. So it's sort of a hybrid between a FSM proper, and regular control branching.
Since the compiler exists, does this mean that DOT is a programming language now? :-). Btw. The paper seems incorrect to me: at least my OSX version of Graphviz just renders the DOT files, it doesn't output them. Are other OS version more capable? (it's not hard to imagine one that allowed Visio-style drag-and-drop arrangement... but my version doesn't do that). LotLE×talk 20:57, 28 June 2006 (UTC)
IIRC there's a tool that comes as part of the graphviz distribution that allows the editing of dot graphs. After a quick googling: it's called dotty. I don't see dotty (or the supporting lefty) anywhere inside Graphviz.app, so I guess it hasn't been made part of the Mac version.
I suppose it could be argued that DOT is a PL. A non-turing-complete one at that :-) --Allan McInnes (talk) 21:14, 28 June 2006 (UTC)

Someone removed Postscript as an example, claiming that machine control is not programming. I put it back, because:

  • Postscript meets all definitions of a programming language
  • Being emitted by machine does not disqualify something. There are many translators and such which produce C or another "classical" programming langauge as an output, to further control a downstream subsystem--would anybody argue that C isn't a programming language for that reason?
  • In metaprogramming, the whole point is for programs to write programs.

--EngineerScotty 21:07, 28 June 2006 (UTC)

butting heads

BTW I don't recall butting heads with several editors. And even if I had, it's hardly relevant to my point. Comment on the content, not the contributor. And I really can't understand what I said that makes you think I'm taking anything personally. If anything, Lulu, by constantly accusing me of WP:POINT, is taking things much more personally than I am. Ideogram 18:27, 28 June 2006 (UTC)

Yes. Don't take things personally. I added lots of references to the FORscene article to get it through notability at AfD, but they were almost immediately moved to the list of external links to stop them cluttering up the article. I usually make one edit before moving to talk to find out more. This is a great opportunity to learn as well as to teach. Stephen B Streater 19:09, 28 June 2006 (UTC)

67.62.122.162

I invited 67.62.122.162 (talk · contribs) to participate in our discussion; characterizing his edits as "vandalism" is probably inappropriate. (In Wikipedia parlance, "vandalism" is always used to refer to things like blanking articles or inserting profane comments about someone's mother into the middle of one; not to disputes over content). It's good to WP:AGF until a good reason is found to do otherwise; 67.62 doesn't have a significant edit history here and may not be familiar with Wikipedia practice. (Remember WP:BITE). --EngineerScotty 21:20, 28 June 2006 (UTC)

OK, I apologize for my bitiness. But nonethless, the additions read like rants, and really need to be removed. I think maybe the citation can be added to the GOTO mention (in proper footnote style), but not the "streetcorner preacher" tone. LotLE×talk 21:33, 28 June 2006 (UTC)
I thought the edits were quiet reasoned and balanced, expressing things in a very non-judgemental fashion. I may have been out of place in deleting the postscript sentence. While a valid comment it is completely out of context in its current position. (67.62.122.162 22:32, 28 June 2006 (UTC) in a coffee shop, I don't normally do this kind of thing).
Btw, EngineerScotty, if you know 67.62.122.162 (talk · contribs), maybe you can convince her/him to stop removing your own very nice addition about metaprogramming that both myself and Allan McInnes have explicitly expressed our pleasure with on this talk page. Newcomer is one thing... but obnoxious is, well obnoxious. LotLE×talk 21:40, 28 June 2006 (UTC)
I don't know him any more than I know any of the rest of you; I've discussed the matter on his talk page. --EngineerScotty 21:42, 28 June 2006 (UTC)

The metaprogramming point is very interesting and relevant (and is discussed on the PL talk page). Postscript is a good example, but it's not unique. Postscript is a Turing complete language than some people indeed do write by hand. But it's mostly written by machines. In contrast DOT (which may or may not be a PL) is about half-and-half. In producing the graphs on PL, I generated some of the DOT language sources using Python programs, and edited others by hand. At the other extreme, I know many people who programmatically generate Lisp source code, or Python source code, or C source code (Pyrex is an interesting example of generating C based on a Python superset language); but clearly, those languages are usually written by humans directly. LotLE×talk 21:57, 28 June 2006 (UTC)

Response to RFC

I see no reason why not keep the sentence about Postscript and on machine programming another.   Andreas   (T) 22:41, 28 June 2006 (UTC)

Regarding questions of definition

I'm sure this has been brought up before, but plenty of knowledgable people have argued for a long time about what does or does not constitute a programming language. It's not Wikipedia's job to resolve this question - different definitions should be examined, along with the people who hold them and the languages which do or do not qualify under such definitions. Cases that are borderline or controversial like Postscript should be described as such. But watch out for original research - if a case is borderline or controversial, just say it's a programming language "according to verifiable source X, who uses definition Y" rather than "because it does Y which is the definition of a programming language". Deco 22:40, 28 June 2006 (UTC)

Tags used for disruption

On this talk page, I saw Ideogram make the claim that adding a ton of {fact} tags "worked" on the Forth article to bring it to Featured Article status. Of course, that article is not an FA, but more generously lets just assume the goal is improvement of that article, which genuinely is better than it was a month ago.

I was pretty certain that had Ideogram (or any editor) done anything so disruptive on that article as he did here, editors there would have screamed bloody murder about it. However, I decided to look at this more closely; I examined every change to the Forth article since Ideogram joined Wikipedia. During that time, Ideogram added eleven {fact} tags (actually, the {citation needed} synonym) over the course of five edits. However, Ideogram himself filled in references for some of those before adding more, so there were never a whole eleven such tags at once. I do think that many tags is a bit on the indiscriminate side, but it was during a couple day period, with Ideogram filling in many of his requests himself.

In contrast, on this article, Ideogram added eighty-seven {fact} tags during a single edit! Moreover, he reverted removal of this huge number of tags three times after different editors removed them. At almost exactly the same time he added a similar number of these tags to the Functional programming article (that I happen to watchlist).

To my mind, there is just no way to read this action as good faith. What it does is make the article effectively unusable to readers who might want to read it today, rather than in some gloriously prophesied future when it reaches FA status (even assuming such is the noble intent). The word for disrupting an article in order to make a point about goals for its eventual status is... WP:POINT. LotLE×talk 05:34, 29 June 2006 (UTC)

You have your facts all wrong. But I'm not talking to you anyway. Ideogram 05:59, 29 June 2006 (UTC)
The diffs are as follows:
It's one shy of a 3RR violation, but definitely not good behavior. I suppose it's conceivable that I counted the 87 tags wrong when I eyeballed it—anywhere from 85-90 is probably plausible for my counting error, though I think I counted right. LotLE×talk 06:19, 29 June 2006 (UTC)
Oh, I went and counted in Functional programming. It was indeed "only" forty-six {fact} tags there, so that's fewer than here. I think it just seemed like more because the article is shorter, so the density struck me more. LotLE×talk 06:24, 29 June 2006 (UTC)
You haven't even considered your biggest errors. But I'm not here to explain them to you. Ideogram 06:32, 29 June 2006 (UTC)
I suppose it's conceivable I made an off-by-one error in counting the Forth article too. The point about disruption being bad remains the same. You also added several useful references to the Forth article without first adding the citation tag, which is quite exemplary behavior. I would not object at all to you adding concrete citations rather than disruptive {{Fact}} tags here. Eighty-seven of them would still be a bit superfluous, but we have a long way to go before needing to worry about that. LotLE×talk 06:41, 29 June 2006 (UTC)
All I'm really looking for here, Ideogram, is an absolute and steadfast promise by you that you won't engage in this type of disruption again. You have been an extremely valuable and productive editor on a number of CS articles, and clearly you are both knowledgeable and able to write. I value that, and if you'd promise to avoid deliberate harm to articles, I'd easily be able to assume good faith again. LotLE×talk 06:45, 29 June 2006 (UTC)
YOU have no right to demand ANYTHING from me. Assuming good faith is not conditional, that's why it's ASSUMED. And I'm not going to have a ridiculous argument with someone bent on proving I'm engaged in WP:POINT. Ideogram 06:47, 29 June 2006 (UTC)
I'm a relative newcomer and have no involvement with this article (I just happened to see the issue on the village pump:policy page and was curious), so I'm not sure how involved I should get in this. I didn't read the whole discussion, but I think I got a decent idea of what is going on and wanted to share my opinion.
User A thinks that virtually every sentence requires a citation (and everyone else should assume that this is a genuine effort to improve the quality of the article). User B thinks that User A is trying to make a point (and User A should step back and assume that User B is looking out for the integrity of the article and wikipedia in general by helping to enforce established policies). It looks to me like everyone is getting defensive, which is just snowballing the whole issue.
How many citations are actually needed, based on policy and comparable articles? I'm certainly no expert on wikipedia policies with regarded to sources, but I would think that citing every word is excessive, and the citations would be as disruptive to the reader as the {fact} tags are. Of course, credit to the sources is due, and will improve the article by allowing the reader to check the sources for more information and to verify the content of the article. At least every general idea, as long as it is not common sense, should be attributed to a source. That doesn't mean everything needs to be cited, does it? For example, I noticed that in the course of this "edit war", there was a {fact} tag with information regarding programming languages ncessarily needing more structure than other human languages- this to me seems as though it would be intuitive (although I may be biased, having some programming educational background). Inclusion of {fact} tags even with intuitive or common sense information does seem like it's being used merely to make a point and go over the top with it, whether that is the goal or not. My suggestion for anyone who thinks (insert large number) {fact} tags are needed should voluntarily step back and try to see what the article really needs, or let someone else do it. Perhaps it would be better to add the bare minimum (assume that any broad statements are general knowledge, for example), wait for the improvements to be made, then re-evaluate it, and add more then if it is still necessary. Like I said, adding them all at once does come across the wrong way, even if it is well-intentioned (and Rome wasn't built in a day, right? Why bombard an article with notes about every little thing it needs all at once?)
Just my 2 cents, take it or leave it.
--Dan128 08:04, 29 June 2006 (UTC)
Some featured articles I have read with their citation counts: Global warming: 27. Absinthe: 27. Kylie Minogue: 36. OpenBSD: 40. AIDS: 108. Forth had 20 citations and this was not enough. 87 fact tags may have been excessive, but currently we have only 13 citations in Programming language. Ideogram 08:23, 29 June 2006 (UTC)

And just when it looked like it had all calmed down and I was pondering closing the mediation case....

To take the issues in turn:-

User:Ideogram, you skated perilously close to violating the 3RR with your reversions of the fact tags, you know the rule, discuss it on the talk page.
I reverted exactly twice, Lulu was incorrect in his count, he counted the initial edit as a reversion. I reverted twice because after I reverted, a different, and new, editor reverted my changes, and I directed him to the talk page. When Lulu reverted a second time, I stopped reverting. Ideogram 08:31, 29 June 2006 (UTC)
User:Ideogram said "But I'm not talking to you anyway" - I say, grow up. If you're not willing to discuss edits, don't make any. Comments like that help no-one and will simply lead to the article turning into an edit war.
I don't see why I should continue to talk to someone who won't stop accusing me of WP:POINT and is manifestly unable to assume good faith. Talking to someone who can't assume good faith about you is a waste of time. Ideogram 08:31, 29 June 2006 (UTC)
User:Ideogram - no-one "DEMANDED" anything from you. talk "looked for" something, but didn't demand - don't twist quotations to make your comments sound stronger.
I don't see that Lulu had the right to "look for" that something either. His "request" was still founded on the assumption that my actions were "disruptive" and "deliberate harm". Furthermore he has no right to impose conditions on any other contributing editor. Ideogram 08:31, 29 June 2006 (UTC)
Right, and now on to the actual problem at hand = {fact} tags. In my humble opinion, there is absolutely no need for as many as you inserted. Simple sentances which state a fact do not require a citation. There is no right answer to how many, but in my opinion, less is often more for citations - get the good ones and far fewer do a better job. If you're are that certain that many citations are needed, spend your time finding citations rather than edit warring over a request for them. I'm sure editors will have far less of a complaint if citations appear rather than just tags saying "I think there should be something here, but can't be bothered to find it". All of which has already been said very well by Dan128 above, but I repeated it for no apparent reason.
Now I have to argue with the moderator about how many fact tags are required for FA status? Read the links I provided. Ideogram 08:31, 29 June 2006 (UTC)

So to sum up, User:Ideogram, back-off and discuss your edits. You know full well there is tension around this article, don't excacerbate it by refusing to discuss things - either talk them through, or leave the article alone. Kcordina Talk 08:14, 29 June 2006 (UTC)

I will be happy to discuss anything with Lulu once he stops accusing me of WP:POINT and is able to assume good faith about me. I am not happy that you chose to direct all your comments at me and failed to note Lulu's offences against Wikipedia policy. Ideogram 08:31, 29 June 2006 (UTC)
There wre no comments about the behvaiour of LotLE because I couldn't see anything they had done wrong. They only mentioned WP:POINT once, and have attempted to discuss the matter, but have been met by you stating I'm not talking to you. What this matter needs is rational discussion. The simple solution to this, as suggested by LotLE above, is to insert the references you think are desperately needed. I miscounted the reverts, for which I apologise. No, you don't have to argue with me about how many citations are needed - I provided my opinion, that does not mean you have to argue, I was simply offering an outsiders view. Kcordina Talk 08:46, 29 June 2006 (UTC)
Count again. I see four mentions of WP:POINT on this topic, and two in the edit summaries. Quotes: "disruptive tag, bordering on vandalism", "some sort of ego thing on your part", "I am going to revert ... on sight", "disruptive ... shows real bad faith", "disrupting ... to show off", "destroyed the article ... making it unusable", "pisses me off ... vindictively destroy", "I'd hope ... (you would) not desire destruction... but I guess not", "rather than stomp your feet", "random disruption". That about covers it.
And that's not counting all the times Lulu has accused me of WP:POINT before. I was trying very hard to have a rational discussion with Lulu but the fourth WP:POINT accusation, after repeated denials by me, was really too much.
I am not capable of adding all the references needed. I already added five of the thirteen current citations. I thought it would be helpful to tag the places I thought citations could be used, since I have used this tactic successfully before. To be accused of WP:POINT and vandalism in response is way over the top. Ideogram 09:00, 29 June 2006 (UTC)

Proposed compromise

Since the minimum number of citations I have seen on a FA is 27, and we currently have 13, I propose to add exactly 14 fact tags to this article, and wait for them to be filled before adding more. Is that acceptable to everyone? Ideogram 09:19, 29 June 2006 (UTC)

Reference counting is as bad as edit counting. There is no minimum or maximum number of references required. Though people oppose articles for not having enough references, theoretically it is still possible to have an FA with just a couple of them or even none! I am yet to see this possibility but it is possible. For example, it might be possible for article on a not-so-well-known novel, in which the article deals mostly with the plot of the novel. It would be absurd to say that Mr. so-and-so in the novel had 3 children (as the statement is directly sourced from the book and may be un-necessary even as an {{inote}}). While other controversial topics like AIDS would need a lot more. It all depends on the scope of the article and the claims made in it. Every reference should be added on its own merit. — Ambuj Saxena (talk) 10:08, 29 June 2006 (UTC)
I am confused. During the FAC nom for Forth I was repeatedly advised I needed one citation per section, or one citation per paragraph, or one citation per fact. I added one citation per section, which resulted in me tagging some painfully "obvious" facts like the basic features of the interpreter and compiler, and was told, by you, that the level of citation was still not good enough. Most of the citations added could have been directly sourced from the introductory programming text in the references section, and yet I was told I did not have enough citations. What is left for me to do but to cite obvious facts? Ideogram 15:19, 29 June 2006 (UTC)
I disagree with User:Armedblowfish in the FAC. To me, everything that can be attempted to be refuted, or any claim, needs referencing; not every sentence or fact. Most of the important facts could do with {{inotes}}, while the less important and non-controversial ones can be left unreferenced unless they require attribution. I never told you that the level of citation is not good enough. I just told you to get citations for all sentences tagged with {{fact}}. My other concern was use of peacock terms and unencyclopedic words. I think the article was moving in the right direction and could have been featured if more people took part in the discussion. You may wish to contact User:Armedblowfish for clarification over his standards for FAC. Anyway, whatever we say is our own opinion. If you want expert opinion, ask for Taxman's help, and if needed very desparately, Raul's. — Ambuj Saxena (talk) 15:48, 29 June 2006 (UTC)
I'm sorry Ideogram, but I have to agree with the others here. The best strategy in the short term is to focus on just a few places where citations would be really helpful and/or necessary, such as questionable or central facts. Once these refs are in place, more tags can be added. Covering the article in a dense fog of tags just serves to disrupt the flow of reading. Deco 11:29, 29 June 2006 (UTC)
Fine. I can admit I'm wrong, as long as you don't accuse me of WP:POINT or bad faith. Ideogram 15:19, 29 June 2006 (UTC)
Don't worry, I'm confident that you're just trying to improve the reference quality of the article, and I would encourage others to not levy bad faith accusations against you. Deco 16:54, 29 June 2006 (UTC)

Citations are needed, but 'citation needed' tags don't help a whole lot, especially adding 87 of them in one go. Reverting them back in after different editors have removed them is disruption plain and simple, even though it seems clear you were trying to help. Admitting you were wrong is a good step, but heading it off at the pass is better. Discuss and gain consensus, don't revert — and yes be willing to be the first and the only person to do that, something that if everyone did, would make this a more enjoyable project to work on. Furthermore once the citation needed tags are put in and then reverted out, their full value is left in the edit history: every fact that has been marked as needing a citation can be seen if needed. There is no need to repeatedly clutter the article up with them. Now in general every fact in the article should be supported by a reliable source, but that doesn't mean every fact needs a footnote or similar inline citation. Prioritize the most important and potentially contentious facts and cite those, along with any specific quotes or data points. Then make sure you have high quality references that can support the rest of the material. - Taxman Talk 16:44, 29 June 2006 (UTC)

Citation needed?

I see that the sentence

ANSI/ISO SQL and Charity are examples of languages that are not Turing complete yet often called programming languages.

has been tagged "citation needed". What exactly needs citing here? That the languages in question are not Turing complete? That the languages are called programming languages? --Allan McInnes (talk) 16:10, 29 June 2006 (UTC)

Both. For Charity, I suppose a cite to the appropriate paper would suffice. For SQL, I'm not sure, but I guess we could let that go. Ideogram 16:29, 29 June 2006 (UTC)
Ok, I've added a ref for Charity (including relevant quotes). I'll leave references for SQL to someone else. --Allan McInnes (talk) 16:58, 29 June 2006 (UTC)
Thank you Allan. Ideogram 17:06, 29 June 2006 (UTC)

I think some versions of SQL are Turing complete, and some aren't. [1][2] I'm not quite sure how reliable that source is, but it is from the World Wide Web Consortium. Armedblowfish (talk|mail|contribs) 19:32, 29 June 2006 (UTC)

That's why the text reads as it does now. It used to contain some meandering circumlocutions about "unless vendor-specific extensions make it Turing-complete". The version of SQL we are referring to is, quite precisely, ANSI/ISO SQL (either SQL-92 or SQL:2003), and it is so named in the article. LotLE×talk 19:36, 29 June 2006 (UTC)

Thanks

Thank you all for adding citations. Ideogram 12:09, 30 June 2006 (UTC)

Purpose section

The following sentence is one of the reasons quoted why different programming languages are suited to different tasks:

Programs may need to extract the right amount of performance on platforms ranging from tiny microcontrollers to supercomputers.

This seems to me to be an oversimplification of what should be said here, which is that programs "must find a balance between performance, compactness and ease of writing" on such differing platforms. If performance were the only issue, everything would be written in assembly language. I propose that something more like the text I put in quotes there be used to replace "may need to extract [...] performance" in the sentence I quoted. I'm not happy with "ease of writing" though... there must be a better way of expressing that that doesn't sound so clumsy. Anyone? JulesH 13:36, 3 July 2006 (UTC)

What makes a language general-purpose?

The article currently reads:

All Turing complete languages can implement the same algorithms. These are often called general purpose programming languages.

I don't think this is correct. "General-purpose" refers to languages which cover a broad range of applications, and are not, um, special-purpose. So, for example, Snobol or awk, though they are Turing-complete, are special-purpose in the sense that they were designed for, and mostly used for, string manipulation. PHP is special-purpose in that it was designed for, and mostly used for, building dynamic Web pages. SQL is special-purpose not because it is not Turing-complete, but because it is designed for the manipulation of database relations. Of course all these languages (except SQL) can be used for general-purpose programming (and are by their devotees). Sometimes languages break out of their special-purpose niche, the most spectacular example probably being Simula 67, which was originally designed for simulation, and became the first object-oriented language. --Macrakis 14:09, 3 July 2006 (UTC)

I think what is meant by general purpose is that it can be used for any task. Turring complete languages can. Non Turring complete can't. Jaxad0127 18:11, 3 July 2006 (UTC)
Even that isn't necessarily true though: if your purpose requires you to interface with something else (other software or a piece of hardware) and your language doesn't implement an interface that will let you do that, you're stuck even if it is Turing complete. General purpose languages, to be truly general purpose, must be able to form arbitrary interfaces with both the hardware and other software on the system. Turing completeness says nothing about that, only what results you can calculate. JulesH 19:52, 5 July 2006 (UTC)
Again, personal opinions are not a basis for deciding Wikipedia content. Citations are. --Ideogram 19:54, 5 July 2006 (UTC)
Well, exactly, to support a somewhat idiosyncratic use of "general-purpose" should be attributed to a source. But in general use, the term has as much to do with available interfaces and libraries as it does with Turing per se. An embedded language that had a "loop" and a "tape", but no facilities for interacting with an OS, a screen, a keyboard, etc (e.g. it was fine as a controller with just one serial I/O interface) isn't "general purpose" under normal usage. LotLE×talk 01:04, 6 July 2006 (UTC)

Uh, I'd be careful with any claim of "all" in this context. The following paragraph is pure opinion on my part (so it doesn't go in the article), but I'll add it to the talk page anyway.  :) The difference between a general-purpose language and a domain specific programming language (it's opposite) isn't (in general) computational ability, but feature set. All modern GP languages are Turing-complete; if for no other reason than TC-ness is easy to accomplish. Some DSLs are; others are not; the DSLs which aren't are generally descriptive languages as opposed to imperative ones (and thus lack looping constructs and such); there are some descriptive DSLs which are Turing-complete by accident only.

Some DSLs are intentionally not TC (See principle of least power), under the (questionable) assumption that being computationally weaker makes them amenable to static analysis, and thus more secure.

Getting back to the article: I'm tempted to omit a definition of Turing-completeness; or if we provide one, we should steal it from Turing complete or some other source on computational complexity.

--EngineerScotty 20:04, 5 July 2006 (UTC)

Good Article

Congratulations, everyone. Good work! --Ideogram 19:54, 8 July 2006 (UTC)

Not-quite-PLs

There have been a number of changes today from the fairly longstanding description of "sometimes called (but not usually) PLs". The old version was:

Other computer languages, such as HTML, are sometimes informally referred to as programming languages.

Frankly, I don't think any of the new versions (including mine) are better than the older ones. But as minimum, this point, while important to mention passingly, becomes distinctly belabored if more than 20 words (maybe 25 at the outside) are spent on it. Most of the revisions (other than mine) wer 50+ words, giving very undue weight to the minor point. LotLE×talk 20:51, 9 July 2006 (UTC)

I don't think this is a minor point at all. I think it should be discussed later in the article, but it's a point of significant contention in the community that deserves expounding upon because of how it deals with the subtleties of defining programming languages. I wouldn't try to downplay this. Deco 20:53, 9 July 2006 (UTC)
Can you present a source—other than popular, non-programming business-speak—that describes a non-computational language as a programming language? I have never seen one. If there is a citable source here, we could work from what this source claims. LotLE×talk 20:55, 9 July 2006 (UTC)

Please, please, please let us avoid long and irrelevant digresssions on this point. It is just plain ugly to spend 60 badly-written words on a point that is only just barely merits mentioning in 20 words. As a minimal (and probably unnnecessary) expansion of the nice concise prior form, I tried:

Non-computational languages, such as markup languages like HTML or formal grammars like BNF, are usually not considered programming languages. A continuity with declarative computational languages blurs the distinction.

I actually think there is mild benefit in using BNF as a second example, since it's not "markup", but still something other than computational (and we discuss it briefly later in the article anyway). That's 28 words, which is slightly more than I'd like (I'd be happy w/o the second sentence), but at least it's not 60 words like Derek farn's last edit (and the words are spelled right). LotLE×talk 01:27, 10 July 2006 (UTC)

I agree that it is ugly in its current position, but I still think the best way to deal with it is to briefly mention that there are borderline cases and then give more detailed explanation later in the article, after more important things have been discussed. It won't be ugly in the middle of a detailed discussion of definitional issues, which are quite relevant to the topic but not exactly introductory. Deco 01:40, 10 July 2006 (UTC)
Possibly it would be better somewhere else, i.e. later in a separate section. But so far we haven't actually seen any evidence that anyone of relevant expertise has ever used the term "programming language" to describe markup like HTML. On the other hand, the listed citations in the "Definitions" section list some good sources that explicitly exclude it (not necessarily naming HTML, but indicating "computational"). I am skeptical that the usage has ever been anything other than a misunderstanding by poorly informed business press (or even worse informed head hunters... aagghh!). LotLE×talk 01:54, 10 July 2006 (UTC)
Moreover, there are already perfectly good articles at the end of the links to markup language, HTML, BNF, etc. We need not repeat everything where a simple mention and link more than suffices. LotLE×talk 01:56, 10 July 2006 (UTC)
I like the language you propose above, Lulu. It's quick and to the point. One source of confusion is sometimes the communities surrounding dynamic languages like Lisp (in all its forms), who tend to blur the distinction between code and data. (In homoiconic languages with an eval capability; there is often little to distinguish code and data, after all). Obviously many forms of "data" can be considered instructions for some sort of machine; one could argue that a .jpeg file is a highly domain-specific programming language, containing instructions to a graphics engine on how to render an image. Of course, such arguments aren't illuminating, and I'd like to stay away from such (I bring it up just to show where such lines of thinking can lead). --EngineerScotty 03:58, 10 July 2006 (UTC)

Should we mention that derivatives of markup languages (like DHTML for HTML and XSL for XML) can be computational and therefor programmable? Jaxad0127 05:57, 10 July 2006 (UTC)

  • WRT LotLE's objection that calling HTML a programming language is an ill-informed mistake, shouldn't we describe, rather than prescribe, usage? If so, shouldn't reasonably-common mistakes and inexact usages be noted, together with an explanation that the usage is informal? As a non-technical example, Frivolous lawsuit has a precise and a colloquial meaning. Both are noted. Robert A.West (Talk) 06:04, 10 July 2006 (UTC)
I think it was Allan McInnes who noted earlier in this same discussion that we should note, but not promote, a misusage.
It's sort of like the way that all "non-prescriptive" dictionaries are, of course, actually prescriptive. It's not that any usage is completely equivalent, just that we don't decide usage from first principles. More concretely, the usage that "matters" is that of relevant experts (in this case, people who write books on programming, etc); but if enough ill-informed HR departments list HTML as a PL, that misuse can be briefly mentioned as a common mistake (which is what we do). Your change looks fine to me, it saves a couple words, which is good. LotLE×talk 13:59, 10 July 2006 (UTC)
    • I rephrased slightly, and I hope accurately. Feel free to revert me if you think I am wrong. Robert A.West (Talk) 06:13, 10 July 2006 (UTC)

JTAG Interface

How the ARM processor can be interfaced with JTAG? Anybody having sufficient information, kindly let me know. --Satyabratasahoo 11:46, 10 July 2006 (UTC)satyabratasahoo

  • We've no idea here; this is a Wikipedia talk page for the article on Programming Languages. I recommend contacting your processor vendor (Intel or whoever), they should have the information you seek. --EngineerScotty 17:10, 10 July 2006 (UTC)

Recent intent/purpose edits

I'm having difficulty understanding what this edit is trying to say. Apparently this is talking about how the application domain of a programming language determins its features and characteristics, with a lot of examples. I think that:

  • The subject is worth discussing, but better addressed in the "Purpose" section.
  • We need more discussion of principles and less of a "laundry list" of examples. For example, discuss common application domains (database access, education, hardware control) first, and under each domain list one or two example languages. --Ideogram 16:39, 21 July 2006 (UTC)
It was hard to make sense of those edits. Or the one about bits within bytes changing meaning by the same user. The language was poorly written, which added to the confusion. But even imagining rephrasing, it looks sort of like a "brain dump" of tangentially related thoughts—not entirely off-topic, but not obviously on-topic either.
I'd suggest that if there is some point that is being sincerely proposed, we need to see it here on this talk page first, and figure out how best to include the concepts through dicussion. LotLE×talk 16:54, 21 July 2006 (UTC)

Removed incorrect weak-typing example

In this edit, I removed the following text:

The expression "123" + 45 is legal in Javascript; and produces the result 168; in evaluating the expression, a Javascript engine will note that the string "123" is convertable to a number, implicitly perform the conversion, and then add 123 and 45 to produce the final sum. However, note that the expression "123" + "45" is "12345" (and neither 168 nor "168"); the + operator when applied to strings in Javascript performs string concatenation.

That's not true. Demonstration: type javascript:void(alert("123"+45)) into your browser's address bar. You'll see a dialog box with the text "12345" instead of the text "168". If someone has an example that works, please put one in!

-- Phyzome is Tim McCormack 14:39, 5 September 2006 (UTC)

What about just changing it to Perl:
$ perl -e 'print "123" + 45'
168
Of course, it's really the operator that chooses the conversion:
perl -e 'print "123" . 45'
12345
$ perl -e 'print "123" + "45"'
168
LotLE×talk 15:25, 5 September 2006 (UTC)
I think this and the original example are mixing operator overloading (+ for add versus + for concatenate) -- and that has nothing to do with weak/strong typing. quota 16:53, 5 September 2006 (UTC)
Looks good to me. --Allan McInnes (talk) 16:22, 5 September 2006 (UTC)
No, this has nothing to do with operators (except conversion 'operators'). Let's try and find an example -- preferably not in any 'real' language unless it has a standard which we can reference -- which captures the concept being talked about here. quota 16:53, 5 September 2006 (UTC)
Weak typing is not a well-defined term. However, what people generally seem to mean when they say "weak typing" is the kind of operator overloading with implicit type conversions that LotLE's Perl example demonstrates. See Weak typing and Type system#Strong and weak typing for more. --Allan McInnes (talk) 18:20, 5 September 2006 (UTC)
I disagree -- it's a conversion effect, not an operation effect (unless you consider assignment and conversions to be operators, which many languages do not). For example, if one writes 'x=1.3' the meaning of that is very much dependent on the types of the left and right hand sides of the assignment. In a strongly typed language both sides will have a (strongly) defined type (in C and C99, for example, the right hand side is a binary floating-point value, unfortunately). In a weakly typed language, one (or both) sides will be more forgiving. This has nothing to do with operations such as '+' .. which is why I am just saying we need a better example. quota 18:29, 5 September 2006 (UTC)
And yet the Type system#Strong and weak typing section that I pointed to before uses basically the same example as a demonstration of weak typing. That usage seems to be a common one. Are you arguing for the more formal definition of weak-typing (i.e. a typed language that permits forbidden errors to exist in programs that pass the type-checker), used for example here?
Not that far, necessarily, but I think a clearer example would be one where the variables can have multiple types (like many BASIC-like languages) .. rather than the variables having a fixed type (which there may be say or unsafe conversions to on assignment/copy) quota
Also, I'm a little confused as to why you're pointing to C as a "strongly typed" language. It's pretty widely considered weakly typed. Are you perhaps referring to static typing rather than strong typing? --Allan McInnes (talk) 18:58, 5 September 2006 (UTC)
Sorry, I was a bit unclear -- I didn't meant to imply that the language was strongly types, just that aspect of it. (Although I would describe C as unsafely-typed rather than weak-typed. All variables have a unique type (though of course can be compromised by unions, etc.). quota 16:01, 6 September 2006 (UTC)

Version 0.5

I've passed the article for inclusion into WP:0.5, but to the folks who see this page: can we get those darned {{fact}}s fixed soon? Titoxd(?!?) 17:00, 11 September 2006 (UTC)

Contradiction

C++ is more strongly typed than C, and yet the article implies that C++ is less strongly typed than C, particularly in the last sentence of that section. For example:

char* buffer = malloc(64);

will compile in C, but not in C++. C++ requires a cast from void* to char*. In comparison to C, C++ is rather strict about typecasting and mixing between types.

char* buffer = (char*)malloc(64);

compiles in both languages. Allegro won't compile using g++ out of the box for this reason. The article is borked.--DavidHOzAu 09:01, 27 September 2006 (UTC)

I don't see the contradiction you mention in the article. How is it implied that C++ is less strongly typed than C? The final paragraph of that section reads
Strong and static are generally considered orthogonal concepts, but usage in the literature differs. Some use the term strongly typed to mean strongly, statically typed, or, even more confusingly, to mean simply statically typed. Thus C has been called both strongly typed and weakly, statically typed.
C can only be called strongly typed if strongly typed and statically typed are used as synonyms. And then C++ has also to be called strongly typed. — Tobias Bergemann 11:10, 27 September 2006 (UTC)
I concur with Tobias here. --Allan McInnes (talk) 17:13, 27 September 2006 (UTC)
I also agree. I've already removed the contradiction tag from that section. Jaxad0127 18:58, 27 September 2006 (UTC)

Syntax example flub or simplification?

Under Elements subheading Syntax a lispy example is given:

symbol  ::= ['A'-'Za'-'z'].*

The descriptive text following is

a symbol is a letter followed by zero or more of any characters (excluding whitespace)

I don't know of any RE syntax where a period pattern excludes whitespace. Is this an oversight? Or maybe follows a language specification-specific regular expression convention? — EncMstr 21:25, 5 October 2006 (UTC)

Fourth generation languages

I like the merge of the 'generational' view into History, except where is the reference to the 4GL. Some of these started in the 1960s, made a big splash, and are still in use. Now, along that line, programming by users has very much been a part of the History which ties in both with the 4GL and the 5GL. Though, with both ICAD and AutoCAD, we've seen end-users tackling their problems with Lisp. Ought not there be some reference to the 4GL motivation and phenomenon? jmswtlk 14:43, 14 November 2006 (UTC)

Oops. Sorry, somehow forgot that in the merge. Please jump on in and add something relevant on 4GLs to the history section, if you have some time. --Allan McInnes (talk) 05:49, 15 November 2006 (UTC)

Heuristics or not

At the risk of getting my head cut off, I need to ask a question about why we cannot have heuristics (motivations for programming languages are many, including problem solving, ...) mentioned on this page. Perhaps, it ought not be in first paragraph according one school of thought. But, there are others that might see the need: Turing himself looked into the matter ([3]); also, consider Interactive computation.

Programming languages are used to facilitate communication about the task of organizing and manipulating information, to express algorithms precisely, or to search for, and hopefully find, heuristic solutions. Some authors restrict the term "programming language" to those languages that can express all possible algorithms;[1] sometimes the term "computer language" is used for more limited artificial languages.

It has been my experience that the 'heuristic' space is much larger than its 'algorithmic' counterpart (though, they are both very large). Perhaps, that is why I lean toward the quasi-empirical view.jmswtlk 15:06, 16 November 2006 (UTC)

It just looks very out of place in trying to give a basic definition of PL. It might well be a topic that can be addressed neutrally lower in the article, but it's not the definition of a PL that it can be used in certain ways, or for certain purposes. Likewise, PLs are often used to express mathematical calculations, or often used to organize data records, but neither fact is the core meaning. LotLE×talk 15:27, 16 November 2006 (UTC)

"organizing and manipulating information" covers just about everything that might be said in a programming language. I would rather have a tighter definition but realise it might be very hard to come up with one. When you say heuristics do you mean human generates one or machine generated ones? Either way they are a special case. Derek farn 23:35, 16 November 2006 (UTC)

It may be that a broad enough definition of algorithm would subsume heuristics (one could easily flip this view, though). Too, a programming language (as you suggested) could very well be used by the computer to drive itself and other computers (in this sense, the language would allow the human to enter into and influence the state of affairs). jmswtlk 02:35, 17 November 2006 (UTC)
What about the frame languages such as KL-ONE. They can express heuristics. --Ancheta Wis 03:24, 17 November 2006 (UTC)
Ah, yes, but that would be a 5GL. The KL-ONE page is fairly sketchy (hopefully, not for long). jmswtlk 21:01, 17 November 2006 (UTC)

It would be helpful to have more users participating in this discussion. Dpbsmith (talk) 03:26, 17 December 2006 (UTC)


Redirected

I was redirected here from Programming Methodology, but I think a redirection to Methodology (software engineering) would be more appropriate. --Logomachist 00:45, 5 January 2007 (UTC)


Removed paragraph

I've removed this paragraph, as it seems to based on a confusion of ideas:

A programming language can be classified by its position in the Chomsky hierarchy. For example, the Thue programming language can recognize or define Type-0 languages in the Chomsky hierarchy. Most programming languages are Type-2 languages and obey context-free grammars.[2]

Specifically, it confuses the position of a language in the hierarchy with the class of languages it can recognize or define. Any Turing-complete language, by definition, can "recognize or define Type-0 languages in the Chomsky hierarchy", but most such languages are in fact Type 2. Contrariwise, the usual regular expression syntaxes are also Type 2, but can only recognize Type 3 languages. Anyway, I've never seen programming languages being classified this way. Ben Standeven 05:51, 17 April 2007 (UTC)

Market Share

I'm trying to get some grasp on market share for the different programming languages. I assumed it C, C++, and Java were the top 3, followed by C sharp, and then something that's less C based. Here was the best source I could find, it's tracking book sales:

http://radar.oreilly.com/archives/2006/08/programming_language_trends_1.html Mathiastck 02:09, 14 June 2007 (UTC)

One measure of market share is number of job applications that specify the language. See 3/4 down the page of http://www.computerweekly.com/Articles/2006/08/01/217247/skills-on-the-rise-as-market-shifts.htm . Computer Weekly have been doing this sort of thing for over 15 years. Perhaps somebody should get permission to use their data in a language popularity article. Derek farn 09:34, 14 June 2007 (UTC)
This seems to indicate apache software greatly outnumber microsoft software on servers though.

http://news.netcraft.com/archives/web_server_survey.html

and IBM outnumbers in revenue on machines

http://news.zdnet.com/2100-9584_22-6108453.html

and these seems to indicate that HP ships the most servers:

http://h71028.www7.hp.com/ERC/cache/107846-0-0-0-121.html?ERL=true

Mathiastck 02:15, 14 June 2007 (UTC)

Market share is going to depend to a large extent on what market you are interested in. For example, in the embedded space C is extremely dominant, C++ sees some use, and most everything else is a minority language. In contrast, web applications are highly unlikely to use C or C++. I would be very surprised if you could find statistics that cover "all" markets for software. --Allan McInnes (talk) 06:08, 14 June 2007 (UTC)

Artificial language

Hi, I'm a little uncomfortable with the opening line describing a programming language as an artificial language. I appreciate what is meant here but in philosophy of language natural means general purpose rather than pertaining to nature. All language, surely, is natural - or if not, all equally artificial. I'm not sure what would be the best suitable replacement, constructed or contrived perhaps? Any ideas anyone? --Kylemew 23:29, 31 July 2007 (UTC)

In linguistics a natural language is the term used to describe human spoken/written/signed languages by humans for general purpose communication. In theory people could use programming languages for this purpose, but it would not be an efficient method of communication. While the term artificial language has its disadvantages it does get the sense across to readers. We could probably come up with some more long winded set of terms that are technically more correct, but it would probably loss the unversed reader. Of course all languages are also constructed and contrived (ok, perhaps by a large group of people over a long time). Derek farn 00:35, 1 August 2007 (UTC)
There exists a wikilink to artificial language which perfectly well explains why that term is precisely the meaning we intend to convey. Natural language does not mean either "general purpose" nor "pertaining to nature" in either philosophy of language or in linguistics. LotLE×talk 01:42, 1 August 2007 (UTC)

That first paragraph ...

... is still not quite right. Structure and meaning of what? Program? Process? quota 10:44, 19 October 2007 (UTC)

Lacks sections on popularity & productivity of modern languages

I would like to know what languages are most dominant and what people have to say about why the spread is the way it is. What do people think about including a section about popularity, and also one about productivity? Assembly is clearly an inferior language for all but the lowest level of work these days; C is often criticized; functional languages are gaining popularity. But the article does not mention these important aspects of programming languages. I think recent trends should be included--this article feels datad otherwise. -Reddaly 01:40, 20 October 2007 (UTC)

Without real metrics these would just be topics of opinion. Each individual language article has details on intended use. I don't think opinions on productivity and popularity belong here. It's more appropriate on another wiki like DocForge. --Matt Schwartz (talk) 20:03, 14 December 2007 (UTC)
I concur with Matt. Wikipedia is not the place to carry out language wars or push opinions. Furthermore, the answer to "what languages are most dominant" depends heavily on the market segment you are looking at: C maybe "often criticized", but it remains (in my opinion and experience) by far the most dominant language for embedded systems; on the other hand, C is (again, in my opinion and experience) rarely if ever used for web application development. As for "productivity", numbers -- rather than anecdotes and opinion -- on that are pretty hard to come by. Possibly because programmer productivity within a single language itself varies by a factor of (IIRC) around 20 or so. --Allan McInnes (talk) 00:40, 23 December 2007 (UTC)

Practice Section Dated and Incomplete

"A language's designers and users must construct a number of artifacts that govern and enable the practice of programming. The most important of these artifacts are the language specification and implementation." That is a generalization and nowadays a misleading representation of how programming languages are invented in practice. Ruby still lacks a thorough specification and has become a very popular language. Paul Graham's thoughts: "In 1985, a programming language was just a spec. Now, thanks to Perl, it means not just (and maybe not even) a spec, but also a good free implementation, huge libraries, and constant updates." -Reddaly 01:42, 20 October 2007 (UTC)

Expand on distinction between artificial and formal languages

Peter Linz, in "An Introduction to Formal Languages and Automata" page 2, implies that programming languages are formal languages. He says, "A formal language is an abstraction of the general characteristics of programming languages." However, Derek farn says that many programming languages are not formal languages. Therefore, programming languages are artificial languages. This seems reasonable; however, I feel the distinction should be expanded upon in the article. The article Artificial language expands to Constructed language and Manually Coded Language, neither of which describes programming languages. Timhowardriley 23:50, 2 November 2007 (UTC)

Inserting completely meaningless {fact} tags on undisputed (undisputABLE, just about) statements is a gross violation of WP:POINT, and comes close to vandalism. <sarcasm>Along a similar vandalistic line, you might as well insert a {fact} tag on each and every uncited sentence... or clause, or word, for that matter.</sarcasm>. Don't do this nonsense!
If you think you have an actual point about formal/artificial, make the case on this talk page, and reach consensus before changing it. It's a weak point, since almost certainly incorrect: many PL's are NOT formal languages (some are, yes). But at least discuss rather than vandalize. LotLE×talk 00:48, 3 November 2007 (UTC)
Actually, I wouldn't mind a sentence on the distinction between formal and artificial. No more than a sentence, and most certainly not in the lead. But I have no objection of adding that slightly later. LotLE×talk 00:50, 3 November 2007 (UTC)
I politely, but emphatically, reject you accusation of vandalism. WP:POINT makes no mention of citations, neither does Wikipedia:Vandalism. Instead of vandalizing the article, my intention is to improve the article by enforcing one of Wikipedia's core content policies. WP:CITE says, "If a particular claim in an article lacks citation and is doubtful, consider placing [citation needed] after the sentence or removing it. If you have time to try and find a reference, please do so ..." As you can tell, I did try to find a reference. I hope this discussion yields some improvement. If it doesn't, [citation needed] can most definitely be restored. Timhowardriley 01:24, 3 November 2007 (UTC)
I agree with User:Lulu of the Lotus-Eaters when he says "Inserting completely meaningless {fact} tags on undisputed (undisputABLE, just about) statements is a gross violation of WP:POINT, and comes close to vandalism." Timhowardriley I have noticed that you have the habit of using these tags when you disgree with wording that others are unwilling to change to meet your point of view. Derek farn 02:36, 3 November 2007 (UTC)
The issue now and previously never has been WP:NPOV; instead, the issue is and always has been "[The article] is factually accurate and verifiable." WP:CITE says, "If a particular claim in an article lacks citation and is doubtful, consider placing [citation needed] after the sentence or removing it." I first considered it, but instead acted boldly with this edit. Derek reverted my edit with a claim that many programming languages are not formal languages. Whereas it seems reasonable within the context of Moore's Law, it seems doubtful based upon Dr. Linz's unqualified implication that the set of programming languages is a subset of formal languages. By the way, Derek you have just added the NPOV accusation to the POINT and vandalism accusations because of my action to enforce one of Wikipedia's core content policies. Unfounded personal attacks are an indication that you believe I should be afraid. Timhowardriley 20:29, 3 November 2007 (UTC)

How about something like this?

A programming language is a language which is designed to control the behavior of a machine, particularly a computer. Some but not all such languages are formally defined, while others are specified in a less precise fashion, such as a prose description or by observing the behavior of a particular implementation.

No questionable links to artificial language, and accurately reflects the current state of affairs, where most languages are "specified" in informal means, such as a standard document, a "reference manual", a reference implementation, etc. (No arguments over how "formal" reference implementations are). --EngineerScotty 03:44, 3 November 2007 (UTC)

This proposed sentence is misleading, IMO. The whole mention of "formal language" has far more to do with a syntax than it does with a semantics. But the former isn't really that much of what is involved in specifying a language. Enough extra words could eventually untangle what the sentence is trying to actually say, but they are unnecessary since what we already have is both concise and precise. "Artificial language" is quite helpful, since all readers have a prior familiarity with natural language (even if not with that term to name them): the contrast is illustrative immediately. LotLE×talk 07:51, 3 November 2007 (UTC)

Taking care on "formal"

Artificial language would be appropriate if of the thousands of languages out there, a commercially significant few of them are not formal languages. I'm qualifying few with "commercially significant" because laboratory experiments would need to mature before appearing in an encyclopedia. What are the programming languages that are not formal languages? What definition of formal language are you using? What characteristic do the non-formal languages have that exclude them from the set of formal languages? Timhowardriley 20:29, 3 November 2007 (UTC)

I think, for example, Perl and C add up to "commercially significant. As I'm trying to get you to see, it's not only syntax. Of course almost every language has a BNF grammar, but almost all of them have formally un(der)specified behaviors as well. Not that "commercially significant PLs" is the topic of the article, in any case. Other than maybe Ada and Haskell, almost no PLs are actually "formal languages" (though most are kinda-sorta close). LotLE×talk 22:02, 3 November 2007 (UTC)
Of course Perl and C are commercially significant. I'm a little shocked that they don't fit your definition of formal language. Could you expand on formally under-specified behaviors? Why is having BNF grammar not a sufficient criterion for inclusion in the formal language category? If you can build a grammar for a programming language, and if every formal language has a grammar, then why is a programming language not a formal language? The purpose of my using the term "commercially significant" simply was to exclude laboratory experiments. I originally thought these non-formal-language programming languages were going to be languages that had a natural language parser so advanced that they didn't need a BNF grammar. I had no idea that you were excluding common programming languages from the formal language category. Why is Ada a formal language but C not? Finally, I think "it's not the syntax; it's the formally under-specified behaviors" should be explained in the article. Timhowardriley 22:35, 4 November 2007 (UTC)
How lucky for you that everything you are asking about is already in the article, and has been for a long time. Did you read the article?!
The section 'specification, for example, mentions that: While syntax is commonly specified using a formal grammar, semantic definitions may be written in natural language (e.g., the C language), or a formal semantics (e.g., the Standard ML [17]and Scheme[18] specifications). Some other material in that section is quite germane also.
There is a fairly nice example of a syntactic but un(der)specified program for C in the article also: The following C language fragment is syntactically correct, but performs an operation that is not semantically defined (because p is a null pointer, the operations p->real and p->im have no meaning)
I think the real problem here is that editors get stuck on a pet notion, and want to rewrite a very carefully negotiated lead to (mis)emphasize it. These same editors don't bother reading the body of the article to find out that the very issues are already well addressed there. LotLE×talk 23:09, 4 November 2007 (UTC)
Yikes! I just noticed the structure of Timhowardriley's argument above. Boiled down: "PLs have grammars; FLs have grammars; therefore, PLs are FLs". The formal name for this basic error of logic is Fallacy of the undistributed middle. My students would get slapped down hard for such an obvious mistake. LotLE×talk 23:18, 4 November 2007 (UTC)
I'm not reading the article as an editor; I'm reading it as a Wikipedia reader. Moreover, I'm reading it as a non-expert reader, expecting the article to re-enforce the introductory exposure to programming languages I received in school, then add something new. If you believe that Wikipedia articles should be clearly expressed for both experts and non-experts in appropriate detail, then you should reconsider the article's overall structure. Regarding my "Fallacy of the undistributed middle", I wasn't making a statement like you reworded my quote to be; instead, I was asking a question. And your harsh ("slapped down") and demeaning ("obvious mistake") response to my question says something about your needing tact, towards both Wikipedia talk participants and your students. An appropriate answer to my question would have been something like, "Programing languages that support pointers are not formal languages because they can lead to runtime errors of null pointers." Timhowardriley 17:05, 5 November 2007 (UTC)
I apologize for getting too snarky. I was very annoyed at your initial WP:POINT violation in using a gratuitous {fact} tag as if it was relevant to a wording dispute. I've seen that abuse of process far too many times to maintain much sympathy with it. However, I cannot see why one passing factual clarification about the distinction between artificial and formal means we should reorganize the whole article. It seems like a complete non-sequitor to me. LotLE×talk 20:47, 5 November 2007 (UTC)
A quick question for Lulu: In my understanding, the reason that C is not a "formal language" is simply because it's semantics are defined by a prose document--specifically, an ISO standard. While standards documents are generally written to be as unambiguous as possible, they still are natural languages and therefore informal. The fact that certain programs are syntactically valid but semantically undefined shouldn't, AFAIK, enter into the equation. Are you suggesting that formal languages cannot contain undefined behavior? --EngineerScotty 17:16, 5 November 2007 (UTC)
No, not exactly because of the prose documentation of semantics. The more important issue is the undefined behaviors that most PLs have. With undefined syntactic-valid constructs, a language does not always have "processable formulas". Even if we narrow the sense to syntax alone, many PLs lack a precise syntax definition... except in the roundabout sense that "Perl is the language recognized by the current Perl runtime" (similarly for, e.g. Python, Ruby, etc. which have multiple implementations that differ at their margins).
I really don't get why there is an objection to "artificial language", which means exactly and only what is being said in the lead... and the desire to substitute a term which is "mostly similar" that can only be shoehorned in with lots of caveats and exceptions. LotLE×talk 20:47, 5 November 2007 (UTC)
Strictly speaking, a programming language having a grammar is a "formal language" in the technical sense: it has a set of symbols, and a set of formation rules (see here or Wikipedia's own Formal language article). The technical definition of "formal language" says nothing about semantics, but only about syntax. However, in my opinion, calling a PL a "formal language" within the lead is misleading in the extreme, since the technical meaning of "formal language" is something which most readers will not understand. Furthermore, as LotLE rightly points out, there exist popular PLs which have a syntax that is implementation-defined, thereby rely on implicit formation rules expressed using the imprecisely-defined semantics of the implementation language, and are thus arguably not technically "formal". My preference is to stick with "artificial language" in the lead, since it says what needs to be said in a succinct and accessible manner. --Allan McInnes (talk) 01:05, 23 December 2007 (UTC)

Abstraction

Allow me to bring the discussion back to my initial objection. (1) Dr. Linz published the following nutshell, "A formal language is an abstraction of the general characteristics of programming languages." This nutshell is obviously carefully worded to account for nuances. However, it seems to basically say that programming languages inherent the properties of formal languages.

You are right, Linz chooses words carefully. Likewise, we might notice that "Stick figures on signs are an abstraction of the general characteristics of the humans represented." The walking figures at cross-lights show a simplified form of bipedal walking; the standing ones on restrooms show a simplified form of gender differences; etc. It is just as obviously wrong to conclude that "humans are stick figures" by identical reasoning. LotLE×talk 03:50, 6 November 2007 (UTC)

Therefore, if you understand the properties of formal languages, then you also understand the properties of programming languages.

No more so than with stick figures! You can understand the properties of stick figures, and fail to understand many properties of humans. You indeed can get the bipedal form; the general plan of two arms and two legs; the fact our heads are above our feet; where our major joints are; etc. But there is still a whole lot left out by the abstraction.

(2) The wikilink to Artificial language does not address the nuances that seem to prevent the inheritance of all of the properties of formal languages to programming languages. Nor does the artificial language article address the nuances that seem to occur in programming languages that are absent from formal languages. More specifically, the artificial language article covers Constructed language — a language devised by an individual or group, instead of having evolved naturally — and Manually Coded Language — sign language. This nuance discrepancy prevented me from reading any further in the article, even though I am a highly-familiar, non-expert, adult-student of programming languages. I recommend that if the vast majority of properties of formal languages are also the properties of programming languages, then the article should start with formal languages and then branch off. Alternatively, the artificial language article should specifically address the balance of the missing characteristics. Dr. Mertz, please comment on my objections and consider them in any future edits of the article. Timhowardriley 22:58, 5 November 2007 (UTC)

I agree that the article on "artificial language" could be expanded. But the most important point, the contrast with "natural language" has always been clearly indicated. I also agree, of course, that "formal languages" are a very useful abstraction of PLs and other mathematical systems and reasoning. But this article isn't that one, this one us about PLs, y'know the real existing ones... not only about a useful abstraction about them. LotLE×talk 03:50, 6 November 2007 (UTC)
  1. ^ In mathematical terms, this means the programming language is Turing-complete MacLennan, Bruce J. (1987). Principles of Programming Languages. Oxford University Press. p. 1. ISBN 0-19-511306-3.
  2. ^ Michael Sipser (1997). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X. Section 2.2: Pushdown Automata, pp.101–114.