Wikipedia talk:WikiProject Programming languages: Difference between revisions

Content deleted Content added
m Stubs: fixed comment so won't cause extremely wide page in some browsers
Ruud Koot (talk | contribs)
 
(109 intermediate revisions by 43 users not shown)
Line 1:
#REDIRECT [[Wikipedia talk:WikiProject Computer science]]
Sounds interesting, but what exactly does it involve? Like, say, deciding on a format for all articles of type "The Foo Programming Language", and then editting them to conform? -- [[User:Khym Chanur|Khym Chanur]] 07:29, Dec 17, 2003 (UTC)
 
How shall we organize them? Each article according to the same format/structure as Khym says, or do you mean some kind of inter-language reference, which would produce a family tree? Do we want to write EBNF for all of them? Create a master list of language features and say which languages have them (Objects, Classes, Recursion, Garbage Collection, etc.)? [[User:Brent Gulanowski|Brent Gulanowski]] 17:24, 17 Dec 2003 (UTC)
 
:My original plan was to decide on a format, and apply it to each of the programming language formats. I think Brent's ideas are good too. It is really up to the members of this WikiProject (which can be anyone, just put your name down). We can vote on these ideas here. The names of the wikipedians that I asked to join, I got from here: [[Wikipedia:Wikipedians by fields of interest#Computer Science]]. BTW, Brent, what is EBNF?
:[[User:Noldoaran|—Noldoaran]] [[User talk:Noldoaran|(Talk)]] 00:50, Dec 18, 2003 (UTC)
 
