Template talk:Programming languages

This is an old revision of this page, as edited by StefenTower (talk | contribs) at 00:50, 14 February 2005 (Define "major"). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.

History of this box

Initially, this box was placed on C programming language and some other articles by User: Lee1026. It seems like a useful addition, so I converted it to a template and proceeded to add it to the bottom of all articles it lists. It is certainly somewhat biased in what languages it includes — but feel free to edit, as long as it remains relatively small. Deco 21:01, 15 Nov 2004 (UTC)

Language inclusion criteria

[The article] is certainly somewhat biased in what languages it includes — but feel free to edit, as long as it remains relatively small. --Deco, above

Thanks for the invitation -- but beware; someone might take it up :) On a more serious note, I personally would bring the inclusion of e.g. Haskell into question. What criteria should we use? In any case, I think we'd better restrict the number of languages in this particular "in crowd" to the ones with a very significant number of users all around the world. Now, how to determine Nusers ... --Wernher 21:43, 15 Nov 2004 (UTC)
Oops, forgot: also include historically very significant languages, I guess. --Wernher 21:48, 15 Nov 2004 (UTC)
My criterion was just that I'd heard of it (I'm only unsure about SAS). Originally, Lee1026 included the following text above the box: "The following are major programming languages used by at least several thousand programmers worldwide". This seems rather difficult to verify. I'd say any language given a significant treatment in a textbook on programming languages is probably good (like Pascal, ML, Lisp, FORTRAN, Prolog, C, C++ have.) All "mainstream" languages qualify, and we more or less know what those are (mainly, Java, C, C++, VB, maybe Delphi). We could even factor in Wikipedia page visit counts. I think it will ultimately come down to a case-by-case treatment. The most important thing, though, is that it remains exclusive enough so that it is small enough to be useful and avoid clutter. Deco 21:57, 15 Nov 2004 (UTC)
Your criteria above corresponds very much with my own, so there's two wikipedians -- couple of thousand other opinionated prog lang interested geeks soon to pitch in with their say :) I have done some preliminary(?) trimming already, removing some very ___domain-specific languages and some with that characteristic as well as being tied to specific companies. --Wernher 22:20, 15 Nov 2004 (UTC)
Okay, looks good to me, just make sure that the box is kept only on pages of those languages in the box. I don't agree, though, with the exclusion of Eiffell, Haskell, or especially OCaml; they're all general-purpose languages used quite widely (admittedly, OCaml is a dialect of ML, but this isn't quite as obvious as the fact that Common Lisp is a dialect of Lisp). All four give 300K+ Google hits together with the word "language", and in my own experience they're popular in a number of significant circles in schools and industry. IDL is also used widely in industry, even if it isn't general-purpose. I added these four back. Deco 22:35, 15 Nov 2004 (UTC)
I removed OCaml exactly for the reason you mentioned -- readers will find that one immediately via ML, so I think it should be left out of the box, like Common Lisp. Talking of removal, I'll now remove Modula, which only gets half as many hits as the ones you mention and because its predecessor Pascal is much more important historically as well as in terms of user community incl education. Generally, most of the other 'boxed' languages in use today give millions of hits (even SAS, a quite 'lowly' one, gives ~1.5M, while LOGO gives ~11M, and ML as well as C# gives ~3M).
I must admit I still think Eiffel, Haskell and IDL should be removed based on their 'insignificance' historically and/or 'user base wise' compared to most of the other languages. And IDL describes a type/family of languages, doesn't it? BTW, I did delete the template from the articles of the languages I removed (or did I forget some?) ;-) --Wernher 23:18, 15 Nov 2004 (UTC)
Presiceification/encyclopedical-editorial modification: if IDLs are actually to be defined as programming languages (as opposed to the more general class of computer languages), which I think is a valid question in itself, I agree that it/they should be included here (CORBA et al. are VIPLs, most certainly). As for historical significance, I actually think one might consider Simula (although I could be said to be slightly biased re that -- exactly why is left as an exercise for the reader :-] ), which arguably represented the birth of object-oriented programming (and which inspired Bjarne to create C++). --Wernher 23:35, 15 Nov 2004 (UTC)
I only recommended keeping Ocaml because more people seem to know what Ocaml is than know what ML is, even though Ocaml is ML, due to its popularity, but I may be mistaken in this impression, so I removed it. I recommend keeping IDL because it has a strong industry presence, although it's certainly not a "programming language" per se. As for Haskell and Eiffel, even if they're not used often in industry, they're very popular in academia and they've had a strong influence on software engineering and programming language design (Eiffel pretty much invented design by contract, and a discussion of functional languages that doesn't mention Haskell would surely be incomplete). In my experience in PL research their names seem to come up all the time. As I said, I'm afraid it really will come down to having to argue each language on a case-by-case basis. Deco 23:37, 15 Nov 2004 (UTC)
Oh, and as for Simula, I don't object, although all the other "historical" languages in the list also have or had heavy use in practice. I'm sure Stroustrup had more than Simula on his mind though — he couldn't have missed Smalltalk. Deco 23:45, 15 Nov 2004 (UTC)
...which is no problem, since it's already included :-) Regarding the other stuff, I think we might have reached a kind of consensus now -- agree? Always nice with some constructive (and talking for myself at least, educational/enlightening) 'shop talk'! For more volatile personalities, I guess this topic is food for rv wars :) --Wernher 23:54, 15 Nov 2004 (UTC)
Agreed. :-) Here's to hoping the extremists give us a rest first. Deco 23:59, 15 Nov 2004 (UTC)
I think the most constructive thing to do would be to destroy this template. "Major" is perpetually impossible to define, esp. with programmers usually fighting endlessly for their favorite languages. I just don't see an encyclopedic purpose for the template, esp. when lists of programming languages (including specific types of languages) already exist. Therefore, the reasonable good thing to do would be to end the template's existence. --Stevietheman 21:19, 26 Dec 2004 (UTC)
I'd agree if it weren't for the fact that that simply hasn't happened. No one's complained about the list even a bit. I never came to arms with Wernher, and no one else has made any major changes. The originator of the box idea seems to have vanished. I'm not sure yet whether people are content or apathetic with the box.
Of course the reason the box exists is its practical utility. Just as EXPTIME has a box of major complexity classes which is quite subjective, it's handy to have a quick way to visit a number of important topics in a specific area. The items in this box are quite subjective, but the function of the box is not to make claims but to aid navigation. Deco 05:11, 29 Dec 2004 (UTC)
I understand your point of view, but what I'm saying is that the list is super-subjective and conflict-baiting whether or not there are currently complaints about it. In other words, it's not of encyclopedic relevance.
Further, I don't see the navigational significance of it, in that if I'm looking up an article on PHP, I'm not also looking up an article on Perl or another language in the "major" list in the vast majority of moments. But note, that in many of the language articles, there are references to other languages in comparison, so visitors can use those links to jump. We're also smartly categorizing languages now, so it's easy to jump to a category and see similar languages in a specific context. On top of all this, it just takes up space--I've never used it to jump to another language--ever. This criticism is basically that the list is redundant and probably not going to be useful in actual encyclopedia use. --Stevietheman 16:28, 29 Dec 2004 (UTC)
I understand if you don't find it useful personally, but neither of us can definitively claim whether or not people are using it. I can say that I've used the similar Template: ComplexityClasses a lot. I've attempted to keep it small while not omitting anything too important, but if you feel it's too large it can definitely be stripped down more. I realise that categories are available (the box links one, in fact) but n clicks and page loads is still a lot better than 2n, and the categories are also a bit overwhelming in size. The links in comparison are useful when reading through the text, but less useful for "touring" the articles, since they're buried and incomplete. If you feel so inclined you can submit the template to Wikipedia: Templates for deletion, but I should warn you that they've kept some weird stuff. Deco 03:40, 30 Dec 2004 (UTC)

