Programming language
It is difficult to determine which programming languages are most widely used, and what usage means varies by context. One language may occupy the greater number of programmer hours, a different one have more lines of code, and a third utilize the most CPU time. Some languages are very popular for particular kinds of applications. For example, COBOL is still strong in the corporate data center, often on large mainframes; FORTRAN in engineering applications; C in embedded applications and operating systems; and other languages are regularly used to write many different kinds of applications.
Various methods of measuring language popularity, each subject to a different bias over what is measured, have been proposed:
- counting the number of job advertisements that mention the language[31]
- the number of books sold that teach or describe the language[32]
- estimates of the number of existing lines of code written in the language—which may underestimate languages not often found in public searches[33]
- counts of language references found using a web search engine.
[
Taxonomies
-
For more details on this topic, see Categorical list of programming languages.
There is no overarching classification scheme for programming languages. A given programming language does not usually have a single ancestor language. Languages commonly arise by combining the elements of several predecessor languages with new ideas in circulation at the time. Ideas that originate in one language will diffuse throughout a family of related languages, and then leap suddenly across familial gaps to appear in an entirely different family.
The task is further complicated by the fact that languages can be classified along multiple axes. For example, Java is both an object-oriented language (because it encourages object-oriented organization) and a concurrent language (because it contains built-in constructs for running multiple threads in parallel). Python is an object-oriented scripting language.
In broad strokes, programming languages divide into programming paradigms and a classification by intended domain of use. Paradigms include procedural programming, object-oriented programming, functional programming, and logic programming; some languages are hybrids of paradigms or multi-paradigmatic. An assembly language is not so much a paradigm as a direct model of an underlying machine architecture. By purpose, programming languages might be considered general purpose, system programming languages, scripting languages, domain-specific languages, or concurrent/distributed languages (or a combination of these).[34] Some general purpose languages were designed largely with educational goals.[35]
A programming language may also be classified by factors unrelated to programming paradigm. For instance, most programming languages use English language keywords, while a minority do not. Other languages may be classified as being esoteric or not.
[
See also
- Lists of programming languages
- Comparison of programming languages
- Comparison of basic instructions of programming languages
- Educational programming language
- Invariant based programming
- Literate programming
- Programming language dialect
- Programming language theory
- Computer science and List of basic computer science topics
- Software engineering and List of software engineering topics
[
References
- ^ ISO 5127—Information and documentation—Vocabulary, clause 01.05.10, defines a programming language as: an artificial language for expressing programs
- ^ In mathematical terms, this means the programming language is Turing-complete MacLennan, Bruce J. (1987). Principles of Programming Languages. Oxford University Press, 1. ISBN 0-19-511306-3.
- ^ As of May 2006 The Encyclopedia of Computer Languages by Murdoch University, Australia lists 8512 computer languages.
- ^ ACM SIGPLAN (2003). Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery. Retrieved on 2006-06-19., The scope of SIGPLAN is the theory, design, implementation, description, and application of computer programming languages - languages that permit the specification of a variety of different computations, thereby providing the user with significant control (immediate or delayed) over the computer's operation.
- ^ Dean, Tom (2002). Programming Robots. Building Intelligent Robots. Brown University Department of Computer Science. Retrieved on 2006-09-23.
- ^ Digital Equipment Corporation. Information Technology - Database Language SQL (Proposed revised text of DIS 9075). ISO/IEC 9075:1992, Database Language SQL. Retrieved on June 29, 2006.
- ^ The Charity Development Group (December 1996). The CHARITY Home Page. Retrieved on 2006-06-29., Charity is a categorical programming language..., All Charity computations terminate.
- ^ IBM in first publishing PL/I, for example, rather ambitiously titled its manual The universal programming language PL/I (IBM Library; 1966). The title reflected IBM's goals for unlimited subsetting capability: PL/I is designed in such a way that one can isolate subsets from it satisfying the requirements of particular applications. (Encyclopaedia of Mathematics » P » PL/I. SpringerLink. Retrieved on June 29, 2006.). Ada and UNCOL had similar early goals.
- ^ Frederick P. Brooks, Jr.: The Mythical Man-Month, Addison-Wesley, 1982, pp. 93-94
- ^ Dijkstra, Edsger W. On the foolishness of "natural language programming." EWD667.
- ^ Perlis, Alan, Epigrams on Programming. SIGPLAN Notices Vol. 17, No. 9, September 1982, pp. 7-13
- ^ Michael Sipser (1997). Introduction to the Theory of Computation. PWS Publishing. ISBN 0-534-94728-X. Section 2.2: Pushdown Automata, pp.101–114.
- ^ Aaby, Anthony (2004). Introduction to Programming Languages.
- ^ a b c d e f g Andrew Cooke. An Introduction to Programming Languages. Retrieved on June 30, 2006.
- ^ Specifically, instantiations of generic types are inferred for certain expression forms. Type inference in Generic Java—the research language that provided the basis for Java 1.5's bounded parametric polymorphism extensions—is discussed in two informal manuscripts from the Types mailing list: Generic Java type inference is unsound (Alan Jeffrey, 17 December 2001) and Sound Generic Java type inference (Martin Odersky, 15 January 2002). C#'s type system is similar to Java's, and uses a similar partial type inference scheme.
- ^ Revised Report on the Algorithmic Language Scheme (February 20, 1998). Retrieved on June 9, 2006.
- ^ Luca Cardelli and Peter Wegner. On Understanding Types, Data Abstraction, and Polymorphism. Manuscript (1985). Retrieved on June 9, 2006.
- ^ Milner, R.; M. Tofte, R. Harper and D. MacQueen. (1997). The Definition of Standard ML (Revised). MIT Press. ISBN 0-262-63181-4.
- ^ Kelsey, Richard; William Clinger and Jonathan Rees (February 1998). Section 7.2 Formal semantics. Revised5 Report on the Algorithmic Language Scheme. Retrieved on 2006-06-09.
- ^ ANSI — Programming Language Rexx, X3-274.1996
- ^ Benjamin C. Pierce writes:
- "... the lambda calculus has seen widespread use in the specification of programming language features, in language design and implementation, and in the study of type systems."
- ^ a b O'Reilly Media. History of programming languages. Retrieved on October 5, 2006.
- ^ Frank da Cruz. IBM Punch Cards Columbia University Computing History.
- ^ Richard L. Wexelblat: History of Programming Languages, Academic Press, 1981, chapter XIV.
- ^ François Labelle. Programming Language Usage Graph. Sourceforge. Retrieved on June 21, 2006.. This comparison analyzes trends in number of projects hosted by a popular community programming repository. During most years of the comparison, C leads by a considerable margin; in 2006, Java overtakes C, but the combination of C/C++ still leads considerably.
- ^ Hayes, Brian (2006), “The Semicolon Wars”, American Scientist 94 (4): pp. 299-303
- ^ Dijkstra, Edsger W. (March 1968). "Go To Statement Considered Harmful". Communications of the ACM 11 (3): 147–148.
- ^ Tetsuro Fujise, Takashi Chikayama Kazuaki Rokusawa, Akihiko Nakase (December 1994). "KLIC: A Portable Implementation of KL1" Proc. of FGCS '94, ICOT Tokyo, December 1994. KLIC is a portable implementation of a concurrent logic programming language KL1.
- ^ Jim Bender (March 15th, 2004). Mini-Bibliography on Modules for Functional Programming Languages. ReadScheme.org. Retrieved on 2006-09-27.
- ^ Wall, Programming Perl ISBN 0-596-00027-8 p.66
- ^ Survey of Job advertisements mentioning a given language
- ^ Counting programming languages by book sales
- ^ Bieman, J.M.; Murdock, V., Finding code on the World Wide Web: a preliminary investigation, Proceedings First IEEE International Workshop on Source Code Analysis and Manipulation, 2001
- ^ TUNES: Programming Languages.
- ^ Wirth, Niklaus (1993). "Recollections about the development of Pascal". Proc. 2nd ACM SIGPLAN conference on history of programming languages: 333–342.
[
Further reading
- Daniel P. Friedman, Mitchell Wand, Christopher Thomas Haynes: Essentials of Programming Languages, The MIT Press 2001.
- David Gelernter, Suresh Jagannathan: Programming Linguistics, The MIT Press 1990.
- Shriram Krishnamurthi: Programming Languages: Application and Interpretation, online publication.
- Bruce J. MacLennan: Principles of Programming Languages: Design, Evaluation, and Implementation, Oxford University Press 1999.
- John C. Mitchell: Concepts in Programming Languages, Cambridge University Press 2002.
- Benjamin C. Pierce: Types and Programming Languages, The MIT Press 2002.
- Ravi Sethi: Programming Languages: Concepts and Constructs, 2nd ed., Addison-Wesley 1996.
- Michael L. Scott: Programming Language Pragmatics, Morgan Kaufmann Publishers 2005.
- Richard L. Wexelblat (ed.): History of Programming Languages, Academic Press 1981.
[
External links
- 99 Bottles of Beer A collection of implementations in many languages.
- Computer Languages History graphical chart
- Dictionary of Programming Languages
- History of Programming Languages (HOPL)
- Open Directory - Computer Programming Languages
- Syntax Patterns for Various Languages
- The Evolution of Programming Languages by Peter Grogono
|
|||||
|
|||||
For more information review our copyright contact and privacy policy.