::[[EBNF]] is [[Extended Backus Naur Form]], the standard form for defining a language [[grammar]]. It is an essential component of a language specification. Check out the [http://java.sun.com/docs/books/jls/second_edition/html/jTOC.doc.html Java Language Specification] for a good, if complicated, example. The EBNF comes in handy when writing a compiler. The grammars of most modern programming languages are probably too tedious and long to include in full, but some key productions (aka rules) might be valuable for comparative purposes. So, if one exists, hopefully, as in the Java case, we can just link to it. [[User:Brent Gulanowski|Brent Gulanowski]] 20:18, 18 Dec 2003 (UTC)
 
==Some possible sections for a standardized format for programming language articles==
 
===Language origins===
 
*creator(s)
*companies involved
*original hardware platform
*original operating system
*original compiler
*precursors/descendents
*dates of major versions
 
===Language characteristics===
 
Qualities that do not fall under features.
 
*compiled, interpreted, or both
*suitable programming tasks: system, web, math, science, education, A.I.
*current usage (users, platforms, implementations)
 
===Langauge features===
 
*data types: user-derived, heterogeneous, templates, classes
*modularization: sub-routines, procedures, functions, methods
*encapsulation features
*data-hiding and memory access control features
*type checking: static (compile-time), dynamic (run-time), hybrid, other
*run-time environment: fixed memory, function stack, memory allocation
*libraries: I/O, math, GUI, threads (actually threads can be a part of a language, see [[SR programming language]] (SR means "Synchronizing Resources")
*Inter-application communication
 
===Notable strengths, unique qualities===
 
===Notable drawbacks and limitations===
 
===Sample code===
A program that prints ''Hello Wikipedia!'' would be great. ;) --[[User:ZeroOne|ZeroOne]] 23:13, 30 Aug 2004 (UTC)
 
===Key grammar components (EBNF)===
 
----
 
(I did not want to just add this to the page until we had some more input -- [[User:Brent Gulanowski|Brent Gulanowski]] 20:34, 18 Dec 2003 (UTC))
 
:Looks Great! [[User:Noldoaran|—Noldoaran]] [[User talk:Noldoaran|(Talk)]] 06:59, Jan 25, 2004 (UTC) P.S. I've been busy with other things for a while, but I'm going to be active again, now.
 
I would like it if everyone who plans on helping with this project, would put their user name on the participants list, so we can know how many and which users are avalible to help. [[User:Noldoaran|—Noldoaran]] [[User talk:Noldoaran|(Talk)]] 07:04, Jan 25, 2004 (UTC)
 
----
{{SampleWikiProject}}
 
----
The words "Programming Language" are capitalized in the title [[Cg Programming Language]], but in no other programming language articles. Why's this? [[User:Grendelkhan|Grendelkhan]] 16:41, 2004 May 9 (UTC)
 
== Writing about programming languages (from the village pump) ==
 
I think that there's something fundamentally wrong with the way that we write about programming languages. Most articles on programming languages discuss the most popular compiler/interpreter for the language, but the language is a seperate topic to the language.
 
For example, [[C Sharp programming language]] talks about how "C# does not compile to binary code which can be executed directly by the target computer", but that's just how some implementations of the language work. It has nothing to do with the language itself. It would be possible to make implement a C# compiler that compiles to binary code. The article is about the language, not compilers.
 
[[Java programming language]] says that Java code can be compiled once and then run anywhere. But this is talking about Sun and IBM's Java compilers. It isn't true for gjc, for example, which compiles to native code.
 
[[QBasic programming language]] says "Microsoft stopped shipping QBasic with later versions of Windows". How does Microsoft ship a programming language (as the article is clearly about from the title), an abstract concept? Whoever wrote this is talking about a single implementation of the language.
 
What can we do about this?
 
[[User:Cgs|CGS]] 23:58, 6 May 2004 (UTC)
 
:Bah, I just wrote a great long response to this, and then my browser crashed! It boiled down to:
* C# is a Microsoft language, so Microsoft's implementation deserves most attention - just mention that other implementations are feasible that break this rule.
* similarly, Java was designed with portable execution in mind, so it makes sense to discuss this mode of operation before any of the others - which can be seen as extensions to the original concept
* as for [[QBasic]], the article has the wrong name, is all - there is no "QBasic programming language", it is an interpretter for the same dialect of [[BASIC programming language|BASIC]] as [[Microsoft QuickBASIC compiler|QuickBASIC]] (which could also compile it), which in turn is one of hundreds of mutually incompatible BASIC dialects that have sprung up over the years, but can't really be considered languages in their own right.
** I suggest moving it (what's with this "''foo programming language''" convention anyway? Isn't it breaking a wider convention on obvious naming, except where necessary for disambiguation? What else is ever going to live at [[Smalltalk]] other than the content of [[Smalltalk programming language]]?)
** It (QBasic) should be removed from [[Template:List of programming languages]], too: you wouldn't put [[gcc]] in there, after all.
:So, essentially, the necessary changes are kind of more minor than you make out, although I see your point about the mindset and whatever. Humph, now this is almost as long as my first version - this time I'd better not crash my browser while previewing it, cos I need to get to bed. [[WP:BBIEP|Happy editing!]] - [[User:IMSoP|IMSoP]] 00:57, 7 May 2004 (UTC)
 
:I agree with CGS's observations, but also agree with IMSoP that priority should be given to the design intentions and popular implementations of a language. Some of it could be resolved by more precise language in the articles; instead of "C# does not compile to binary code...", use "Microsoft's C# compiler does not generate machine-level object code..." or something similar. Anyhow, it definitely needs some attention. I'll try to pitch in. -- [[User:Wapcaplet|Wapcaplet]] 04:27, 7 May 2004 (UTC)
::Maybe a visit to [[Wikipedia:WikiProject Programming Languages]] would be in order? --[[User:Phil Boswell|Phil]] | [[User talk:Phil Boswell|Talk]] 08:24, May 7, 2004 (UTC)
----
 
==Infoboxes==
 
Somehow I've got it in my head that [[programming paradigm|paradigm]] is a good way to categorize programming languages. Here are some possible infoboxes (modeled on the impeccable [[Greek mythology|Greek]]/[[Roman mythology]] boxes).
 
{| align="left" style="background:ivory; margin: 0 0 0.5em 1em;" id="toc" width=210
|-
!style="background:lightgrey" align="center" colspan=2|[[Procedural programming|Procedural]]<br />[[programming language|programming languages]]
|-
| style="vertical-align: top;" |
*[[C programming language|C]]
*[[Basic programming language|BASIC]]
| style="vertical-align: top;" |
*[[Perl]]
|}
 
{| align="right" style="background:ivory; margin: 0 0 0.5em 1em;" id="toc" width=210
|-
!style="background:darkseagreen" align="center" colspan=2 |[[Object-oriented programming|Object-oriented]]<br />[[programming language|programming languages]]
|-
! colspan=2 | Purely object-oriented
|-
| style="vertical-align: top;" |
*[[Smalltalk programming language|Smalltalk]]
| style="vertical-align: top;" |
*[[Ruby programming language|Ruby]]
|-
! colspan=2 | Partially object-oriented
|-
| style="vertical-align: top;" |
*[[C plus plus|C++]]
| style="vertical-align: top;" |
*[[Python programming language|Python]]
|-
! colspan=2 | Frankenstein object-oriented
|-
| style="vertical-align: top;" |
*[[Perl]]
| style="vertical-align: top;" |
|}
 
<br clear=all />
 
However, categorizing by [[Template_talk:List_of_programming_languages#Categorizing languages genetically|heritage]] is also good:
 
{| style="margin-top: 1em; margin-left: auto; margin-right: auto;" id=toc
!align=center|[[C programming language]] family
|-
|align=center style="font-size: 90%;"|[[C programming language|C]] | [[C plus plus|C++]] | [[Objective-C]] | [[Java programming language|Java]] | [[C sharp|C#]]
|-
|align=center style="font-size: 90%;"|[[List of programming languages]]
|}
 
 
*Each '''language''' page should have a box of similar languages, which are grouped according to whatever classifications we choose (e.g. paradigm, heritage).
**This might involve multiple boxes though: for multiple classifications, or, for multiple paradigms, or both. That can get messy.
 
But, you might want to include both:
 
<nowiki>{{</nowiki>Programming_language_begin}} // opens table
<nowiki>{{</nowiki>Programming_language_paradigm_procedural}} // header+rows
<nowiki>{{</nowiki>Programming_language_heritage_C}} // header+rows
<nowiki>{{</nowiki>Programming_language_end}} // final row+closes table
 
This produces something like the following:
 
{| align="right" style="background:ivory; margin: 0 0 0.5em 1em;" id="toc" width=210
|-
! colspan=2 style="background:lightgrey" align="center"|[[Procedural programming|Procedural]]<br />[[programming language|programming languages]]
|-
| style="vertical-align: top;" |
*[[C programming language|C]]
*[[Basic programming language|BASIC]]
| style="vertical-align: top;" |
*[[Perl]]
|-
! colspan=2 style="background:lightsteelblue" align="center"|[[C programming language]]<br />family
|-
| style="vertical-align: top;" |
*[[C programming language|C]]
*[[C plus plus|C++]]
*[[C sharp|C#]]
| style="vertical-align: top;" |
*[[Objective-C]]
*[[Java programming language|Java]]
|-
| colspan=2 align=center style="background:palegoldenrod; font-size: 90%;"|[[List of programming languages]]
|}
 
<br clear=all />
 
Any thoughts? --[[User:Yath|Yath]] 22:03, 8 Aug 2004 (UTC)
:Categorization by paradigm might not work as many languages support more than one paradigm. Categorization by heritage would probably be a better idea. Having multiple templates form a table is rather complicated unless you make one template that consists of those four templates... and I'm not sure if that's worth the hazzle. --[[User:ZeroOne|ZeroOne]] 19:13, 22 Aug 2004 (UTC)
 
== Naming conventions ==
 
There was a long discussion about programming language naming conventions in [[Wikipedia_talk:Naming_conventions_(languages)]]. The arguments were for and against formats "XYZ programming language" and "XYZ". According to [[Wikipedia:Naming_conventions_(languages)]] the format "XYZ" should be used always and "XYZ programming language" only in disambiguation cases. However the [[Wikipedia:Disambiguation#Topic articles]] says: <br>
"''For creating the specific topic pages, a few options are available. If there's an alternate name or more complete name that is equally clear, that can be used. For example, [[Java programming language]], [[Titan rocket]].''"<br>
Thus I hereby propose that all programming language articles should have the suffix "programming language" in their name. Reasoning:
#The naming convention should be the same for all articles. Since they can't all be named "XYZ" due to some disambig issues, they should all be named "XYZ programming language". It just doesn't look professional to have "XYZ" and "ZXY programming language" side by side in lists.
#In lists like [[Special:Recentchanges]] and [[:Category:Stub]] the languages would point out nicely, attracting those who are interested in programming languages and repelling those who aren't.
#When linking it is best if you don't have to guess if the target exists or if it is a disambig page. If all languages could be linked to with "XYZ programming language" then that would save people from lots of guessing and it would also make the creation of new programming language articles easier, should the target not exist.
#How does [[doublefuck]] look like for a good christian as an article name? ;)
#My userpage wouldn't look half as cool if those language articles I created didn't have that "programming language" suffix. ;)<br>--[[User:ZeroOne|ZeroOne]] 01:10, 21 Aug 2004 (UTC)
 
Let's have the discussion in one place, either here or there, otherwise it's time-wastingly redundant. But point-by-point, for completeness:
#The overarching rule is "most common unambiguous name". By your reasoning, then other types of articles should be entitled [[Albert Einstein Jewish physicist]], [[London city]], and [[United Kingdom country]]; if you propose that for all articles in WP and get agreement, I'll go along with it here. People decide "professionalism" by content not titling; by that standard, we have too much trivia and joke languages and not enough on the semantics of important languages.
#I don't even look at Recentchanges anymore, I would miss too much stuff. If I want to find programming languages, I look at [[list of programming languages]] or [[:Category:Programming languages]]. For new articles, there's no guarantee that the creator will add "programming language" to the title anyway, so a rule would make no difference.
#Article creators are already expected to create all the appropriate redirs and disambig machinery.
#Once [[fuck]] is in, doesn't really matter if there are more... :-)
#To be honest, your user page would look cooler without all the "programming language" appendages - after about the 20th, it's like "yeah yeah, we get the concept". :-)
[[User:Stan Shebs|Stan]] 16:23, 21 Aug 2004 (UTC)
 
Succinctness is a beautiful thing that [[Perl]], [[Befunge]], and others enjoy. Let's not clutter things up. Excessive wordiness is my bane, and hurling "programming language" about like so many verbal caltrops is a sin. It's too bad that [[C programming language]] and [[Ruby programming language]] can't enjoy the same conciseness, but let's not drag everyone else down too, eh? Also, I agree with Stan, ZeroOne your user page would look a lot better with a header '''Programming languages''' and the lack of that phrase in every link below it. --[[User:Yath|Yath]] 20:35, 22 Aug 2004 (UTC)
 
----
 
excised section
 
== The difference between the language and an implementation of a compiler or interpreter ==
 
When talking about a programming language remember that the language is a an abstract concept, and implementations of compilers or interpreters for the language is quite different.
 
For example, it is incorrect to say that Java is compiled to byte code. Some Java compilers compile to byte code, others compile to native object code, and it would be possible for another to translate to Python if it wanted to. It is also incorrect to say that C is compiled to native object code, as a C compiler exists for the .NET platform.
 
Please fully qualify what implementation of a language's compiler or interpreter you are refering to in a language's article. For example, it is fine to say that "Sun's Java compiler produces bytecode", but not simply "Java compilers produce bytecode".
 
:Um yeah, that's a bit confused, because the above is ''trivially true'' (thanks to stuff to do with [[turing machine]]s). In real life though, it is often only ''practical'' to use a language within certain parameters. Those can certainly be named. I excised the section because it would take longer to explain all the ifs and buts and perhapses etc etc. than it would be to just be quiet about it and let things sort themselves out. I hope that explains sufficiently! :-) [[User:Kim Bruning|Kim Bruning]] 21:03, 29 Aug 2004 (UTC)
 
::The distinction between languages and implementations is still worth making though; a language article should have a sentence or two in the lead stating implementation status (one, many, none :-) ), and a section summarizing notable existing implementations, possibly with a list of links to the article-worthy. It's hard to imagine a credible PL writeup that doesn't have this kind of basic info, so I think it should be part of the requirement to have a project-conforming article. Conversely, a PL article should '''not''' say that a language is "interpreted" or "compiled", since it is a property of implementations not languages - my little title-hacking project has given me a change to observe the terrible state of PL content firsthand, and lots of articles are messed up this way. [[User:Stan Shebs|Stan]] 03:52, 30 Aug 2004 (UTC)
 
== Stubs ==
 
Just to remind you, there's a template named '''<nowiki>{{compu-stub}}</nowiki>''' which you can (and I think should) use instead of <nowiki>{{stub}}</nowiki> when dealing with programming language stubs. It produces the following message: {{compu-stub}}
That will make it significantly easier for everybody to find and fix prog lang stubs as the [[:Category:Computer stubs]] is only one hundreth of a fraction of the size of [[:Category:Stub]]. :) --[[User:ZeroOne|ZeroOne]] 23:24, 30 Aug 2004 (UTC)
 
== Template:Esolangs ==
 
I just created a template '''<nowiki>{{esolangs}}</nowiki>''' to be used with [[esoteric programming language]]s:
{{esolangs}}
What do you think? --[[User:ZeroOne|ZeroOne]] 16:17, 31 Aug 2004 (UTC)
 
== VfD listings for esoteric languages ==
 
In case anyone involved with this WikiProject hasn't seen this already, there is a current deletion discussion on [[WP:VFD]] to delete 70+ articles about the more esoteric programming languages. Naturally, your input to this discussion is welcome. See [[Wikipedia:Votes for deletion/Esoteric programming language related]]. [[User:Benc|&bull;&nbsp;Benc]][[User_talk:Benc|&nbsp;&bull;]] 19:54, 29 Sep 2004 (UTC)
 
== Wikibooks C++ ==
 
Hi,
 
Opinions from people knowing this subject are needed to clear a disagreement in Wikibooks. See message from Paddu belove. Thanks, [[User:Yann|Yann]] 20:06, 18 Nov 2004 (UTC)
 
I'd like an independent person set right the mess in [[b:Programming:C plus plus]] and [[b:Programming: C -/- -/-]] and their talk pages/give at least guidance.
 
These pages contain related talk:
*[[b:Talk:Programming:C plus plus]]
*[[b:Talk:Programming:C plus plus/archive1]]
*[[b:Talk:Programming:C plus plus/single page]]
*[[b:Talk:Programming: C -/- -/-]]
*[[b:Talk:Programming: C -/- -/- (Archive)]]
*[[b:User talk:Panic2k4]]
*[[b:User talk:Dysprosia]]
*[[b:Wikibooks:Staff lounge#Attracting contributors to a textbook: Differences from the 'pedia]]
*[[b:Wikibooks:Staff lounge#Programming:C plus plus and its fork Programming: C -.2F- -.2F-]]
 
I had earlier asked [[b:User:Dysprosia]] to help. But I'd like other wikibookians also to help. The traffic to [[b:Wikibooks:Staff lounge]] seems too low to be helpful. -- [[b:User:Paddu|Paddu]] 16:09, 18 Nov 2004 (UTC)