<sod> '''Bicapitalization''' or '''camel case''' (frequently written '''CamelCase''') is the practice of writing [[compound noun and adjective|compound word]]s or phrases where the terms are joined without [[whitespace|space]]s, and every term is [[capitalization|capitalized]].  The name comes from a supposed resemblance between the bumpy outline of the compound word and the humps of a [[camel]].
 
 CamelCase synonyms include:
 
 * '''CapWords''' (in [[Python programming language|Python]] [http://www.python.org/peps/pep-0008.html]).
 * '''PascalCase''' (used by Microsoft)
 
CamelCase apparently originated as an [[identifier naming convention]] for [[programming language]]s, in the [[1970s]] or [[1980s]], but eventually spread outside that community and is now often used in [[marketing]] for naming corporations and products. One early commercial example of CamelCase is the [[1950s]] [[CinemaScope]] film projection system.
 
==Origins==
 
===Programmers' choice===
It has been claimed that CamelCase originated within the culture of [[C programming language|C programmers]] and [[hacker]]s. In programs of any significant size there is a need for descriptive (hence multi-word) [[identifier]]s, like "<tt>previous balance</tt>" or "<tt>end of file</tt>". Allowing spaces within identifiers would cause problems for compilers, and just writing the words together as in "<tt>endoffile</tt>" would make the programs unreadable.  One early language, [[Fortran|FORTRAN]], did allow spaces to be embedded into identifiers, and that did result in allowing a few ambiguous syntactical expressions.
 
[[COBOL]], the first major programming language to support compound names, used [[hyphen]] "<tt>-</tt>" between terms, e.g. "<tt>END-OF-FILE</tt>.  It should be noted that the common [[punched card]] character sets of the time had no lower-case letters and no other special character that could be used for the purpose.  The later "algebraic" languages (such as C), which needed the hyphen for the minus operator, adopted the [[underscore]] character "<tt>_</tt>" (which was mandated by the new ASCII standard) as word joiner.  Underscore-separated compounds like "<tt>end_of_file</tt>" are still prevalent in C programs and libraries.
 
However, in most keyboards the underscore key is inconveniently placed, and must be typed with the help of the <tt>SHIFT</tt> key; moreover, in many fonts the underscore character is easily confused with a blank space or with a minus sign.  And in the [[1970s]], small display size and compiler limits on identifier length worked together to encourage brevity.  So &mdash; according to this theory &mdash; many programmers choose to use CamelCase instead, because it yielded legible compound names with fewer keystrokes in less space.
 
===The Alto keyboard===
 Another theory is that CamelCase actually started at [[Xerox PARC]] around 1978, with the [[Mesa programming language]] developed for the [[Xerox Alto]] computer.  This machine lacked an underscore key, so the Mesa libraries and the Alto operating system had to be coded all in CamelCase. The [[Smalltalk programming language]], which was also developed originally on the Alto and became quite popular in the early [[1980s]], may have been instrumental in spreading the style outside PARC. Another boost was provided by [[Niklaus Wirth]] &mdash; the inventor of [[Pascal programming language|Pascal]] &mdash; who acquired the taste for CamelCase during a sabbatical at PARC, and used it in [[Modula programming language|Modula]], his next programming language.
 
 ==The spread of CamelCase==
Be that as it may, CamelCase eventually spread  via [[hacker culture]] into mainstream use and became [[fashion]]able for corporate [[trade name]]s during the popularization of the [[personal computer]] in the [[1980s]] and [[1990s]]. Here are some examples:
 * [[usenet|UseNet]]
 * [[VisiCalc]]
 * [[WorldCom]]
 CamelCase is now the official convention for file names and identifiers in the [[Java programming language]], and the file name convention on [[Amiga]] computers.
 
 ==Variations on CamelCase==
 In '''upper CamelCase''' style, the first letter of every word is written in upper case, as in "TheColourOfTheBar". In '''lower CamelCase''' the first word is left uncapitalized, as in "theColourOfTheBar".
 
 [[Coding standard]]s based on CamelCase (like the pioneering [[Mesa programming language|Mesa]] style, or the modern [[Java programming language|Java]] style) typically specify which of these variants should be used for specific kinds of entities &mdash; [[variable (computer science)|variable]]s, [[field (computer science)|record fields]],[[method (computer science)|method]]s, [[procedure (computer science)|procedures]], [[type (computer science)|types]], etc.. The [[Microsoft .NET]] Guidelines define '''CamelCase''' as lower CamelCase, and refer to upper CamelCase as '''Pascal case'''.
 
 ==See also==
 *[[CamelCase and Wiki]]
 *[[CamelCase and Wikipedia]]
 
 ==External link==
 *[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconcapitalizationstyles.asp .NET Framework General Reference Capitalization Styles]
 
 [[de:CamelCase]] <eod> <sod>'''Bicapitalization''' or '''camel case''' (frequently written '''CamelCase''') is the practice of writing [[compound noun and adjective|compound word]]s or phrases where the terms are joined without [[whitespace|space]]s, and every term is [[capitalization|capitalized]].companies.  The name comes from a supposed resemblance between the bumpy outline of the compound word and the humps of a [[camel]].

CamelCase is a standard [[identifier naming convention]] for several [[programming language]]s, and has became fashionable in [[marketing]] for names of products and companies.
 
 CamelCase synonyms include:
 
 * '''CapWords''' (in [[Python programming language|Python]] [http://www.python.org/peps/pep-0008.html]).
 * '''PascalCase''' (used by Microsoft)
 
==Origins of CamelCase==
 
CamelCase has been sporadically used in [[marketing]] for naming corporations and products, at least since the introduction of the [[CinemaScope]] [[cinema|movie]] projection system in the [[1950s]].  However its use became widespread only in the [[1970s]] or [[1980s]], when it was adopted as a standard or alternative [[identifier naming convention|naming convention]] for multi-word [[identifier]]s in several [[programming language]]s. There are two theories as to why and where that custom started.
 
===Multiword identifiers===
 
In programs of any significant size there is a need for descriptive (hence multi-word) [[identifier]]s, like "<tt>previous balance</tt>" or "<tt>end of file</tt>".  Writing the words together as in "<tt>endoffile</tt>" is not satisfactory since the names often became unreadable. Therefore the pioneer prgramming language [[COBOL]] allowed [[hyphen]] "<tt>-</tt>" to be used between words of compount identifiers, as in "<tt>END-OF-FILE</tt>. The contemporary "algebraic" language [[Fortran|FORTRAN]] preempted the hyphen for the minus operator, but allowed spaces to be arbitrarily embedded into identifiers; so that <tt>TOTAMP</tt> could be written <tt>TOT AMP</tt> &mdash; or <tt>TO TAMP</tt>. However this feature was largely useless because most FORTRAN compilers did not allow identifiers longer than six letters.
 
It should be noted that the common [[punched card]] character sets of the time had no lower-case letters and no other special character that could be used for the purpose.  But by the late [[1960]]s, the [[ASCII]] character set standard was already established, and so the designers of the C language adopted the [[underscore]] character "<tt>_</tt>" as word joiner.  Underscore-separated compounds like "<tt>end_of_file</tt>" are still prevalent in C programs and libraries.
 
===The "Lazy Programmer" theory===

One theory on the origins of CamelCase in [[computing]] claims that the style  originated within the culture of [[C programming language|C programmers]] and [[hacker]]s, who found it more convenient than the standard underscore-based style.

Indeed, in most keyboards the underscore key is inconveniently placed, and must be typed with the help of the <tt>SHIFT</tt> key. Also, in many fonts the underscore character is easily confused with a blank space or with a minus sign.  Moreover, compiler limits on identifier length and the small [[computer display]]s available the [[1970s]] worked together to encourage brevity.  So &mdash; according to this theory &mdash; many programmers choose to use CamelCase instead, because it yielded legible compound names with fewer keystrokes and fewer characters.

===The "Alto Keyboard" theory===
 Another theory is that CamelCase actually started at [[Xerox PARC]] around 1978, with the [[Mesa programming language]] developed for the [[Xerox Alto]] computer.  This machine lacked an underscore key, so the Mesa libraries and the Alto operating system had to be coded all in CamelCase. The [[Smalltalk programming language]], which was also developed originally on the Alto and became quite popular in the early [[1980s]], may have been instrumental in spreading the style outside PARC. Another boost was provided by [[Niklaus Wirth]] &mdash; the inventor of [[Pascal programming language|Pascal]] &mdash; who acquired the taste for CamelCase during a sabbatical at PARC, and used it in [[Modula programming language|Modula]], his next programming language.
 
 ==The spread of CamelCase==

Be that as it may, CamelCase eventually spread  via [[hacker culture]] into mainstream use, probably because of the popularization of the [[personal computer]] in the [[1980s]] and [[1990s]], and became [[fashion]]able for corporate [[trade name]]s. Here are some examples:
 * [[usenet|UseNet]]
 * [[VisiCalc]]
 * [[WorldCom]]
 CamelCase is now the official convention for file names and identifiers in the [[Java programming language]], and the file name convention on [[Amiga]] computers.
 
 ==Variations on CamelCase==

 In '''upper CamelCase''' style, the first letter of every word is written in upper case, as in "TheColourOfTheBar". In '''lower CamelCase''' the first word is left uncapitalized, as in "theColourOfTheBar".
 
 [[Coding standard]]s based on CamelCase (like the pioneering [[Mesa programming language|Mesa]] style, or the modern [[Java programming language|Java]] style) typically specify which of these variants should be used for specific kinds of entities &mdash; [[variable (computer science)|variable]]s, [[field (computer science)|record fields]],[[method (computer science)|method]]s, [[procedure (computer science)|procedures]], [[type (computer science)|types]], etc.. The [[Microsoft .NET]] Guidelines define '''CamelCase''' as lower CamelCase, and refer to upper CamelCase as '''Pascal case'''.
 
 ==See also==

 *[[CamelCase and Wiki]]
 *[[CamelCase and Wikipedia]]
 
 ==External link==

 *[http://msdn.microsoft.com/library/default.asp?url=/library/en-us/cpgenref/html/cpconcapitalizationstyles.asp .NET Framework General Reference Capitalization Styles]
 
 [[de:CamelCase]] <eod>