Wikipedia talk:WikiProject Programming languages
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? -- 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.)? 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?
- —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 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. 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
Key grammar components (EBNF)
(I did not want to just add this to the page until we had some more input -- Brent Gulanowski 20:34, 18 Dec 2003 (UTC))
- Looks Great! —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. —Noldoaran (Talk) 07:04, Jan 25, 2004 (UTC)
The words "Programming Language" are capitalized in the title Cg Programming Language, but in no other programming language articles. Why's this? 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?
- 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 as 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. Happy editing! - 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. -- Wapcaplet 04:27, 7 May 2004 (UTC)
- Maybe a visit to Wikipedia:WikiProject Programming Languages would be in order? --Phil | Talk 08:24, May 7, 2004 (UTC)