Keep box at two text lines only?

The reason I reverted a recent edit which put a separate line of links below the list of languages, was that I believe it's a virtue to keep such listboxes at an absolute minimum number of lines. Besides, the suggested extra link to the chrono list of languages may be viewed as superfluous, since the same link is one of the very first one meets at the alphalist page (even though this leads to one further click, I admit). A reasonable alternative might be to add the alphalist link in the header, I guess. --Wernher 22:53, 21 Jan 2005 (UTC)

The alphalist is the 'more' link in the header. I changed the template to match the style that used to be in the proposed re-write of Programming language, until I replaced it with this template. Noisy | Talk 00:34, Jan 22, 2005 (UTC)
Argh. Argh. Argh. I meant chronolist above, of course (i.e. please execute alpha^H^H^H^H^Hchronolist). The argument holds anyway, I guess. Also, where should we place the limit on included links; we've got the alpha and chronolist, and the generational list, and the esoteric languages list... Oh well. --Wernher 14:03, 22 Jan 2005 (UTC)
Don't forget that the number of lines in the box depends entirely on your browser window's width. When I view at 1280 x 1024 maximized I see well under 2 lines, while 1024 x 768 has about 2 (maybe just over), and 640 x 480 has more like 4 lines. Really tiny windows, like a non-maximized window on 640 x 480, can have like 6-8. Deco 01:28, 22 Jan 2005 (UTC)
Yup, true. I tend to kind of assume that the majority of readers view Wikipedia with 1024 x 768 resolution or higher (that assumption might be taken as a little arrogant, perhaps). But still, the argument generally holds, I think, since the smaller the box--within sensible limits--the less space it generates). --Wernher 14:03, 22 Jan 2005 (UTC)

