User:Matt.forestpath/Programming-language outline

The programming-language outline is an attempt to create a generic outline that can be used to organize a variety of programming-language articles (modified as needed to fit the particular language). The term "outline" refers to the name, grouping, and order of sections in the article, from which the table of contents is generated.

The outline should be applied only once for a given article, not on an ongoing basis. After applying the outline, no effort should be made to keep the article consistent with the outline. The article should be allowed to take whatever form the community of users finds to be useful.

Philosophy
As long as the naming and grouping of the sections is somewhat coherent, the automatically-generated table of contents will do most of the heavy lifting of helping to make the articles adequately accessible to a wide range of people and for a wide variety of purposes. In other words, don't worry about the precise organization of the articles; just aim for something that's roughly coherent.

The value of Wikipedia is in the raw content, and in offering an environment that encourages the constant addition of raw content. Due to the collaborative nature of Wikis, the organization of the articles will be in constant flux no matter what; precise organization probably isn't a reasonable goal. If anything, precise organization may be counterproductive in Wikipedia, as it would encourage people to resist the addition of raw content, in the interest of not disrupting the existing, carefully-organized content. Some type of fuzzy organization will necessarily evolve over time, to offer a workable balance.

Goals

 * Improve the consistency and intuitiveness of the table of contents for different programming-language articles.
 * Reduce the difficulty of using and working on multiple programming-language articles by providing a common frame of reference for their organization.
 * Aim for a fuzzy level of organization, one that won't discourage the addition of raw content.

Usage
An earlier version of the programming-language outline was applied to the following articles:
 * Java
 * JavaScript
 * PHP
 * Perl
 * Python
 * C++
 * C
 * Pascal

Guidelines

 * If section A is a better starting point than section B for understanding the language, favor placing section A before section B.

Question marks

 * Theory vs Practice: Is it better to gear an article towards learning the theory and history of the language, or to gear it towards learning the hands-on usage of the language? Which approach is better suited for a non-programmer who's getting their first exposure to the language?
 * History vs philosophy: Which is a better starting point for understanding the language?

Top level
History            [How different aspects of the language came to be like they are] Philosophy         [What the language is in theory] Criticism          [Problems with different aspects of the language] Usage              [How the language is used in practice] Syntax             [What it is in detail] Resources          [What options exist to help you use the language (tools, libraries)] Availability       [How available are these options (platforms, licenses)] Related languages  [Similar in nature to "See also"] See also           [Related articles on Wikipedia] References         [Bibliography] Notes              [Footnotes] External links     [For further reading]

Rationale

 * History, philosophy, and criticism offer background info and establish a context for learning the language
 * Usage, syntax, resources, and availability offer help with learning the language
 * Related languages, see also, references, notes, and external links identify where to find additional info

Full outline
History Philosophy Criticism Usage Syntax Sample code Hello world Data structures Regular expressions Operators Arithmetic Assignment Comparison Conditional Boolean Bitwise String Control structures If ... else Switch statement For loop For ... in loop While loop Do ... while Jump statements Labels Functions Objects Exceptions Input/Output Standard I/O File I/O Memory management Miscellaneous Case sensitivity Whitespace Comments Resources Compilers Libraries Availability Supported platforms License Related languages See also References Notes External links  Language version Reference Material Authoring Guides Tutorials Security Books Journals Support Wikis Forums User groups Newsgroups IRC Mailing lists Resources Compilers Libraries Code repositories Non-English resources Standards Criticism History