Define "major"

Precision is key to an encyclopedia, whether anyone "complains" about an article/template or not. To that end, we need to have a precise definition of "major" somewhere as a way of sourcing this template. I don't want to jump to tfd as I would normally like. I want to give those interested in this template a chance to refine it first. Note that previously I attempted to create a somewhat scientific basis for the list when it was in a different incarnation. Now, I'm not so arrogant as to think my approach was best—I merely want one reasonable basis for the list to be found and agreed upon. "Major" as it currently stands (here and in the category of the same name) is really too nebulous and doesn't provide encyclopedic relevance. — Stevie is the man! Talk | Contrib 19:15, 31 Jan 2005 (UTC)

I thought the discussion thread "Language inclusion criteria" addressed this question in a practical way. To date, our definition of "major" has been a mix of "significant by number of users" and/or "historical importance". What other way to define it? I think a measure of the latter is possible to obtain by reading some reference literature on programming languages (e.g. the "major" textbooks used in university level courses on the subject). --Wernher 09:43, 1 Feb 2005 (UTC)
Too imprecise and very open to interpretation. Anybody else want to take a stab? — Stevie is the man! Talk | Contrib 10:48, 1 Feb 2005 (UTC)
Hmm, I don't want to let go just yet. :-) In what way(s) do you think the included languages aren't major in relation to the enormous lot of other lesser known and less used and not at all historically significant languages out there? Is there any doubt that e.g. ALGOL, BASIC, C, COBOL and Fortran, say, are historically (and also, I might add, Nusers-wise) significant? --Wernher 11:04, 1 Feb 2005 (UTC)
I'm going to go ahead and open this discussion to a wider audience. Unless "major" is based on some precise measurement, then there's no use for the template. It's just plain nebulous, and thus not encyclopedic. We would just go in circles with the discussion as it stands here. — Stevie is the man! Talk | Contrib 22:01, 1 Feb 2005 (UTC)
Yes, please do involve more people to the discussion. As for the preciseness of "major" prog.langs, it should absolutely be stressed that not everything encyclopedic is defined based on exact "mathematical" terms -- not in traditional paper encyclopedias, and neither in WKP. So, as you have known for a time now, I think removing the template is doing WKP (users) a disfavour. Sigh. --Wernher 22:32, 1 Feb 2005 (UTC)
Okay, here are some criteria:
  • The language is a practical language that has been used by many organizations or at least one well-known organization to construct significant real-world applications (whether to sell, use internally, or use for experimentation).
  • The language is notable (just what notable means has been a subject of some debate on VfD and elsewhere).
  • The language's article is developed well enough to be interesting and informative to people familiar with other languages on the list.
  • The language is, roughly speaking, "on par" with at least a couple other languages in the list with respect to the attributes above.
These may be too broad or too narrow or both, but it's a first stab. Deco 21:48, 4 Feb 2005 (UTC)

Thanks for being patient with me. I had decided to think this through more carefully, and it took me a week and a half.

I've come to some basic conclusions:

  • A template like this could indeed be at least slightly useful for navigation between languages, so at this juncture I would no longer like to campaign for its deletion. I guess I've caught the fever.  :)
  • The term "major" is too nebulous for that to be the only qualifying term in the name of the template itself. "Major" by itself is unencyclopedic. We should be open to a name change for the sake of clarification.
  • It is my understanding that there are three categories of languages under the "major" banner here, that being 1) Major contemporary languages in use by programming professionals, 2) Major contemporary languages in use by academia, and 3) Major historical languages (or precursors to contemporary languages). Therefore, I propose that the current "major" list constitutes a jumble of ideas and should be split into three templates. After all, if we're talking about "ease of navigation," shouldn't we then also be ensuring that the languages in the list actually have a meaningful relation to each other? For instance, I really don't see why PHP and Haskell should be in the same list/template.

If we go with splitting this template into three, I would also incorporate much of the criteria that Deco brought up. And thank you Deco for taking up the challenge.

So, what do you guys (and others) think?

Stevie is the man! Talk | Contrib 00:45, 14 Feb 2005 (UTC)