programming language

15
Programming language 1 Programming language A programming language is an artificial language designed to communicate instructions to a machine, particularly a computer. Programming languages can be used to create programs that control the behavior of a machine and/or to express algorithms precisely. The earliest programming languages predate the invention of the computer, and were used to direct the behavior of machines such as Jacquard looms and player pianos. Thousands of different programming languages have been created, mainly in the computer field, with many more being created every year. Most programming languages describe computation in an imperative style, i.e., as a sequence of commands, although some languages, such as those that support functional programming or logic programming, use alternative forms of description. The description of a programming language is usually split into the two components of syntax (form) and semantics (meaning). Some languages are defined by a specification document (for example, the C programming language is specified by an ISO Standard), while other languages, such as Perl 5 and earlier, have a dominant implementation that is used as a reference. Definitions A programming language is a notation for writing programs, which are specifications of a computation or algorithm. [1] Some, but not all, authors restrict the term "programming language" to those languages that can express all possible algorithms. [1][2] Traits often considered important for what constitutes a programming language include: Function and target: A computer programming language is a language [3] used to write computer programs, which involve a computer performing some kind of computation [4] or algorithm and possibly control external devices such as printers, disk drives, robots, [5] and so on. For example PostScript programs are frequently created by another program to control a computer printer or display. More generally, a programming language may describe computation on some, possibly abstract, machine. It is generally accepted that a complete specification for a programming language includes a description, possibly idealized, of a machine or processor for that language. [6] In most practical contexts, a programming language involves a computer; consequently, programming languages are usually defined and studied this way. [7] Programming languages differ from natural languages in that natural languages are only used for interaction between people, while programming languages also allow humans to communicate instructions to machines. Abstractions: Programming languages usually contain abstractions for defining and manipulating data structures or controlling the flow of execution. The practical necessity that a programming language support adequate abstractions is expressed by the abstraction principle; [8] this principle is sometimes formulated as recommendation to the programmer to make proper use of such abstractions. [9] Expressive power: The theory of computation classifies languages by the computations they are capable of expressing. All Turing complete languages can implement the same set of algorithms. ANSI/ISO SQL and Charity are examples of languages that are not Turing complete, yet often called programming languages. [10][11] Markup languages like XML, HTML or troff, which define structured data, are not generally considered programming languages. [12][13][14] Programming languages may, however, share the syntax with markup languages if a computational semantics is defined. XSLT, for example, is a Turing complete XML dialect. [15][16][17] Moreover, LaTeX, which is mostly used for structuring documents, also contains a Turing complete subset. [18][19] The term computer language is sometimes used interchangeably with programming language. [20] However, the usage of both terms varies among authors, including the exact scope of each. One usage describes programming languages as a subset of computer languages. [21] In this vein, languages used in computing that have a different goal than expressing computer programs are generically designated computer languages. For instance, markup languages are sometimes referred to as computer languages to emphasize that they are not meant to be used for

Upload: aswan-malik

Post on 21-Feb-2016

16 views

Category:

Documents


0 download

DESCRIPTION

Bahasa Pemrograman

TRANSCRIPT

Programming language 1

Programming languageA programming language is an artificial language designed to communicate instructions to a machine particularlya computer Programming languages can be used to create programs that control the behavior of a machine andor toexpress algorithms preciselyThe earliest programming languages predate the invention of the computer and were used to direct the behavior ofmachines such as Jacquard looms and player pianos Thousands of different programming languages have beencreated mainly in the computer field with many more being created every year Most programming languagesdescribe computation in an imperative style ie as a sequence of commands although some languages such asthose that support functional programming or logic programming use alternative forms of descriptionThe description of a programming language is usually split into the two components of syntax (form) and semantics(meaning) Some languages are defined by a specification document (for example the C programming language isspecified by an ISO Standard) while other languages such as Perl 5 and earlier have a dominant implementationthat is used as a reference

DefinitionsA programming language is a notation for writing programs which are specifications of a computation oralgorithm[1] Some but not all authors restrict the term programming language to those languages that can expressall possible algorithms[1][2] Traits often considered important for what constitutes a programming language includebull Function and target A computer programming language is a language[3] used to write computer programs

which involve a computer performing some kind of computation[4] or algorithm and possibly control externaldevices such as printers disk drives robots[5] and so on For example PostScript programs are frequently createdby another program to control a computer printer or display More generally a programming language maydescribe computation on some possibly abstract machine It is generally accepted that a complete specificationfor a programming language includes a description possibly idealized of a machine or processor for thatlanguage[6] In most practical contexts a programming language involves a computer consequentlyprogramming languages are usually defined and studied this way[7] Programming languages differ from naturallanguages in that natural languages are only used for interaction between people while programming languagesalso allow humans to communicate instructions to machines

bull Abstractions Programming languages usually contain abstractions for defining and manipulating data structuresor controlling the flow of execution The practical necessity that a programming language support adequateabstractions is expressed by the abstraction principle[8] this principle is sometimes formulated asrecommendation to the programmer to make proper use of such abstractions[9]

bull Expressive power The theory of computation classifies languages by the computations they are capable ofexpressing All Turing complete languages can implement the same set of algorithms ANSIISO SQL andCharity are examples of languages that are not Turing complete yet often called programming languages[10][11]

Markup languages like XML HTML or troff which define structured data are not generally consideredprogramming languages[12][13][14] Programming languages may however share the syntax with markup languagesif a computational semantics is defined XSLT for example is a Turing complete XML dialect[15][16][17] MoreoverLaTeX which is mostly used for structuring documents also contains a Turing complete subset[18][19]

The term computer language is sometimes used interchangeably with programming language[20] However the usage of both terms varies among authors including the exact scope of each One usage describes programming languages as a subset of computer languages[21] In this vein languages used in computing that have a different goal than expressing computer programs are generically designated computer languages For instance markup languages are sometimes referred to as computer languages to emphasize that they are not meant to be used for

Programming language 2

programming[22] Another usage regards programming languages as theoretical constructs for programming abstractmachines and computer languages as the subset thereof that runs on physical computers which have finite hardwareresources[23] John C Reynolds emphasizes that formal specification languages are just as much programminglanguages as are the languages intended for execution He also argues that textual and even graphical input formatsthat affect the behavior of a computer are programming languages despite the fact they are commonly notTuring-complete and remarks that ignorance of programming language concepts is the reason for many flaws ininput formats[24]

ElementsAll programming languages have some primitive building blocks for the description of data and the processes ortransformations applied to them (like the addition of two numbers or the selection of an item from a collection)These primitives are defined by syntactic and semantic rules which describe their structure and meaningrespectively

Syntax

Parse tree of Python code with inset tokenization

A programming languages surfaceform is known as its syntax Mostprogramming languages are purelytextual they use sequences of textincluding words numbers andpunctuation much like written naturallanguages On the other hand there aresome programming languages whichare more graphical in nature usingvisual relationships between symbolsto specify a program

The syntax of a language describes thepossible combinations of symbols thatform a syntactically correct programThe meaning given to a combination ofsymbols is handled by semantics(either formal or hard-coded in areference implementation) Since most languages are textual this article discusses textual syntax

Programming language syntax is usually defined using a combination of regular expressions (for lexical structure)and BackusndashNaur Form (for grammatical structure) Below is a simple grammar based on Lisp

Programming language 3

Syntax highlighting is often used to aid programmers in recognizing elements ofsource code The language above is Python

expression = atom | list

atom = number | symbol

number = [+-][0-9]+

symbol = [A-Za-z]

list = ( expression )

This grammar specifies the followingbull an expression is either an atom or a listbull an atom is either a number or a symbolbull a number is an unbroken sequence of one or more decimal digits optionally preceded by a plus or minus signbull a symbol is a letter followed by zero or more of any characters (excluding whitespace) andbull a list is a matched pair of parentheses with zero or more expressions inside itThe following are examples of well-formed token sequences in this grammar 12345 () (a b c232 (1))Not all syntactically correct programs are semantically correct Many syntactically correct programs are nonethelessill-formed per the languages rules and may (depending on the language specification and the soundness of theimplementation) result in an error on translation or execution In some cases such programs may exhibit undefinedbehavior Even when a program is well-defined within a language it may still have a meaning that is not intended bythe person who wrote itUsing natural language as an example it may not be possible to assign a meaning to a grammatically correctsentence or the sentence may be falsebull Colorless green ideas sleep furiously is grammatically well-formed but has no generally accepted meaningbullbull John is a married bachelor is grammatically well-formed but expresses a meaning that cannot be trueThe following C language fragment is syntactically correct but performs operations that are not semantically defined(the operation p gtgt 4 has no meaning for a value having a complex type and p-gtim is not defined because thevalue of p is the null pointer)

complex p = NULL

complex abs_p = sqrt(p gtgt 4 + p-gtim)

Programming language 4

If the type declaration on the first line were omitted the program would trigger an error on compilation as thevariable p would not be defined But the program would still be syntactically correct since type declarationsprovide only semantic informationThe grammar needed to specify a programming language can be classified by its position in the Chomsky hierarchyThe syntax of most programming languages can be specified using a Type-2 grammar ie they are context-freegrammars[25] Some languages including Perl and Lisp contain constructs that allow execution during the parsingphase Languages that have constructs that allow the programmer to alter the behavior of the parser make syntaxanalysis an undecidable problem and generally blur the distinction between parsing and execution[26] In contrast toLisps macro system and Perls BEGIN blocks which may contain general computations C macros are merely stringreplacements and do not require code execution[27]

SemanticsThe term Semantics refers to the meaning of languages as opposed to their form (syntax)

Static semantics

The static semantics defines restrictions on the structure of valid texts that are hard or impossible to express instandard syntactic formalisms[1] For compiled languages static semantics essentially include those semantic rulesthat can be checked at compile time Examples include checking that every identifier is declared before it is used (inlanguages that require such declarations) or that the labels on the arms of a case statement are distinct[28] Manyimportant restrictions of this type like checking that identifiers are used in the appropriate context (eg not addingan integer to a function name) or that subroutine calls have the appropriate number and type of arguments can beenforced by defining them as rules in a logic called a type system Other forms of static analyses like data flowanalysis may also be part of static semantics Newer programming languages like Java and C have definiteassignment analysis a form of data flow analysis as part of their static semantics

Dynamic semantics

Once data has been specified the machine must be instructed to perform operations on the data For example thesemantics may define the strategy by which expressions are evaluated to values or the manner in which controlstructures conditionally execute statements The dynamic semantics (also known as execution semantics) of alanguage defines how and when the various constructs of a language should produce a program behavior There aremany ways of defining execution semantics Natural language is often used to specify the execution semantics oflanguages commonly used in practice A significant amount of academic research went into formal semantics ofprogramming languages which allow execution semantics to be specified in a formal manner Results from this fieldof research have seen limited application to programming language design and implementation outside academia

Type system

A type system defines how a programming language classifies values and expressions into types how it canmanipulate those types and how they interact The goal of a type system is to verify and usually enforce a certainlevel of correctness in programs written in that language by detecting certain incorrect operations Any decidabletype system involves a trade-off while it rejects many incorrect programs it can also prohibit some correct albeitunusual programs In order to bypass this downside a number of languages have type loopholes usually uncheckedcasts that may be used by the programmer to explicitly allow a normally disallowed operation between differenttypes In most typed languages the type system is used only to type check programs but a number of languagesusually functional ones infer types relieving the programmer from the need to write type annotations The formaldesign and study of type systems is known as type theory

Programming language 5

Typed versus untyped languages

A language is typed if the specification of every operation defines types of data to which the operation is applicablewith the implication that it is not applicable to other types[29] For example the data represented by this textbetween the quotes is a string In most programming languages dividing a number by a string has nomeaning Most modern programming languages will therefore reject any program attempting to perform such anoperation In some languages the meaningless operation will be detected when the program is compiled (statictype checking) and rejected by the compiler while in others it will be detected when the program is run (dynamictype checking) resulting in a runtime exceptionA special case of typed languages are the single-type languages These are often scripting or markup languages suchas REXX or SGML and have only one data typemdashmost commonly character strings which are used for bothsymbolic and numeric dataIn contrast an untyped language such as most assembly languages allows any operation to be performed on anydata which are generally considered to be sequences of bits of various lengths[29] High-level languages which areuntyped include BCPL and some varieties of ForthIn practice while few languages are considered typed from the point of view of type theory (verifying or rejectingall operations) most modern languages offer a degree of typing[29] Many production languages provide means tobypass or subvert the type system (see casting)

Static versus dynamic typing

In static typing all expressions have their types determined prior to when the program is executed typically atcompile-time For example 1 and (2+2) are integer expressions they cannot be passed to a function that expects astring or stored in a variable that is defined to hold dates[29]

Statically typed languages can be either manifestly typed or type-inferred In the first case the programmer mustexplicitly write types at certain textual positions (for example at variable declarations) In the second case thecompiler infers the types of expressions and declarations based on context Most mainstream statically typedlanguages such as C++ C and Java are manifestly typed Complete type inference has traditionally beenassociated with less mainstream languages such as Haskell and ML However many manifestly typed languagessupport partial type inference for example Java and C both infer types in certain limited cases[30]

Dynamic typing also called latent typing determines the type-safety of operations at runtime in other words typesare associated with runtime values rather than textual expressions[29] As with type-inferred languages dynamicallytyped languages do not require the programmer to write explicit type annotations on expressions Among otherthings this may permit a single variable to refer to values of different types at different points in the programexecution However type errors cannot be automatically detected until a piece of code is actually executedpotentially making debugging more difficult Lisp Perl Python JavaScript and Ruby are dynamically typed

Weak and strong typing

Weak typing allows a value of one type to be treated as another for example treating a string as a number[29] Thiscan occasionally be useful but it can also allow some kinds of program faults to go undetected at compile time andeven at run-timeStrong typing prevents the above An attempt to perform an operation on the wrong type of value raises an error[29]

Strongly typed languages are often termed type-safe or safeAn alternative definition for weakly typed refers to languages such as Perl and JavaScript which permit a large number of implicit type conversions In JavaScript for example the expression 2 x implicitly converts x to a number and this conversion succeeds even if x is null undefined an Array or a string of letters Such implicit conversions are often useful but they can mask programming errors Strong and static are now generally considered orthogonal concepts but usage in the literature differs Some use the term strongly typed to mean

Programming language 6

strongly statically typed or even more confusingly to mean simply statically typed Thus C has been called bothstrongly typed and weakly statically typed[31][32]

Standard library and run-time systemMost programming languages have an associated core library (sometimes known as the standard library especiallyif it is included as part of the published language standard) which is conventionally made available by allimplementations of the language Core libraries typically include definitions for commonly used algorithms datastructures and mechanisms for input and outputA languages core library is often treated as part of the language by its users although the designers may have treatedit as a separate entity Many language specifications define a core that must be made available in allimplementations and in the case of standardized languages this core library may be required The line between alanguage and its core library therefore differs from language to language Indeed some languages are designed sothat the meanings of certain syntactic constructs cannot even be described without referring to the core library Forexample in Java a string literal is defined as an instance of the javalangString class similarly inSmalltalk an anonymous function expression (a block) constructs an instance of the librarys BlockContextclass Conversely Scheme contains multiple coherent subsets that suffice to construct the rest of the language aslibrary macros and so the language designers do not even bother to say which portions of the language must beimplemented as language constructs and which must be implemented as parts of a library

Design and implementationProgramming languages share properties with natural languages related to their purpose as vehicles forcommunication having a syntactic form separate from its semantics and showing language families of relatedlanguages branching one from another[3][33] But as artificial constructs they also differ in fundamental ways fromlanguages that have evolved through usage A significant difference is that a programming language can be fullydescribed and studied in its entirety since it has a precise and finite definition[34] By contrast natural languageshave changing meanings given by their users in different communities While constructed languages are alsoartificial languages designed from the ground up with a specific purpose they lack the precise and completesemantic definition that a programming language hasMany programming languages have been designed from scratch altered to meet new needs and combined withother languages Many have eventually fallen into disuse Although there have been attempts to design oneuniversal programming language that serves all purposes all of them have failed to be generally accepted as fillingthis role[35] The need for diverse programming languages arises from the diversity of contexts in which languagesare usedbull Programs range from tiny scripts written by individual hobbyists to huge systems written by hundreds of

programmersbullbull Programmers range in expertise from novices who need simplicity above all else to experts who may be

comfortable with considerable complexitybull Programs must balance speed size and simplicity on systems ranging from microcontrollers to supercomputersbullbull Programs may be written once and not change for generations or they may undergo continual modificationbullbull Finally programmers may simply differ in their tastes they may be accustomed to discussing problems and

expressing them in a particular languageOne common trend in the development of programming languages has been to add more ability to solve problems using a higher level of abstraction The earliest programming languages were tied very closely to the underlying hardware of the computer As new programming languages have developed features have been added that let programmers express ideas that are more remote from simple translation into underlying hardware instructions Because programmers are less tied to the complexity of the computer their programs can do more computing with

Programming language 7

less effort from the programmer This lets them write more functionality per time unit[36]

Natural language processors have been proposed as a way to eliminate the need for a specialized language forprogramming However this goal remains distant and its benefits are open to debate Edsger W Dijkstra took theposition that the use of a formal language is essential to prevent the introduction of meaningless constructs anddismissed natural language programming as foolish[37] Alan Perlis was similarly dismissive of the idea[38] Hybridapproaches have been taken in Structured English and SQLA languages designers and users must construct a number of artifacts that govern and enable the practice ofprogramming The most important of these artifacts are the language specification and implementation

SpecificationThe specification of a programming language is intended to provide a definition that the language users and theimplementors can use to determine whether the behavior of a program is correct given its source codeA programming language specification can take several forms including the followingbull An explicit definition of the syntax static semantics and execution semantics of the language While syntax is

commonly specified using a formal grammar semantic definitions may be written in natural language (eg as inthe C language) or a formal semantics (eg as in Standard ML[39] and Scheme[40] specifications)

bull A description of the behavior of a translator for the language (eg the C++ and Fortran specifications) Thesyntax and semantics of the language have to be inferred from this description which may be written in natural ora formal language

bull A reference or model implementation sometimes written in the language being specified (eg Prolog or ANSIREXX[41]) The syntax and semantics of the language are explicit in the behavior of the referenceimplementation

ImplementationAn implementation of a programming language provides a way to execute that program on one or moreconfigurations of hardware and software There are broadly two approaches to programming languageimplementation compilation and interpretation It is generally possible to implement a language using eithertechniqueThe output of a compiler may be executed by hardware or a program called an interpreter In some implementationsthat make use of the interpreter approach there is no distinct boundary between compiling and interpreting Forinstance some implementations of BASIC compile and then execute the source a line at a timePrograms that are executed directly on the hardware usually run several orders of magnitude faster than those that areinterpreted in softwareOne technique for improving the performance of interpreted programs is just-in-time compilation Here the virtualmachine just before execution translates the blocks of bytecode which are going to be used to machine code fordirect execution on the hardware

Programming language 8

UsageThousands of different programming languages have been created mainly in the computing field[42] Programminglanguages differ from most other forms of human expression in that they require a greater degree of precision andcompletenessWhen using a natural language to communicate with other people human authors and speakers can be ambiguousand make small errors and still expect their intent to be understood However figuratively speaking computers doexactly what they are told to do and cannot understand what code the programmer intended to write Thecombination of the language definition a program and the programs inputs must fully specify the external behaviorthat occurs when the program is executed within the domain of control of that program On the other hand ideasabout an algorithm can be communicated to humans without the precision required for execution by usingpseudocode which interleaves natural language with code written in a programming languageA programming language provides a structured mechanism for defining pieces of data and the operations ortransformations that may be carried out automatically on that data A programmer uses the abstractions present in thelanguage to represent the concepts involved in a computation These concepts are represented as a collection of thesimplest elements available (called primitives)[43] Programming is the process by which programmers combinethese primitives to compose new programs or adapt existing ones to new uses or a changing environmentPrograms for a computer might be executed in a batch process without human interaction or a user might typecommands in an interactive session of an interpreter In this case the commands are simply programs whoseexecution is chained together When a language is used to give commands to a software application (such as a shell)it is called a scripting language

Measuring language usageIt is difficult to determine which programming languages are most widely used and what usage means varies bycontext One language may occupy the greater number of programmer hours a different one have more lines ofcode and a third utilize the most CPU time Some languages are very popular for particular kinds of applicationsFor example COBOL is still strong in the corporate data center often on large mainframes Fortran in scientific andengineering applications and C in embedded applications and operating systems Other languages are regularly usedto write many different kinds of applicationsVarious methods of measuring language popularity each subject to a different bias over what is measured have beenproposedbull counting the number of job advertisements that mention the language[44]

bull the number of books sold that teach or describe the language[45]

bull estimates of the number of existing lines of code written in the languagemdashwhich may underestimate languagesnot often found in public searches[46]

bullbull counts of language references (ie to the name of the language) found using a web search engineCombining and averaging information from various internet sites langpopcom claims that[47] in 2008 the 10 mostcited programming languages are (in alphabetical order) C C++ C Java JavaScript Perl PHP Python Ruby andSQL

Programming language 9

TaxonomiesThere is no overarching classification scheme for programming languages A given programming language does notusually have a single ancestor language Languages commonly arise by combining the elements of severalpredecessor languages with new ideas in circulation at the time Ideas that originate in one language will diffusethroughout a family of related languages and then leap suddenly across familial gaps to appear in an entirelydifferent familyThe task is further complicated by the fact that languages can be classified along multiple axes For example Java isboth 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-orientedscripting languageIn broad strokes programming languages divide into programming paradigms and a classification by intendeddomain of use Traditionally programming languages have been regarded as describing computation in terms ofimperative sentences ie issuing commands These are generally called imperative programming languages A greatdeal of research in programming languages has been aimed at blurring the distinction between a program as a set ofinstructions and a program as an assertion about the desired answer which is the main feature of declarativeprogramming[48] More refined paradigms include procedural programming object-oriented programmingfunctional programming and logic programming some languages are hybrids of paradigms or multi-paradigmaticAn assembly language is not so much a paradigm as a direct model of an underlying machine architecture Bypurpose programming languages might be considered general purpose system programming languages scriptinglanguages domain-specific languages or concurrentdistributed languages (or a combination of these)[49] Somegeneral purpose languages were designed largely with educational goals[50]

A programming language may also be classified by factors unrelated to programming paradigm For instance mostprogramming languages use English language keywords while a minority do not Other languages may be classifiedas being deliberately esoteric or not

Programming language 10

History

A selection of textbooks that teach programming in languagesboth popular and obscure These are only a few of the

thousands of programming languages and dialects that havebeen designed in history

Early developments

The first programming languages predate the moderncomputer The 19th century saw the invention ofprogrammable looms and player piano scrolls both ofwhich implemented examples of domain-specificlanguages By the beginning of the twentieth century punchcards encoded data and directed mechanical processing Inthe 1930s and 1940s the formalisms of Alonzo Churchslambda calculus and Alan Turings Turing machinesprovided mathematical abstractions for expressingalgorithms the lambda calculus remains influential inlanguage design[51]

In the 1940s the first electrically powered digital computerswere created The first high-level programming language tobe designed for a computer was Plankalkuumll developed forthe German Z3 by Konrad Zuse between 1943 and 1945However it was not implemented until 1998 and 2000[52]

Programmers of early 1950s computers notably UNIVAC Iand IBM 701 used machine language programs that is thefirst generation language (1GL) 1GL programming wasquickly superseded by similarly machine-specific butmnemonic second generation languages (2GL) known asassembly languages or assembler Later in the 1950s assembly language programming which had evolved toinclude the use of macro instructions was followed by the development of third generation programminglanguages (3GL) such as FORTRAN LISP and COBOL[53] 3GLs are more abstract and are portable or at leastimplemented similarly on computers that do not support the same native machine code Updated versions of all ofthese 3GLs are still in general use and each has strongly influenced the development of later languages[54] At theend of the 1950s the language formalized as ALGOL 60 was introduced and most later programming languages arein many respects descendants of Algol[54] The format and use of the early programming languages was heavilyinfluenced by the constraints of the interface[55]

RefinementThe period from the 1960s to the late 1970s brought the development of the major language paradigms now in usethough many aspects were refinements of ideas in the very first Third-generation programming languagesbull APL introduced array programming and influenced functional programming[56]

bull PLI (NPL) was designed in the early 1960s to incorporate the best ideas from FORTRAN and COBOLbull In the 1960s Simula was the first language designed to support object-oriented programming in the mid-1970s

Smalltalk followed with the first purely object-oriented languagebull C was developed between 1969 and 1973 as a system programming language and remains popular[57]

bull Prolog designed in 1972 was the first logic programming languagebull In 1978 ML built a polymorphic type system on top of Lisp pioneering statically typed functional programming

languages

Programming language 11

Each of these languages spawned an entire family of descendants and most modern languages count at least one ofthem in their ancestryThe 1960s and 1970s also saw considerable debate over the merits of structured programming and whetherprogramming languages should be designed to support it[58] Edsger Dijkstra in a famous 1968 letter published inthe Communications of the ACM argued that GOTO statements should be eliminated from all higher levelprogramming languages[59]

The 1960s and 1970s also saw expansion of techniques that reduced the footprint of a program as well as improvedproductivity of the programmer and user The card deck for an early 4GL was a lot smaller for the same functionalityexpressed in a 3GL deck

Consolidation and growthThe 1980s were years of relative consolidation C++ combined object-oriented and systems programming TheUnited States government standardized Ada a systems programming language derived from Pascal and intended foruse by defense contractors In Japan and elsewhere vast sums were spent investigating so-called fifth generationlanguages that incorporated logic programming constructs[60] The functional languages community moved tostandardize ML and Lisp Rather than inventing new paradigms all of these movements elaborated upon the ideasinvented in the previous decadeOne important trend in language design for programming large-scale systems during the 1980s was an increasedfocus on the use of modules or large-scale organizational units of code Modula-2 Ada and ML all developednotable module systems in the 1980s although other languages such as PLI already had extensive support formodular programming Module systems were often wedded to generic programming constructs[61]

The rapid growth of the Internet in the mid-1990s created opportunities for new languages Perl originally a Unixscripting tool first released in 1987 became common in dynamic websites Java came to be used for server-sideprogramming and bytecode virtual machines became popular again in commercial settings with their promise ofWrite once run anywhere (UCSD Pascal had been popular for a time in the early 1980s) These developmentswere not fundamentally novel rather they were refinements to existing languages and paradigms and largely basedon the C family of programming languagesProgramming language evolution continues in both industry and research Current directions include security andreliability verification new kinds of modularity (mixins delegates aspects) and database integration such asMicrosofts LINQThe 4GLs are examples of languages which are domain-specific such as SQL which manipulates and returns sets ofdata rather than the scalar values which are canonical to most programming languages Perl for example with itshere document can hold multiple 4GL programs as well as multiple JavaScript programs in part of its own perlcode and use variable interpolation in the here document to support multi-language programming[62]

References[1] Aaby Anthony (2004) Introduction to Programming Languages (http burks brighton ac uk burks pcinfo progdocs plbook index

htm) [2] In mathematical terms this means the programming language is Turing-complete MacLennan Bruce J (1987) Principles of Programming

Languages Oxford University Press p 1 ISBN 0-19-511306-3[3] Steven R Fischer A history of language Reaktion Books 2003 ISBN 1-86189-080-X p 205[4] ACM SIGPLAN (2003) Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery

(http www acm org sigs sigplan sigplan_bylaws htm) Retrieved 19 June 2006 The scope of SIGPLAN is the theory designimplementation description and application of computer programming languages - languages that permit the specification of a variety ofdifferent computations thereby providing the user with significant control (immediate or delayed) over the computers operation

[5] Dean Tom (2002) Programming Robots (http www cs brown edu people tld courses cs148 02 programming html) BuildingIntelligent Robots Brown University Department of Computer Science Retrieved 23 September 2006

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 2

programming[22] Another usage regards programming languages as theoretical constructs for programming abstractmachines and computer languages as the subset thereof that runs on physical computers which have finite hardwareresources[23] John C Reynolds emphasizes that formal specification languages are just as much programminglanguages as are the languages intended for execution He also argues that textual and even graphical input formatsthat affect the behavior of a computer are programming languages despite the fact they are commonly notTuring-complete and remarks that ignorance of programming language concepts is the reason for many flaws ininput formats[24]

ElementsAll programming languages have some primitive building blocks for the description of data and the processes ortransformations applied to them (like the addition of two numbers or the selection of an item from a collection)These primitives are defined by syntactic and semantic rules which describe their structure and meaningrespectively

Syntax

Parse tree of Python code with inset tokenization

A programming languages surfaceform is known as its syntax Mostprogramming languages are purelytextual they use sequences of textincluding words numbers andpunctuation much like written naturallanguages On the other hand there aresome programming languages whichare more graphical in nature usingvisual relationships between symbolsto specify a program

The syntax of a language describes thepossible combinations of symbols thatform a syntactically correct programThe meaning given to a combination ofsymbols is handled by semantics(either formal or hard-coded in areference implementation) Since most languages are textual this article discusses textual syntax

Programming language syntax is usually defined using a combination of regular expressions (for lexical structure)and BackusndashNaur Form (for grammatical structure) Below is a simple grammar based on Lisp

Programming language 3

Syntax highlighting is often used to aid programmers in recognizing elements ofsource code The language above is Python

expression = atom | list

atom = number | symbol

number = [+-][0-9]+

symbol = [A-Za-z]

list = ( expression )

This grammar specifies the followingbull an expression is either an atom or a listbull an atom is either a number or a symbolbull a number is an unbroken sequence of one or more decimal digits optionally preceded by a plus or minus signbull a symbol is a letter followed by zero or more of any characters (excluding whitespace) andbull a list is a matched pair of parentheses with zero or more expressions inside itThe following are examples of well-formed token sequences in this grammar 12345 () (a b c232 (1))Not all syntactically correct programs are semantically correct Many syntactically correct programs are nonethelessill-formed per the languages rules and may (depending on the language specification and the soundness of theimplementation) result in an error on translation or execution In some cases such programs may exhibit undefinedbehavior Even when a program is well-defined within a language it may still have a meaning that is not intended bythe person who wrote itUsing natural language as an example it may not be possible to assign a meaning to a grammatically correctsentence or the sentence may be falsebull Colorless green ideas sleep furiously is grammatically well-formed but has no generally accepted meaningbullbull John is a married bachelor is grammatically well-formed but expresses a meaning that cannot be trueThe following C language fragment is syntactically correct but performs operations that are not semantically defined(the operation p gtgt 4 has no meaning for a value having a complex type and p-gtim is not defined because thevalue of p is the null pointer)

complex p = NULL

complex abs_p = sqrt(p gtgt 4 + p-gtim)

Programming language 4

If the type declaration on the first line were omitted the program would trigger an error on compilation as thevariable p would not be defined But the program would still be syntactically correct since type declarationsprovide only semantic informationThe grammar needed to specify a programming language can be classified by its position in the Chomsky hierarchyThe syntax of most programming languages can be specified using a Type-2 grammar ie they are context-freegrammars[25] Some languages including Perl and Lisp contain constructs that allow execution during the parsingphase Languages that have constructs that allow the programmer to alter the behavior of the parser make syntaxanalysis an undecidable problem and generally blur the distinction between parsing and execution[26] In contrast toLisps macro system and Perls BEGIN blocks which may contain general computations C macros are merely stringreplacements and do not require code execution[27]

SemanticsThe term Semantics refers to the meaning of languages as opposed to their form (syntax)

Static semantics

The static semantics defines restrictions on the structure of valid texts that are hard or impossible to express instandard syntactic formalisms[1] For compiled languages static semantics essentially include those semantic rulesthat can be checked at compile time Examples include checking that every identifier is declared before it is used (inlanguages that require such declarations) or that the labels on the arms of a case statement are distinct[28] Manyimportant restrictions of this type like checking that identifiers are used in the appropriate context (eg not addingan integer to a function name) or that subroutine calls have the appropriate number and type of arguments can beenforced by defining them as rules in a logic called a type system Other forms of static analyses like data flowanalysis may also be part of static semantics Newer programming languages like Java and C have definiteassignment analysis a form of data flow analysis as part of their static semantics

Dynamic semantics

Once data has been specified the machine must be instructed to perform operations on the data For example thesemantics may define the strategy by which expressions are evaluated to values or the manner in which controlstructures conditionally execute statements The dynamic semantics (also known as execution semantics) of alanguage defines how and when the various constructs of a language should produce a program behavior There aremany ways of defining execution semantics Natural language is often used to specify the execution semantics oflanguages commonly used in practice A significant amount of academic research went into formal semantics ofprogramming languages which allow execution semantics to be specified in a formal manner Results from this fieldof research have seen limited application to programming language design and implementation outside academia

Type system

A type system defines how a programming language classifies values and expressions into types how it canmanipulate those types and how they interact The goal of a type system is to verify and usually enforce a certainlevel of correctness in programs written in that language by detecting certain incorrect operations Any decidabletype system involves a trade-off while it rejects many incorrect programs it can also prohibit some correct albeitunusual programs In order to bypass this downside a number of languages have type loopholes usually uncheckedcasts that may be used by the programmer to explicitly allow a normally disallowed operation between differenttypes In most typed languages the type system is used only to type check programs but a number of languagesusually functional ones infer types relieving the programmer from the need to write type annotations The formaldesign and study of type systems is known as type theory

Programming language 5

Typed versus untyped languages

A language is typed if the specification of every operation defines types of data to which the operation is applicablewith the implication that it is not applicable to other types[29] For example the data represented by this textbetween the quotes is a string In most programming languages dividing a number by a string has nomeaning Most modern programming languages will therefore reject any program attempting to perform such anoperation In some languages the meaningless operation will be detected when the program is compiled (statictype checking) and rejected by the compiler while in others it will be detected when the program is run (dynamictype checking) resulting in a runtime exceptionA special case of typed languages are the single-type languages These are often scripting or markup languages suchas REXX or SGML and have only one data typemdashmost commonly character strings which are used for bothsymbolic and numeric dataIn contrast an untyped language such as most assembly languages allows any operation to be performed on anydata which are generally considered to be sequences of bits of various lengths[29] High-level languages which areuntyped include BCPL and some varieties of ForthIn practice while few languages are considered typed from the point of view of type theory (verifying or rejectingall operations) most modern languages offer a degree of typing[29] Many production languages provide means tobypass or subvert the type system (see casting)

Static versus dynamic typing

In static typing all expressions have their types determined prior to when the program is executed typically atcompile-time For example 1 and (2+2) are integer expressions they cannot be passed to a function that expects astring or stored in a variable that is defined to hold dates[29]

Statically typed languages can be either manifestly typed or type-inferred In the first case the programmer mustexplicitly write types at certain textual positions (for example at variable declarations) In the second case thecompiler infers the types of expressions and declarations based on context Most mainstream statically typedlanguages such as C++ C and Java are manifestly typed Complete type inference has traditionally beenassociated with less mainstream languages such as Haskell and ML However many manifestly typed languagessupport partial type inference for example Java and C both infer types in certain limited cases[30]

Dynamic typing also called latent typing determines the type-safety of operations at runtime in other words typesare associated with runtime values rather than textual expressions[29] As with type-inferred languages dynamicallytyped languages do not require the programmer to write explicit type annotations on expressions Among otherthings this may permit a single variable to refer to values of different types at different points in the programexecution However type errors cannot be automatically detected until a piece of code is actually executedpotentially making debugging more difficult Lisp Perl Python JavaScript and Ruby are dynamically typed

Weak and strong typing

Weak typing allows a value of one type to be treated as another for example treating a string as a number[29] Thiscan occasionally be useful but it can also allow some kinds of program faults to go undetected at compile time andeven at run-timeStrong typing prevents the above An attempt to perform an operation on the wrong type of value raises an error[29]

Strongly typed languages are often termed type-safe or safeAn alternative definition for weakly typed refers to languages such as Perl and JavaScript which permit a large number of implicit type conversions In JavaScript for example the expression 2 x implicitly converts x to a number and this conversion succeeds even if x is null undefined an Array or a string of letters Such implicit conversions are often useful but they can mask programming errors Strong and static are now generally considered orthogonal concepts but usage in the literature differs Some use the term strongly typed to mean

Programming language 6

strongly statically typed or even more confusingly to mean simply statically typed Thus C has been called bothstrongly typed and weakly statically typed[31][32]

Standard library and run-time systemMost programming languages have an associated core library (sometimes known as the standard library especiallyif it is included as part of the published language standard) which is conventionally made available by allimplementations of the language Core libraries typically include definitions for commonly used algorithms datastructures and mechanisms for input and outputA languages core library is often treated as part of the language by its users although the designers may have treatedit as a separate entity Many language specifications define a core that must be made available in allimplementations and in the case of standardized languages this core library may be required The line between alanguage and its core library therefore differs from language to language Indeed some languages are designed sothat the meanings of certain syntactic constructs cannot even be described without referring to the core library Forexample in Java a string literal is defined as an instance of the javalangString class similarly inSmalltalk an anonymous function expression (a block) constructs an instance of the librarys BlockContextclass Conversely Scheme contains multiple coherent subsets that suffice to construct the rest of the language aslibrary macros and so the language designers do not even bother to say which portions of the language must beimplemented as language constructs and which must be implemented as parts of a library

Design and implementationProgramming languages share properties with natural languages related to their purpose as vehicles forcommunication having a syntactic form separate from its semantics and showing language families of relatedlanguages branching one from another[3][33] But as artificial constructs they also differ in fundamental ways fromlanguages that have evolved through usage A significant difference is that a programming language can be fullydescribed and studied in its entirety since it has a precise and finite definition[34] By contrast natural languageshave changing meanings given by their users in different communities While constructed languages are alsoartificial languages designed from the ground up with a specific purpose they lack the precise and completesemantic definition that a programming language hasMany programming languages have been designed from scratch altered to meet new needs and combined withother languages Many have eventually fallen into disuse Although there have been attempts to design oneuniversal programming language that serves all purposes all of them have failed to be generally accepted as fillingthis role[35] The need for diverse programming languages arises from the diversity of contexts in which languagesare usedbull Programs range from tiny scripts written by individual hobbyists to huge systems written by hundreds of

programmersbullbull Programmers range in expertise from novices who need simplicity above all else to experts who may be

comfortable with considerable complexitybull Programs must balance speed size and simplicity on systems ranging from microcontrollers to supercomputersbullbull Programs may be written once and not change for generations or they may undergo continual modificationbullbull Finally programmers may simply differ in their tastes they may be accustomed to discussing problems and

expressing them in a particular languageOne common trend in the development of programming languages has been to add more ability to solve problems using a higher level of abstraction The earliest programming languages were tied very closely to the underlying hardware of the computer As new programming languages have developed features have been added that let programmers express ideas that are more remote from simple translation into underlying hardware instructions Because programmers are less tied to the complexity of the computer their programs can do more computing with

Programming language 7

less effort from the programmer This lets them write more functionality per time unit[36]

Natural language processors have been proposed as a way to eliminate the need for a specialized language forprogramming However this goal remains distant and its benefits are open to debate Edsger W Dijkstra took theposition that the use of a formal language is essential to prevent the introduction of meaningless constructs anddismissed natural language programming as foolish[37] Alan Perlis was similarly dismissive of the idea[38] Hybridapproaches have been taken in Structured English and SQLA languages designers and users must construct a number of artifacts that govern and enable the practice ofprogramming The most important of these artifacts are the language specification and implementation

SpecificationThe specification of a programming language is intended to provide a definition that the language users and theimplementors can use to determine whether the behavior of a program is correct given its source codeA programming language specification can take several forms including the followingbull An explicit definition of the syntax static semantics and execution semantics of the language While syntax is

commonly specified using a formal grammar semantic definitions may be written in natural language (eg as inthe C language) or a formal semantics (eg as in Standard ML[39] and Scheme[40] specifications)

bull A description of the behavior of a translator for the language (eg the C++ and Fortran specifications) Thesyntax and semantics of the language have to be inferred from this description which may be written in natural ora formal language

bull A reference or model implementation sometimes written in the language being specified (eg Prolog or ANSIREXX[41]) The syntax and semantics of the language are explicit in the behavior of the referenceimplementation

ImplementationAn implementation of a programming language provides a way to execute that program on one or moreconfigurations of hardware and software There are broadly two approaches to programming languageimplementation compilation and interpretation It is generally possible to implement a language using eithertechniqueThe output of a compiler may be executed by hardware or a program called an interpreter In some implementationsthat make use of the interpreter approach there is no distinct boundary between compiling and interpreting Forinstance some implementations of BASIC compile and then execute the source a line at a timePrograms that are executed directly on the hardware usually run several orders of magnitude faster than those that areinterpreted in softwareOne technique for improving the performance of interpreted programs is just-in-time compilation Here the virtualmachine just before execution translates the blocks of bytecode which are going to be used to machine code fordirect execution on the hardware

Programming language 8

UsageThousands of different programming languages have been created mainly in the computing field[42] Programminglanguages differ from most other forms of human expression in that they require a greater degree of precision andcompletenessWhen using a natural language to communicate with other people human authors and speakers can be ambiguousand make small errors and still expect their intent to be understood However figuratively speaking computers doexactly what they are told to do and cannot understand what code the programmer intended to write Thecombination of the language definition a program and the programs inputs must fully specify the external behaviorthat occurs when the program is executed within the domain of control of that program On the other hand ideasabout an algorithm can be communicated to humans without the precision required for execution by usingpseudocode which interleaves natural language with code written in a programming languageA programming language provides a structured mechanism for defining pieces of data and the operations ortransformations that may be carried out automatically on that data A programmer uses the abstractions present in thelanguage to represent the concepts involved in a computation These concepts are represented as a collection of thesimplest elements available (called primitives)[43] Programming is the process by which programmers combinethese primitives to compose new programs or adapt existing ones to new uses or a changing environmentPrograms for a computer might be executed in a batch process without human interaction or a user might typecommands in an interactive session of an interpreter In this case the commands are simply programs whoseexecution is chained together When a language is used to give commands to a software application (such as a shell)it is called a scripting language

Measuring language usageIt is difficult to determine which programming languages are most widely used and what usage means varies bycontext One language may occupy the greater number of programmer hours a different one have more lines ofcode and a third utilize the most CPU time Some languages are very popular for particular kinds of applicationsFor example COBOL is still strong in the corporate data center often on large mainframes Fortran in scientific andengineering applications and C in embedded applications and operating systems Other languages are regularly usedto write many different kinds of applicationsVarious methods of measuring language popularity each subject to a different bias over what is measured have beenproposedbull counting the number of job advertisements that mention the language[44]

bull the number of books sold that teach or describe the language[45]

bull estimates of the number of existing lines of code written in the languagemdashwhich may underestimate languagesnot often found in public searches[46]

bullbull counts of language references (ie to the name of the language) found using a web search engineCombining and averaging information from various internet sites langpopcom claims that[47] in 2008 the 10 mostcited programming languages are (in alphabetical order) C C++ C Java JavaScript Perl PHP Python Ruby andSQL

Programming language 9

TaxonomiesThere is no overarching classification scheme for programming languages A given programming language does notusually have a single ancestor language Languages commonly arise by combining the elements of severalpredecessor languages with new ideas in circulation at the time Ideas that originate in one language will diffusethroughout a family of related languages and then leap suddenly across familial gaps to appear in an entirelydifferent familyThe task is further complicated by the fact that languages can be classified along multiple axes For example Java isboth 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-orientedscripting languageIn broad strokes programming languages divide into programming paradigms and a classification by intendeddomain of use Traditionally programming languages have been regarded as describing computation in terms ofimperative sentences ie issuing commands These are generally called imperative programming languages A greatdeal of research in programming languages has been aimed at blurring the distinction between a program as a set ofinstructions and a program as an assertion about the desired answer which is the main feature of declarativeprogramming[48] More refined paradigms include procedural programming object-oriented programmingfunctional programming and logic programming some languages are hybrids of paradigms or multi-paradigmaticAn assembly language is not so much a paradigm as a direct model of an underlying machine architecture Bypurpose programming languages might be considered general purpose system programming languages scriptinglanguages domain-specific languages or concurrentdistributed languages (or a combination of these)[49] Somegeneral purpose languages were designed largely with educational goals[50]

A programming language may also be classified by factors unrelated to programming paradigm For instance mostprogramming languages use English language keywords while a minority do not Other languages may be classifiedas being deliberately esoteric or not

Programming language 10

History

A selection of textbooks that teach programming in languagesboth popular and obscure These are only a few of the

thousands of programming languages and dialects that havebeen designed in history

Early developments

The first programming languages predate the moderncomputer The 19th century saw the invention ofprogrammable looms and player piano scrolls both ofwhich implemented examples of domain-specificlanguages By the beginning of the twentieth century punchcards encoded data and directed mechanical processing Inthe 1930s and 1940s the formalisms of Alonzo Churchslambda calculus and Alan Turings Turing machinesprovided mathematical abstractions for expressingalgorithms the lambda calculus remains influential inlanguage design[51]

In the 1940s the first electrically powered digital computerswere created The first high-level programming language tobe designed for a computer was Plankalkuumll developed forthe German Z3 by Konrad Zuse between 1943 and 1945However it was not implemented until 1998 and 2000[52]

Programmers of early 1950s computers notably UNIVAC Iand IBM 701 used machine language programs that is thefirst generation language (1GL) 1GL programming wasquickly superseded by similarly machine-specific butmnemonic second generation languages (2GL) known asassembly languages or assembler Later in the 1950s assembly language programming which had evolved toinclude the use of macro instructions was followed by the development of third generation programminglanguages (3GL) such as FORTRAN LISP and COBOL[53] 3GLs are more abstract and are portable or at leastimplemented similarly on computers that do not support the same native machine code Updated versions of all ofthese 3GLs are still in general use and each has strongly influenced the development of later languages[54] At theend of the 1950s the language formalized as ALGOL 60 was introduced and most later programming languages arein many respects descendants of Algol[54] The format and use of the early programming languages was heavilyinfluenced by the constraints of the interface[55]

RefinementThe period from the 1960s to the late 1970s brought the development of the major language paradigms now in usethough many aspects were refinements of ideas in the very first Third-generation programming languagesbull APL introduced array programming and influenced functional programming[56]

bull PLI (NPL) was designed in the early 1960s to incorporate the best ideas from FORTRAN and COBOLbull In the 1960s Simula was the first language designed to support object-oriented programming in the mid-1970s

Smalltalk followed with the first purely object-oriented languagebull C was developed between 1969 and 1973 as a system programming language and remains popular[57]

bull Prolog designed in 1972 was the first logic programming languagebull In 1978 ML built a polymorphic type system on top of Lisp pioneering statically typed functional programming

languages

Programming language 11

Each of these languages spawned an entire family of descendants and most modern languages count at least one ofthem in their ancestryThe 1960s and 1970s also saw considerable debate over the merits of structured programming and whetherprogramming languages should be designed to support it[58] Edsger Dijkstra in a famous 1968 letter published inthe Communications of the ACM argued that GOTO statements should be eliminated from all higher levelprogramming languages[59]

The 1960s and 1970s also saw expansion of techniques that reduced the footprint of a program as well as improvedproductivity of the programmer and user The card deck for an early 4GL was a lot smaller for the same functionalityexpressed in a 3GL deck

Consolidation and growthThe 1980s were years of relative consolidation C++ combined object-oriented and systems programming TheUnited States government standardized Ada a systems programming language derived from Pascal and intended foruse by defense contractors In Japan and elsewhere vast sums were spent investigating so-called fifth generationlanguages that incorporated logic programming constructs[60] The functional languages community moved tostandardize ML and Lisp Rather than inventing new paradigms all of these movements elaborated upon the ideasinvented in the previous decadeOne important trend in language design for programming large-scale systems during the 1980s was an increasedfocus on the use of modules or large-scale organizational units of code Modula-2 Ada and ML all developednotable module systems in the 1980s although other languages such as PLI already had extensive support formodular programming Module systems were often wedded to generic programming constructs[61]

The rapid growth of the Internet in the mid-1990s created opportunities for new languages Perl originally a Unixscripting tool first released in 1987 became common in dynamic websites Java came to be used for server-sideprogramming and bytecode virtual machines became popular again in commercial settings with their promise ofWrite once run anywhere (UCSD Pascal had been popular for a time in the early 1980s) These developmentswere not fundamentally novel rather they were refinements to existing languages and paradigms and largely basedon the C family of programming languagesProgramming language evolution continues in both industry and research Current directions include security andreliability verification new kinds of modularity (mixins delegates aspects) and database integration such asMicrosofts LINQThe 4GLs are examples of languages which are domain-specific such as SQL which manipulates and returns sets ofdata rather than the scalar values which are canonical to most programming languages Perl for example with itshere document can hold multiple 4GL programs as well as multiple JavaScript programs in part of its own perlcode and use variable interpolation in the here document to support multi-language programming[62]

References[1] Aaby Anthony (2004) Introduction to Programming Languages (http burks brighton ac uk burks pcinfo progdocs plbook index

htm) [2] In mathematical terms this means the programming language is Turing-complete MacLennan Bruce J (1987) Principles of Programming

Languages Oxford University Press p 1 ISBN 0-19-511306-3[3] Steven R Fischer A history of language Reaktion Books 2003 ISBN 1-86189-080-X p 205[4] ACM SIGPLAN (2003) Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery

(http www acm org sigs sigplan sigplan_bylaws htm) Retrieved 19 June 2006 The scope of SIGPLAN is the theory designimplementation description and application of computer programming languages - languages that permit the specification of a variety ofdifferent computations thereby providing the user with significant control (immediate or delayed) over the computers operation

[5] Dean Tom (2002) Programming Robots (http www cs brown edu people tld courses cs148 02 programming html) BuildingIntelligent Robots Brown University Department of Computer Science Retrieved 23 September 2006

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 3

Syntax highlighting is often used to aid programmers in recognizing elements ofsource code The language above is Python

expression = atom | list

atom = number | symbol

number = [+-][0-9]+

symbol = [A-Za-z]

list = ( expression )

This grammar specifies the followingbull an expression is either an atom or a listbull an atom is either a number or a symbolbull a number is an unbroken sequence of one or more decimal digits optionally preceded by a plus or minus signbull a symbol is a letter followed by zero or more of any characters (excluding whitespace) andbull a list is a matched pair of parentheses with zero or more expressions inside itThe following are examples of well-formed token sequences in this grammar 12345 () (a b c232 (1))Not all syntactically correct programs are semantically correct Many syntactically correct programs are nonethelessill-formed per the languages rules and may (depending on the language specification and the soundness of theimplementation) result in an error on translation or execution In some cases such programs may exhibit undefinedbehavior Even when a program is well-defined within a language it may still have a meaning that is not intended bythe person who wrote itUsing natural language as an example it may not be possible to assign a meaning to a grammatically correctsentence or the sentence may be falsebull Colorless green ideas sleep furiously is grammatically well-formed but has no generally accepted meaningbullbull John is a married bachelor is grammatically well-formed but expresses a meaning that cannot be trueThe following C language fragment is syntactically correct but performs operations that are not semantically defined(the operation p gtgt 4 has no meaning for a value having a complex type and p-gtim is not defined because thevalue of p is the null pointer)

complex p = NULL

complex abs_p = sqrt(p gtgt 4 + p-gtim)

Programming language 4

If the type declaration on the first line were omitted the program would trigger an error on compilation as thevariable p would not be defined But the program would still be syntactically correct since type declarationsprovide only semantic informationThe grammar needed to specify a programming language can be classified by its position in the Chomsky hierarchyThe syntax of most programming languages can be specified using a Type-2 grammar ie they are context-freegrammars[25] Some languages including Perl and Lisp contain constructs that allow execution during the parsingphase Languages that have constructs that allow the programmer to alter the behavior of the parser make syntaxanalysis an undecidable problem and generally blur the distinction between parsing and execution[26] In contrast toLisps macro system and Perls BEGIN blocks which may contain general computations C macros are merely stringreplacements and do not require code execution[27]

SemanticsThe term Semantics refers to the meaning of languages as opposed to their form (syntax)

Static semantics

The static semantics defines restrictions on the structure of valid texts that are hard or impossible to express instandard syntactic formalisms[1] For compiled languages static semantics essentially include those semantic rulesthat can be checked at compile time Examples include checking that every identifier is declared before it is used (inlanguages that require such declarations) or that the labels on the arms of a case statement are distinct[28] Manyimportant restrictions of this type like checking that identifiers are used in the appropriate context (eg not addingan integer to a function name) or that subroutine calls have the appropriate number and type of arguments can beenforced by defining them as rules in a logic called a type system Other forms of static analyses like data flowanalysis may also be part of static semantics Newer programming languages like Java and C have definiteassignment analysis a form of data flow analysis as part of their static semantics

Dynamic semantics

Once data has been specified the machine must be instructed to perform operations on the data For example thesemantics may define the strategy by which expressions are evaluated to values or the manner in which controlstructures conditionally execute statements The dynamic semantics (also known as execution semantics) of alanguage defines how and when the various constructs of a language should produce a program behavior There aremany ways of defining execution semantics Natural language is often used to specify the execution semantics oflanguages commonly used in practice A significant amount of academic research went into formal semantics ofprogramming languages which allow execution semantics to be specified in a formal manner Results from this fieldof research have seen limited application to programming language design and implementation outside academia

Type system

A type system defines how a programming language classifies values and expressions into types how it canmanipulate those types and how they interact The goal of a type system is to verify and usually enforce a certainlevel of correctness in programs written in that language by detecting certain incorrect operations Any decidabletype system involves a trade-off while it rejects many incorrect programs it can also prohibit some correct albeitunusual programs In order to bypass this downside a number of languages have type loopholes usually uncheckedcasts that may be used by the programmer to explicitly allow a normally disallowed operation between differenttypes In most typed languages the type system is used only to type check programs but a number of languagesusually functional ones infer types relieving the programmer from the need to write type annotations The formaldesign and study of type systems is known as type theory

Programming language 5

Typed versus untyped languages

A language is typed if the specification of every operation defines types of data to which the operation is applicablewith the implication that it is not applicable to other types[29] For example the data represented by this textbetween the quotes is a string In most programming languages dividing a number by a string has nomeaning Most modern programming languages will therefore reject any program attempting to perform such anoperation In some languages the meaningless operation will be detected when the program is compiled (statictype checking) and rejected by the compiler while in others it will be detected when the program is run (dynamictype checking) resulting in a runtime exceptionA special case of typed languages are the single-type languages These are often scripting or markup languages suchas REXX or SGML and have only one data typemdashmost commonly character strings which are used for bothsymbolic and numeric dataIn contrast an untyped language such as most assembly languages allows any operation to be performed on anydata which are generally considered to be sequences of bits of various lengths[29] High-level languages which areuntyped include BCPL and some varieties of ForthIn practice while few languages are considered typed from the point of view of type theory (verifying or rejectingall operations) most modern languages offer a degree of typing[29] Many production languages provide means tobypass or subvert the type system (see casting)

Static versus dynamic typing

In static typing all expressions have their types determined prior to when the program is executed typically atcompile-time For example 1 and (2+2) are integer expressions they cannot be passed to a function that expects astring or stored in a variable that is defined to hold dates[29]

Statically typed languages can be either manifestly typed or type-inferred In the first case the programmer mustexplicitly write types at certain textual positions (for example at variable declarations) In the second case thecompiler infers the types of expressions and declarations based on context Most mainstream statically typedlanguages such as C++ C and Java are manifestly typed Complete type inference has traditionally beenassociated with less mainstream languages such as Haskell and ML However many manifestly typed languagessupport partial type inference for example Java and C both infer types in certain limited cases[30]

Dynamic typing also called latent typing determines the type-safety of operations at runtime in other words typesare associated with runtime values rather than textual expressions[29] As with type-inferred languages dynamicallytyped languages do not require the programmer to write explicit type annotations on expressions Among otherthings this may permit a single variable to refer to values of different types at different points in the programexecution However type errors cannot be automatically detected until a piece of code is actually executedpotentially making debugging more difficult Lisp Perl Python JavaScript and Ruby are dynamically typed

Weak and strong typing

Weak typing allows a value of one type to be treated as another for example treating a string as a number[29] Thiscan occasionally be useful but it can also allow some kinds of program faults to go undetected at compile time andeven at run-timeStrong typing prevents the above An attempt to perform an operation on the wrong type of value raises an error[29]

Strongly typed languages are often termed type-safe or safeAn alternative definition for weakly typed refers to languages such as Perl and JavaScript which permit a large number of implicit type conversions In JavaScript for example the expression 2 x implicitly converts x to a number and this conversion succeeds even if x is null undefined an Array or a string of letters Such implicit conversions are often useful but they can mask programming errors Strong and static are now generally considered orthogonal concepts but usage in the literature differs Some use the term strongly typed to mean

Programming language 6

strongly statically typed or even more confusingly to mean simply statically typed Thus C has been called bothstrongly typed and weakly statically typed[31][32]

Standard library and run-time systemMost programming languages have an associated core library (sometimes known as the standard library especiallyif it is included as part of the published language standard) which is conventionally made available by allimplementations of the language Core libraries typically include definitions for commonly used algorithms datastructures and mechanisms for input and outputA languages core library is often treated as part of the language by its users although the designers may have treatedit as a separate entity Many language specifications define a core that must be made available in allimplementations and in the case of standardized languages this core library may be required The line between alanguage and its core library therefore differs from language to language Indeed some languages are designed sothat the meanings of certain syntactic constructs cannot even be described without referring to the core library Forexample in Java a string literal is defined as an instance of the javalangString class similarly inSmalltalk an anonymous function expression (a block) constructs an instance of the librarys BlockContextclass Conversely Scheme contains multiple coherent subsets that suffice to construct the rest of the language aslibrary macros and so the language designers do not even bother to say which portions of the language must beimplemented as language constructs and which must be implemented as parts of a library

Design and implementationProgramming languages share properties with natural languages related to their purpose as vehicles forcommunication having a syntactic form separate from its semantics and showing language families of relatedlanguages branching one from another[3][33] But as artificial constructs they also differ in fundamental ways fromlanguages that have evolved through usage A significant difference is that a programming language can be fullydescribed and studied in its entirety since it has a precise and finite definition[34] By contrast natural languageshave changing meanings given by their users in different communities While constructed languages are alsoartificial languages designed from the ground up with a specific purpose they lack the precise and completesemantic definition that a programming language hasMany programming languages have been designed from scratch altered to meet new needs and combined withother languages Many have eventually fallen into disuse Although there have been attempts to design oneuniversal programming language that serves all purposes all of them have failed to be generally accepted as fillingthis role[35] The need for diverse programming languages arises from the diversity of contexts in which languagesare usedbull Programs range from tiny scripts written by individual hobbyists to huge systems written by hundreds of

programmersbullbull Programmers range in expertise from novices who need simplicity above all else to experts who may be

comfortable with considerable complexitybull Programs must balance speed size and simplicity on systems ranging from microcontrollers to supercomputersbullbull Programs may be written once and not change for generations or they may undergo continual modificationbullbull Finally programmers may simply differ in their tastes they may be accustomed to discussing problems and

expressing them in a particular languageOne common trend in the development of programming languages has been to add more ability to solve problems using a higher level of abstraction The earliest programming languages were tied very closely to the underlying hardware of the computer As new programming languages have developed features have been added that let programmers express ideas that are more remote from simple translation into underlying hardware instructions Because programmers are less tied to the complexity of the computer their programs can do more computing with

Programming language 7

less effort from the programmer This lets them write more functionality per time unit[36]

Natural language processors have been proposed as a way to eliminate the need for a specialized language forprogramming However this goal remains distant and its benefits are open to debate Edsger W Dijkstra took theposition that the use of a formal language is essential to prevent the introduction of meaningless constructs anddismissed natural language programming as foolish[37] Alan Perlis was similarly dismissive of the idea[38] Hybridapproaches have been taken in Structured English and SQLA languages designers and users must construct a number of artifacts that govern and enable the practice ofprogramming The most important of these artifacts are the language specification and implementation

SpecificationThe specification of a programming language is intended to provide a definition that the language users and theimplementors can use to determine whether the behavior of a program is correct given its source codeA programming language specification can take several forms including the followingbull An explicit definition of the syntax static semantics and execution semantics of the language While syntax is

commonly specified using a formal grammar semantic definitions may be written in natural language (eg as inthe C language) or a formal semantics (eg as in Standard ML[39] and Scheme[40] specifications)

bull A description of the behavior of a translator for the language (eg the C++ and Fortran specifications) Thesyntax and semantics of the language have to be inferred from this description which may be written in natural ora formal language

bull A reference or model implementation sometimes written in the language being specified (eg Prolog or ANSIREXX[41]) The syntax and semantics of the language are explicit in the behavior of the referenceimplementation

ImplementationAn implementation of a programming language provides a way to execute that program on one or moreconfigurations of hardware and software There are broadly two approaches to programming languageimplementation compilation and interpretation It is generally possible to implement a language using eithertechniqueThe output of a compiler may be executed by hardware or a program called an interpreter In some implementationsthat make use of the interpreter approach there is no distinct boundary between compiling and interpreting Forinstance some implementations of BASIC compile and then execute the source a line at a timePrograms that are executed directly on the hardware usually run several orders of magnitude faster than those that areinterpreted in softwareOne technique for improving the performance of interpreted programs is just-in-time compilation Here the virtualmachine just before execution translates the blocks of bytecode which are going to be used to machine code fordirect execution on the hardware

Programming language 8

UsageThousands of different programming languages have been created mainly in the computing field[42] Programminglanguages differ from most other forms of human expression in that they require a greater degree of precision andcompletenessWhen using a natural language to communicate with other people human authors and speakers can be ambiguousand make small errors and still expect their intent to be understood However figuratively speaking computers doexactly what they are told to do and cannot understand what code the programmer intended to write Thecombination of the language definition a program and the programs inputs must fully specify the external behaviorthat occurs when the program is executed within the domain of control of that program On the other hand ideasabout an algorithm can be communicated to humans without the precision required for execution by usingpseudocode which interleaves natural language with code written in a programming languageA programming language provides a structured mechanism for defining pieces of data and the operations ortransformations that may be carried out automatically on that data A programmer uses the abstractions present in thelanguage to represent the concepts involved in a computation These concepts are represented as a collection of thesimplest elements available (called primitives)[43] Programming is the process by which programmers combinethese primitives to compose new programs or adapt existing ones to new uses or a changing environmentPrograms for a computer might be executed in a batch process without human interaction or a user might typecommands in an interactive session of an interpreter In this case the commands are simply programs whoseexecution is chained together When a language is used to give commands to a software application (such as a shell)it is called a scripting language

Measuring language usageIt is difficult to determine which programming languages are most widely used and what usage means varies bycontext One language may occupy the greater number of programmer hours a different one have more lines ofcode and a third utilize the most CPU time Some languages are very popular for particular kinds of applicationsFor example COBOL is still strong in the corporate data center often on large mainframes Fortran in scientific andengineering applications and C in embedded applications and operating systems Other languages are regularly usedto write many different kinds of applicationsVarious methods of measuring language popularity each subject to a different bias over what is measured have beenproposedbull counting the number of job advertisements that mention the language[44]

bull the number of books sold that teach or describe the language[45]

bull estimates of the number of existing lines of code written in the languagemdashwhich may underestimate languagesnot often found in public searches[46]

bullbull counts of language references (ie to the name of the language) found using a web search engineCombining and averaging information from various internet sites langpopcom claims that[47] in 2008 the 10 mostcited programming languages are (in alphabetical order) C C++ C Java JavaScript Perl PHP Python Ruby andSQL

Programming language 9

TaxonomiesThere is no overarching classification scheme for programming languages A given programming language does notusually have a single ancestor language Languages commonly arise by combining the elements of severalpredecessor languages with new ideas in circulation at the time Ideas that originate in one language will diffusethroughout a family of related languages and then leap suddenly across familial gaps to appear in an entirelydifferent familyThe task is further complicated by the fact that languages can be classified along multiple axes For example Java isboth 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-orientedscripting languageIn broad strokes programming languages divide into programming paradigms and a classification by intendeddomain of use Traditionally programming languages have been regarded as describing computation in terms ofimperative sentences ie issuing commands These are generally called imperative programming languages A greatdeal of research in programming languages has been aimed at blurring the distinction between a program as a set ofinstructions and a program as an assertion about the desired answer which is the main feature of declarativeprogramming[48] More refined paradigms include procedural programming object-oriented programmingfunctional programming and logic programming some languages are hybrids of paradigms or multi-paradigmaticAn assembly language is not so much a paradigm as a direct model of an underlying machine architecture Bypurpose programming languages might be considered general purpose system programming languages scriptinglanguages domain-specific languages or concurrentdistributed languages (or a combination of these)[49] Somegeneral purpose languages were designed largely with educational goals[50]

A programming language may also be classified by factors unrelated to programming paradigm For instance mostprogramming languages use English language keywords while a minority do not Other languages may be classifiedas being deliberately esoteric or not

Programming language 10

History

A selection of textbooks that teach programming in languagesboth popular and obscure These are only a few of the

thousands of programming languages and dialects that havebeen designed in history

Early developments

The first programming languages predate the moderncomputer The 19th century saw the invention ofprogrammable looms and player piano scrolls both ofwhich implemented examples of domain-specificlanguages By the beginning of the twentieth century punchcards encoded data and directed mechanical processing Inthe 1930s and 1940s the formalisms of Alonzo Churchslambda calculus and Alan Turings Turing machinesprovided mathematical abstractions for expressingalgorithms the lambda calculus remains influential inlanguage design[51]

In the 1940s the first electrically powered digital computerswere created The first high-level programming language tobe designed for a computer was Plankalkuumll developed forthe German Z3 by Konrad Zuse between 1943 and 1945However it was not implemented until 1998 and 2000[52]

Programmers of early 1950s computers notably UNIVAC Iand IBM 701 used machine language programs that is thefirst generation language (1GL) 1GL programming wasquickly superseded by similarly machine-specific butmnemonic second generation languages (2GL) known asassembly languages or assembler Later in the 1950s assembly language programming which had evolved toinclude the use of macro instructions was followed by the development of third generation programminglanguages (3GL) such as FORTRAN LISP and COBOL[53] 3GLs are more abstract and are portable or at leastimplemented similarly on computers that do not support the same native machine code Updated versions of all ofthese 3GLs are still in general use and each has strongly influenced the development of later languages[54] At theend of the 1950s the language formalized as ALGOL 60 was introduced and most later programming languages arein many respects descendants of Algol[54] The format and use of the early programming languages was heavilyinfluenced by the constraints of the interface[55]

RefinementThe period from the 1960s to the late 1970s brought the development of the major language paradigms now in usethough many aspects were refinements of ideas in the very first Third-generation programming languagesbull APL introduced array programming and influenced functional programming[56]

bull PLI (NPL) was designed in the early 1960s to incorporate the best ideas from FORTRAN and COBOLbull In the 1960s Simula was the first language designed to support object-oriented programming in the mid-1970s

Smalltalk followed with the first purely object-oriented languagebull C was developed between 1969 and 1973 as a system programming language and remains popular[57]

bull Prolog designed in 1972 was the first logic programming languagebull In 1978 ML built a polymorphic type system on top of Lisp pioneering statically typed functional programming

languages

Programming language 11

Each of these languages spawned an entire family of descendants and most modern languages count at least one ofthem in their ancestryThe 1960s and 1970s also saw considerable debate over the merits of structured programming and whetherprogramming languages should be designed to support it[58] Edsger Dijkstra in a famous 1968 letter published inthe Communications of the ACM argued that GOTO statements should be eliminated from all higher levelprogramming languages[59]

The 1960s and 1970s also saw expansion of techniques that reduced the footprint of a program as well as improvedproductivity of the programmer and user The card deck for an early 4GL was a lot smaller for the same functionalityexpressed in a 3GL deck

Consolidation and growthThe 1980s were years of relative consolidation C++ combined object-oriented and systems programming TheUnited States government standardized Ada a systems programming language derived from Pascal and intended foruse by defense contractors In Japan and elsewhere vast sums were spent investigating so-called fifth generationlanguages that incorporated logic programming constructs[60] The functional languages community moved tostandardize ML and Lisp Rather than inventing new paradigms all of these movements elaborated upon the ideasinvented in the previous decadeOne important trend in language design for programming large-scale systems during the 1980s was an increasedfocus on the use of modules or large-scale organizational units of code Modula-2 Ada and ML all developednotable module systems in the 1980s although other languages such as PLI already had extensive support formodular programming Module systems were often wedded to generic programming constructs[61]

The rapid growth of the Internet in the mid-1990s created opportunities for new languages Perl originally a Unixscripting tool first released in 1987 became common in dynamic websites Java came to be used for server-sideprogramming and bytecode virtual machines became popular again in commercial settings with their promise ofWrite once run anywhere (UCSD Pascal had been popular for a time in the early 1980s) These developmentswere not fundamentally novel rather they were refinements to existing languages and paradigms and largely basedon the C family of programming languagesProgramming language evolution continues in both industry and research Current directions include security andreliability verification new kinds of modularity (mixins delegates aspects) and database integration such asMicrosofts LINQThe 4GLs are examples of languages which are domain-specific such as SQL which manipulates and returns sets ofdata rather than the scalar values which are canonical to most programming languages Perl for example with itshere document can hold multiple 4GL programs as well as multiple JavaScript programs in part of its own perlcode and use variable interpolation in the here document to support multi-language programming[62]

References[1] Aaby Anthony (2004) Introduction to Programming Languages (http burks brighton ac uk burks pcinfo progdocs plbook index

htm) [2] In mathematical terms this means the programming language is Turing-complete MacLennan Bruce J (1987) Principles of Programming

Languages Oxford University Press p 1 ISBN 0-19-511306-3[3] Steven R Fischer A history of language Reaktion Books 2003 ISBN 1-86189-080-X p 205[4] ACM SIGPLAN (2003) Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery

(http www acm org sigs sigplan sigplan_bylaws htm) Retrieved 19 June 2006 The scope of SIGPLAN is the theory designimplementation description and application of computer programming languages - languages that permit the specification of a variety ofdifferent computations thereby providing the user with significant control (immediate or delayed) over the computers operation

[5] Dean Tom (2002) Programming Robots (http www cs brown edu people tld courses cs148 02 programming html) BuildingIntelligent Robots Brown University Department of Computer Science Retrieved 23 September 2006

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 4

If the type declaration on the first line were omitted the program would trigger an error on compilation as thevariable p would not be defined But the program would still be syntactically correct since type declarationsprovide only semantic informationThe grammar needed to specify a programming language can be classified by its position in the Chomsky hierarchyThe syntax of most programming languages can be specified using a Type-2 grammar ie they are context-freegrammars[25] Some languages including Perl and Lisp contain constructs that allow execution during the parsingphase Languages that have constructs that allow the programmer to alter the behavior of the parser make syntaxanalysis an undecidable problem and generally blur the distinction between parsing and execution[26] In contrast toLisps macro system and Perls BEGIN blocks which may contain general computations C macros are merely stringreplacements and do not require code execution[27]

SemanticsThe term Semantics refers to the meaning of languages as opposed to their form (syntax)

Static semantics

The static semantics defines restrictions on the structure of valid texts that are hard or impossible to express instandard syntactic formalisms[1] For compiled languages static semantics essentially include those semantic rulesthat can be checked at compile time Examples include checking that every identifier is declared before it is used (inlanguages that require such declarations) or that the labels on the arms of a case statement are distinct[28] Manyimportant restrictions of this type like checking that identifiers are used in the appropriate context (eg not addingan integer to a function name) or that subroutine calls have the appropriate number and type of arguments can beenforced by defining them as rules in a logic called a type system Other forms of static analyses like data flowanalysis may also be part of static semantics Newer programming languages like Java and C have definiteassignment analysis a form of data flow analysis as part of their static semantics

Dynamic semantics

Once data has been specified the machine must be instructed to perform operations on the data For example thesemantics may define the strategy by which expressions are evaluated to values or the manner in which controlstructures conditionally execute statements The dynamic semantics (also known as execution semantics) of alanguage defines how and when the various constructs of a language should produce a program behavior There aremany ways of defining execution semantics Natural language is often used to specify the execution semantics oflanguages commonly used in practice A significant amount of academic research went into formal semantics ofprogramming languages which allow execution semantics to be specified in a formal manner Results from this fieldof research have seen limited application to programming language design and implementation outside academia

Type system

A type system defines how a programming language classifies values and expressions into types how it canmanipulate those types and how they interact The goal of a type system is to verify and usually enforce a certainlevel of correctness in programs written in that language by detecting certain incorrect operations Any decidabletype system involves a trade-off while it rejects many incorrect programs it can also prohibit some correct albeitunusual programs In order to bypass this downside a number of languages have type loopholes usually uncheckedcasts that may be used by the programmer to explicitly allow a normally disallowed operation between differenttypes In most typed languages the type system is used only to type check programs but a number of languagesusually functional ones infer types relieving the programmer from the need to write type annotations The formaldesign and study of type systems is known as type theory

Programming language 5

Typed versus untyped languages

A language is typed if the specification of every operation defines types of data to which the operation is applicablewith the implication that it is not applicable to other types[29] For example the data represented by this textbetween the quotes is a string In most programming languages dividing a number by a string has nomeaning Most modern programming languages will therefore reject any program attempting to perform such anoperation In some languages the meaningless operation will be detected when the program is compiled (statictype checking) and rejected by the compiler while in others it will be detected when the program is run (dynamictype checking) resulting in a runtime exceptionA special case of typed languages are the single-type languages These are often scripting or markup languages suchas REXX or SGML and have only one data typemdashmost commonly character strings which are used for bothsymbolic and numeric dataIn contrast an untyped language such as most assembly languages allows any operation to be performed on anydata which are generally considered to be sequences of bits of various lengths[29] High-level languages which areuntyped include BCPL and some varieties of ForthIn practice while few languages are considered typed from the point of view of type theory (verifying or rejectingall operations) most modern languages offer a degree of typing[29] Many production languages provide means tobypass or subvert the type system (see casting)

Static versus dynamic typing

In static typing all expressions have their types determined prior to when the program is executed typically atcompile-time For example 1 and (2+2) are integer expressions they cannot be passed to a function that expects astring or stored in a variable that is defined to hold dates[29]

Statically typed languages can be either manifestly typed or type-inferred In the first case the programmer mustexplicitly write types at certain textual positions (for example at variable declarations) In the second case thecompiler infers the types of expressions and declarations based on context Most mainstream statically typedlanguages such as C++ C and Java are manifestly typed Complete type inference has traditionally beenassociated with less mainstream languages such as Haskell and ML However many manifestly typed languagessupport partial type inference for example Java and C both infer types in certain limited cases[30]

Dynamic typing also called latent typing determines the type-safety of operations at runtime in other words typesare associated with runtime values rather than textual expressions[29] As with type-inferred languages dynamicallytyped languages do not require the programmer to write explicit type annotations on expressions Among otherthings this may permit a single variable to refer to values of different types at different points in the programexecution However type errors cannot be automatically detected until a piece of code is actually executedpotentially making debugging more difficult Lisp Perl Python JavaScript and Ruby are dynamically typed

Weak and strong typing

Weak typing allows a value of one type to be treated as another for example treating a string as a number[29] Thiscan occasionally be useful but it can also allow some kinds of program faults to go undetected at compile time andeven at run-timeStrong typing prevents the above An attempt to perform an operation on the wrong type of value raises an error[29]

Strongly typed languages are often termed type-safe or safeAn alternative definition for weakly typed refers to languages such as Perl and JavaScript which permit a large number of implicit type conversions In JavaScript for example the expression 2 x implicitly converts x to a number and this conversion succeeds even if x is null undefined an Array or a string of letters Such implicit conversions are often useful but they can mask programming errors Strong and static are now generally considered orthogonal concepts but usage in the literature differs Some use the term strongly typed to mean

Programming language 6

strongly statically typed or even more confusingly to mean simply statically typed Thus C has been called bothstrongly typed and weakly statically typed[31][32]

Standard library and run-time systemMost programming languages have an associated core library (sometimes known as the standard library especiallyif it is included as part of the published language standard) which is conventionally made available by allimplementations of the language Core libraries typically include definitions for commonly used algorithms datastructures and mechanisms for input and outputA languages core library is often treated as part of the language by its users although the designers may have treatedit as a separate entity Many language specifications define a core that must be made available in allimplementations and in the case of standardized languages this core library may be required The line between alanguage and its core library therefore differs from language to language Indeed some languages are designed sothat the meanings of certain syntactic constructs cannot even be described without referring to the core library Forexample in Java a string literal is defined as an instance of the javalangString class similarly inSmalltalk an anonymous function expression (a block) constructs an instance of the librarys BlockContextclass Conversely Scheme contains multiple coherent subsets that suffice to construct the rest of the language aslibrary macros and so the language designers do not even bother to say which portions of the language must beimplemented as language constructs and which must be implemented as parts of a library

Design and implementationProgramming languages share properties with natural languages related to their purpose as vehicles forcommunication having a syntactic form separate from its semantics and showing language families of relatedlanguages branching one from another[3][33] But as artificial constructs they also differ in fundamental ways fromlanguages that have evolved through usage A significant difference is that a programming language can be fullydescribed and studied in its entirety since it has a precise and finite definition[34] By contrast natural languageshave changing meanings given by their users in different communities While constructed languages are alsoartificial languages designed from the ground up with a specific purpose they lack the precise and completesemantic definition that a programming language hasMany programming languages have been designed from scratch altered to meet new needs and combined withother languages Many have eventually fallen into disuse Although there have been attempts to design oneuniversal programming language that serves all purposes all of them have failed to be generally accepted as fillingthis role[35] The need for diverse programming languages arises from the diversity of contexts in which languagesare usedbull Programs range from tiny scripts written by individual hobbyists to huge systems written by hundreds of

programmersbullbull Programmers range in expertise from novices who need simplicity above all else to experts who may be

comfortable with considerable complexitybull Programs must balance speed size and simplicity on systems ranging from microcontrollers to supercomputersbullbull Programs may be written once and not change for generations or they may undergo continual modificationbullbull Finally programmers may simply differ in their tastes they may be accustomed to discussing problems and

expressing them in a particular languageOne common trend in the development of programming languages has been to add more ability to solve problems using a higher level of abstraction The earliest programming languages were tied very closely to the underlying hardware of the computer As new programming languages have developed features have been added that let programmers express ideas that are more remote from simple translation into underlying hardware instructions Because programmers are less tied to the complexity of the computer their programs can do more computing with

Programming language 7

less effort from the programmer This lets them write more functionality per time unit[36]

Natural language processors have been proposed as a way to eliminate the need for a specialized language forprogramming However this goal remains distant and its benefits are open to debate Edsger W Dijkstra took theposition that the use of a formal language is essential to prevent the introduction of meaningless constructs anddismissed natural language programming as foolish[37] Alan Perlis was similarly dismissive of the idea[38] Hybridapproaches have been taken in Structured English and SQLA languages designers and users must construct a number of artifacts that govern and enable the practice ofprogramming The most important of these artifacts are the language specification and implementation

SpecificationThe specification of a programming language is intended to provide a definition that the language users and theimplementors can use to determine whether the behavior of a program is correct given its source codeA programming language specification can take several forms including the followingbull An explicit definition of the syntax static semantics and execution semantics of the language While syntax is

commonly specified using a formal grammar semantic definitions may be written in natural language (eg as inthe C language) or a formal semantics (eg as in Standard ML[39] and Scheme[40] specifications)

bull A description of the behavior of a translator for the language (eg the C++ and Fortran specifications) Thesyntax and semantics of the language have to be inferred from this description which may be written in natural ora formal language

bull A reference or model implementation sometimes written in the language being specified (eg Prolog or ANSIREXX[41]) The syntax and semantics of the language are explicit in the behavior of the referenceimplementation

ImplementationAn implementation of a programming language provides a way to execute that program on one or moreconfigurations of hardware and software There are broadly two approaches to programming languageimplementation compilation and interpretation It is generally possible to implement a language using eithertechniqueThe output of a compiler may be executed by hardware or a program called an interpreter In some implementationsthat make use of the interpreter approach there is no distinct boundary between compiling and interpreting Forinstance some implementations of BASIC compile and then execute the source a line at a timePrograms that are executed directly on the hardware usually run several orders of magnitude faster than those that areinterpreted in softwareOne technique for improving the performance of interpreted programs is just-in-time compilation Here the virtualmachine just before execution translates the blocks of bytecode which are going to be used to machine code fordirect execution on the hardware

Programming language 8

UsageThousands of different programming languages have been created mainly in the computing field[42] Programminglanguages differ from most other forms of human expression in that they require a greater degree of precision andcompletenessWhen using a natural language to communicate with other people human authors and speakers can be ambiguousand make small errors and still expect their intent to be understood However figuratively speaking computers doexactly what they are told to do and cannot understand what code the programmer intended to write Thecombination of the language definition a program and the programs inputs must fully specify the external behaviorthat occurs when the program is executed within the domain of control of that program On the other hand ideasabout an algorithm can be communicated to humans without the precision required for execution by usingpseudocode which interleaves natural language with code written in a programming languageA programming language provides a structured mechanism for defining pieces of data and the operations ortransformations that may be carried out automatically on that data A programmer uses the abstractions present in thelanguage to represent the concepts involved in a computation These concepts are represented as a collection of thesimplest elements available (called primitives)[43] Programming is the process by which programmers combinethese primitives to compose new programs or adapt existing ones to new uses or a changing environmentPrograms for a computer might be executed in a batch process without human interaction or a user might typecommands in an interactive session of an interpreter In this case the commands are simply programs whoseexecution is chained together When a language is used to give commands to a software application (such as a shell)it is called a scripting language

Measuring language usageIt is difficult to determine which programming languages are most widely used and what usage means varies bycontext One language may occupy the greater number of programmer hours a different one have more lines ofcode and a third utilize the most CPU time Some languages are very popular for particular kinds of applicationsFor example COBOL is still strong in the corporate data center often on large mainframes Fortran in scientific andengineering applications and C in embedded applications and operating systems Other languages are regularly usedto write many different kinds of applicationsVarious methods of measuring language popularity each subject to a different bias over what is measured have beenproposedbull counting the number of job advertisements that mention the language[44]

bull the number of books sold that teach or describe the language[45]

bull estimates of the number of existing lines of code written in the languagemdashwhich may underestimate languagesnot often found in public searches[46]

bullbull counts of language references (ie to the name of the language) found using a web search engineCombining and averaging information from various internet sites langpopcom claims that[47] in 2008 the 10 mostcited programming languages are (in alphabetical order) C C++ C Java JavaScript Perl PHP Python Ruby andSQL

Programming language 9

TaxonomiesThere is no overarching classification scheme for programming languages A given programming language does notusually have a single ancestor language Languages commonly arise by combining the elements of severalpredecessor languages with new ideas in circulation at the time Ideas that originate in one language will diffusethroughout a family of related languages and then leap suddenly across familial gaps to appear in an entirelydifferent familyThe task is further complicated by the fact that languages can be classified along multiple axes For example Java isboth 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-orientedscripting languageIn broad strokes programming languages divide into programming paradigms and a classification by intendeddomain of use Traditionally programming languages have been regarded as describing computation in terms ofimperative sentences ie issuing commands These are generally called imperative programming languages A greatdeal of research in programming languages has been aimed at blurring the distinction between a program as a set ofinstructions and a program as an assertion about the desired answer which is the main feature of declarativeprogramming[48] More refined paradigms include procedural programming object-oriented programmingfunctional programming and logic programming some languages are hybrids of paradigms or multi-paradigmaticAn assembly language is not so much a paradigm as a direct model of an underlying machine architecture Bypurpose programming languages might be considered general purpose system programming languages scriptinglanguages domain-specific languages or concurrentdistributed languages (or a combination of these)[49] Somegeneral purpose languages were designed largely with educational goals[50]

A programming language may also be classified by factors unrelated to programming paradigm For instance mostprogramming languages use English language keywords while a minority do not Other languages may be classifiedas being deliberately esoteric or not

Programming language 10

History

A selection of textbooks that teach programming in languagesboth popular and obscure These are only a few of the

thousands of programming languages and dialects that havebeen designed in history

Early developments

The first programming languages predate the moderncomputer The 19th century saw the invention ofprogrammable looms and player piano scrolls both ofwhich implemented examples of domain-specificlanguages By the beginning of the twentieth century punchcards encoded data and directed mechanical processing Inthe 1930s and 1940s the formalisms of Alonzo Churchslambda calculus and Alan Turings Turing machinesprovided mathematical abstractions for expressingalgorithms the lambda calculus remains influential inlanguage design[51]

In the 1940s the first electrically powered digital computerswere created The first high-level programming language tobe designed for a computer was Plankalkuumll developed forthe German Z3 by Konrad Zuse between 1943 and 1945However it was not implemented until 1998 and 2000[52]

Programmers of early 1950s computers notably UNIVAC Iand IBM 701 used machine language programs that is thefirst generation language (1GL) 1GL programming wasquickly superseded by similarly machine-specific butmnemonic second generation languages (2GL) known asassembly languages or assembler Later in the 1950s assembly language programming which had evolved toinclude the use of macro instructions was followed by the development of third generation programminglanguages (3GL) such as FORTRAN LISP and COBOL[53] 3GLs are more abstract and are portable or at leastimplemented similarly on computers that do not support the same native machine code Updated versions of all ofthese 3GLs are still in general use and each has strongly influenced the development of later languages[54] At theend of the 1950s the language formalized as ALGOL 60 was introduced and most later programming languages arein many respects descendants of Algol[54] The format and use of the early programming languages was heavilyinfluenced by the constraints of the interface[55]

RefinementThe period from the 1960s to the late 1970s brought the development of the major language paradigms now in usethough many aspects were refinements of ideas in the very first Third-generation programming languagesbull APL introduced array programming and influenced functional programming[56]

bull PLI (NPL) was designed in the early 1960s to incorporate the best ideas from FORTRAN and COBOLbull In the 1960s Simula was the first language designed to support object-oriented programming in the mid-1970s

Smalltalk followed with the first purely object-oriented languagebull C was developed between 1969 and 1973 as a system programming language and remains popular[57]

bull Prolog designed in 1972 was the first logic programming languagebull In 1978 ML built a polymorphic type system on top of Lisp pioneering statically typed functional programming

languages

Programming language 11

Each of these languages spawned an entire family of descendants and most modern languages count at least one ofthem in their ancestryThe 1960s and 1970s also saw considerable debate over the merits of structured programming and whetherprogramming languages should be designed to support it[58] Edsger Dijkstra in a famous 1968 letter published inthe Communications of the ACM argued that GOTO statements should be eliminated from all higher levelprogramming languages[59]

The 1960s and 1970s also saw expansion of techniques that reduced the footprint of a program as well as improvedproductivity of the programmer and user The card deck for an early 4GL was a lot smaller for the same functionalityexpressed in a 3GL deck

Consolidation and growthThe 1980s were years of relative consolidation C++ combined object-oriented and systems programming TheUnited States government standardized Ada a systems programming language derived from Pascal and intended foruse by defense contractors In Japan and elsewhere vast sums were spent investigating so-called fifth generationlanguages that incorporated logic programming constructs[60] The functional languages community moved tostandardize ML and Lisp Rather than inventing new paradigms all of these movements elaborated upon the ideasinvented in the previous decadeOne important trend in language design for programming large-scale systems during the 1980s was an increasedfocus on the use of modules or large-scale organizational units of code Modula-2 Ada and ML all developednotable module systems in the 1980s although other languages such as PLI already had extensive support formodular programming Module systems were often wedded to generic programming constructs[61]

The rapid growth of the Internet in the mid-1990s created opportunities for new languages Perl originally a Unixscripting tool first released in 1987 became common in dynamic websites Java came to be used for server-sideprogramming and bytecode virtual machines became popular again in commercial settings with their promise ofWrite once run anywhere (UCSD Pascal had been popular for a time in the early 1980s) These developmentswere not fundamentally novel rather they were refinements to existing languages and paradigms and largely basedon the C family of programming languagesProgramming language evolution continues in both industry and research Current directions include security andreliability verification new kinds of modularity (mixins delegates aspects) and database integration such asMicrosofts LINQThe 4GLs are examples of languages which are domain-specific such as SQL which manipulates and returns sets ofdata rather than the scalar values which are canonical to most programming languages Perl for example with itshere document can hold multiple 4GL programs as well as multiple JavaScript programs in part of its own perlcode and use variable interpolation in the here document to support multi-language programming[62]

References[1] Aaby Anthony (2004) Introduction to Programming Languages (http burks brighton ac uk burks pcinfo progdocs plbook index

htm) [2] In mathematical terms this means the programming language is Turing-complete MacLennan Bruce J (1987) Principles of Programming

Languages Oxford University Press p 1 ISBN 0-19-511306-3[3] Steven R Fischer A history of language Reaktion Books 2003 ISBN 1-86189-080-X p 205[4] ACM SIGPLAN (2003) Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery

(http www acm org sigs sigplan sigplan_bylaws htm) Retrieved 19 June 2006 The scope of SIGPLAN is the theory designimplementation description and application of computer programming languages - languages that permit the specification of a variety ofdifferent computations thereby providing the user with significant control (immediate or delayed) over the computers operation

[5] Dean Tom (2002) Programming Robots (http www cs brown edu people tld courses cs148 02 programming html) BuildingIntelligent Robots Brown University Department of Computer Science Retrieved 23 September 2006

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 5

Typed versus untyped languages

A language is typed if the specification of every operation defines types of data to which the operation is applicablewith the implication that it is not applicable to other types[29] For example the data represented by this textbetween the quotes is a string In most programming languages dividing a number by a string has nomeaning Most modern programming languages will therefore reject any program attempting to perform such anoperation In some languages the meaningless operation will be detected when the program is compiled (statictype checking) and rejected by the compiler while in others it will be detected when the program is run (dynamictype checking) resulting in a runtime exceptionA special case of typed languages are the single-type languages These are often scripting or markup languages suchas REXX or SGML and have only one data typemdashmost commonly character strings which are used for bothsymbolic and numeric dataIn contrast an untyped language such as most assembly languages allows any operation to be performed on anydata which are generally considered to be sequences of bits of various lengths[29] High-level languages which areuntyped include BCPL and some varieties of ForthIn practice while few languages are considered typed from the point of view of type theory (verifying or rejectingall operations) most modern languages offer a degree of typing[29] Many production languages provide means tobypass or subvert the type system (see casting)

Static versus dynamic typing

In static typing all expressions have their types determined prior to when the program is executed typically atcompile-time For example 1 and (2+2) are integer expressions they cannot be passed to a function that expects astring or stored in a variable that is defined to hold dates[29]

Statically typed languages can be either manifestly typed or type-inferred In the first case the programmer mustexplicitly write types at certain textual positions (for example at variable declarations) In the second case thecompiler infers the types of expressions and declarations based on context Most mainstream statically typedlanguages such as C++ C and Java are manifestly typed Complete type inference has traditionally beenassociated with less mainstream languages such as Haskell and ML However many manifestly typed languagessupport partial type inference for example Java and C both infer types in certain limited cases[30]

Dynamic typing also called latent typing determines the type-safety of operations at runtime in other words typesare associated with runtime values rather than textual expressions[29] As with type-inferred languages dynamicallytyped languages do not require the programmer to write explicit type annotations on expressions Among otherthings this may permit a single variable to refer to values of different types at different points in the programexecution However type errors cannot be automatically detected until a piece of code is actually executedpotentially making debugging more difficult Lisp Perl Python JavaScript and Ruby are dynamically typed

Weak and strong typing

Weak typing allows a value of one type to be treated as another for example treating a string as a number[29] Thiscan occasionally be useful but it can also allow some kinds of program faults to go undetected at compile time andeven at run-timeStrong typing prevents the above An attempt to perform an operation on the wrong type of value raises an error[29]

Strongly typed languages are often termed type-safe or safeAn alternative definition for weakly typed refers to languages such as Perl and JavaScript which permit a large number of implicit type conversions In JavaScript for example the expression 2 x implicitly converts x to a number and this conversion succeeds even if x is null undefined an Array or a string of letters Such implicit conversions are often useful but they can mask programming errors Strong and static are now generally considered orthogonal concepts but usage in the literature differs Some use the term strongly typed to mean

Programming language 6

strongly statically typed or even more confusingly to mean simply statically typed Thus C has been called bothstrongly typed and weakly statically typed[31][32]

Standard library and run-time systemMost programming languages have an associated core library (sometimes known as the standard library especiallyif it is included as part of the published language standard) which is conventionally made available by allimplementations of the language Core libraries typically include definitions for commonly used algorithms datastructures and mechanisms for input and outputA languages core library is often treated as part of the language by its users although the designers may have treatedit as a separate entity Many language specifications define a core that must be made available in allimplementations and in the case of standardized languages this core library may be required The line between alanguage and its core library therefore differs from language to language Indeed some languages are designed sothat the meanings of certain syntactic constructs cannot even be described without referring to the core library Forexample in Java a string literal is defined as an instance of the javalangString class similarly inSmalltalk an anonymous function expression (a block) constructs an instance of the librarys BlockContextclass Conversely Scheme contains multiple coherent subsets that suffice to construct the rest of the language aslibrary macros and so the language designers do not even bother to say which portions of the language must beimplemented as language constructs and which must be implemented as parts of a library

Design and implementationProgramming languages share properties with natural languages related to their purpose as vehicles forcommunication having a syntactic form separate from its semantics and showing language families of relatedlanguages branching one from another[3][33] But as artificial constructs they also differ in fundamental ways fromlanguages that have evolved through usage A significant difference is that a programming language can be fullydescribed and studied in its entirety since it has a precise and finite definition[34] By contrast natural languageshave changing meanings given by their users in different communities While constructed languages are alsoartificial languages designed from the ground up with a specific purpose they lack the precise and completesemantic definition that a programming language hasMany programming languages have been designed from scratch altered to meet new needs and combined withother languages Many have eventually fallen into disuse Although there have been attempts to design oneuniversal programming language that serves all purposes all of them have failed to be generally accepted as fillingthis role[35] The need for diverse programming languages arises from the diversity of contexts in which languagesare usedbull Programs range from tiny scripts written by individual hobbyists to huge systems written by hundreds of

programmersbullbull Programmers range in expertise from novices who need simplicity above all else to experts who may be

comfortable with considerable complexitybull Programs must balance speed size and simplicity on systems ranging from microcontrollers to supercomputersbullbull Programs may be written once and not change for generations or they may undergo continual modificationbullbull Finally programmers may simply differ in their tastes they may be accustomed to discussing problems and

expressing them in a particular languageOne common trend in the development of programming languages has been to add more ability to solve problems using a higher level of abstraction The earliest programming languages were tied very closely to the underlying hardware of the computer As new programming languages have developed features have been added that let programmers express ideas that are more remote from simple translation into underlying hardware instructions Because programmers are less tied to the complexity of the computer their programs can do more computing with

Programming language 7

less effort from the programmer This lets them write more functionality per time unit[36]

Natural language processors have been proposed as a way to eliminate the need for a specialized language forprogramming However this goal remains distant and its benefits are open to debate Edsger W Dijkstra took theposition that the use of a formal language is essential to prevent the introduction of meaningless constructs anddismissed natural language programming as foolish[37] Alan Perlis was similarly dismissive of the idea[38] Hybridapproaches have been taken in Structured English and SQLA languages designers and users must construct a number of artifacts that govern and enable the practice ofprogramming The most important of these artifacts are the language specification and implementation

SpecificationThe specification of a programming language is intended to provide a definition that the language users and theimplementors can use to determine whether the behavior of a program is correct given its source codeA programming language specification can take several forms including the followingbull An explicit definition of the syntax static semantics and execution semantics of the language While syntax is

commonly specified using a formal grammar semantic definitions may be written in natural language (eg as inthe C language) or a formal semantics (eg as in Standard ML[39] and Scheme[40] specifications)

bull A description of the behavior of a translator for the language (eg the C++ and Fortran specifications) Thesyntax and semantics of the language have to be inferred from this description which may be written in natural ora formal language

bull A reference or model implementation sometimes written in the language being specified (eg Prolog or ANSIREXX[41]) The syntax and semantics of the language are explicit in the behavior of the referenceimplementation

ImplementationAn implementation of a programming language provides a way to execute that program on one or moreconfigurations of hardware and software There are broadly two approaches to programming languageimplementation compilation and interpretation It is generally possible to implement a language using eithertechniqueThe output of a compiler may be executed by hardware or a program called an interpreter In some implementationsthat make use of the interpreter approach there is no distinct boundary between compiling and interpreting Forinstance some implementations of BASIC compile and then execute the source a line at a timePrograms that are executed directly on the hardware usually run several orders of magnitude faster than those that areinterpreted in softwareOne technique for improving the performance of interpreted programs is just-in-time compilation Here the virtualmachine just before execution translates the blocks of bytecode which are going to be used to machine code fordirect execution on the hardware

Programming language 8

UsageThousands of different programming languages have been created mainly in the computing field[42] Programminglanguages differ from most other forms of human expression in that they require a greater degree of precision andcompletenessWhen using a natural language to communicate with other people human authors and speakers can be ambiguousand make small errors and still expect their intent to be understood However figuratively speaking computers doexactly what they are told to do and cannot understand what code the programmer intended to write Thecombination of the language definition a program and the programs inputs must fully specify the external behaviorthat occurs when the program is executed within the domain of control of that program On the other hand ideasabout an algorithm can be communicated to humans without the precision required for execution by usingpseudocode which interleaves natural language with code written in a programming languageA programming language provides a structured mechanism for defining pieces of data and the operations ortransformations that may be carried out automatically on that data A programmer uses the abstractions present in thelanguage to represent the concepts involved in a computation These concepts are represented as a collection of thesimplest elements available (called primitives)[43] Programming is the process by which programmers combinethese primitives to compose new programs or adapt existing ones to new uses or a changing environmentPrograms for a computer might be executed in a batch process without human interaction or a user might typecommands in an interactive session of an interpreter In this case the commands are simply programs whoseexecution is chained together When a language is used to give commands to a software application (such as a shell)it is called a scripting language

Measuring language usageIt is difficult to determine which programming languages are most widely used and what usage means varies bycontext One language may occupy the greater number of programmer hours a different one have more lines ofcode and a third utilize the most CPU time Some languages are very popular for particular kinds of applicationsFor example COBOL is still strong in the corporate data center often on large mainframes Fortran in scientific andengineering applications and C in embedded applications and operating systems Other languages are regularly usedto write many different kinds of applicationsVarious methods of measuring language popularity each subject to a different bias over what is measured have beenproposedbull counting the number of job advertisements that mention the language[44]

bull the number of books sold that teach or describe the language[45]

bull estimates of the number of existing lines of code written in the languagemdashwhich may underestimate languagesnot often found in public searches[46]

bullbull counts of language references (ie to the name of the language) found using a web search engineCombining and averaging information from various internet sites langpopcom claims that[47] in 2008 the 10 mostcited programming languages are (in alphabetical order) C C++ C Java JavaScript Perl PHP Python Ruby andSQL

Programming language 9

TaxonomiesThere is no overarching classification scheme for programming languages A given programming language does notusually have a single ancestor language Languages commonly arise by combining the elements of severalpredecessor languages with new ideas in circulation at the time Ideas that originate in one language will diffusethroughout a family of related languages and then leap suddenly across familial gaps to appear in an entirelydifferent familyThe task is further complicated by the fact that languages can be classified along multiple axes For example Java isboth 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-orientedscripting languageIn broad strokes programming languages divide into programming paradigms and a classification by intendeddomain of use Traditionally programming languages have been regarded as describing computation in terms ofimperative sentences ie issuing commands These are generally called imperative programming languages A greatdeal of research in programming languages has been aimed at blurring the distinction between a program as a set ofinstructions and a program as an assertion about the desired answer which is the main feature of declarativeprogramming[48] More refined paradigms include procedural programming object-oriented programmingfunctional programming and logic programming some languages are hybrids of paradigms or multi-paradigmaticAn assembly language is not so much a paradigm as a direct model of an underlying machine architecture Bypurpose programming languages might be considered general purpose system programming languages scriptinglanguages domain-specific languages or concurrentdistributed languages (or a combination of these)[49] Somegeneral purpose languages were designed largely with educational goals[50]

A programming language may also be classified by factors unrelated to programming paradigm For instance mostprogramming languages use English language keywords while a minority do not Other languages may be classifiedas being deliberately esoteric or not

Programming language 10

History

A selection of textbooks that teach programming in languagesboth popular and obscure These are only a few of the

thousands of programming languages and dialects that havebeen designed in history

Early developments

The first programming languages predate the moderncomputer The 19th century saw the invention ofprogrammable looms and player piano scrolls both ofwhich implemented examples of domain-specificlanguages By the beginning of the twentieth century punchcards encoded data and directed mechanical processing Inthe 1930s and 1940s the formalisms of Alonzo Churchslambda calculus and Alan Turings Turing machinesprovided mathematical abstractions for expressingalgorithms the lambda calculus remains influential inlanguage design[51]

In the 1940s the first electrically powered digital computerswere created The first high-level programming language tobe designed for a computer was Plankalkuumll developed forthe German Z3 by Konrad Zuse between 1943 and 1945However it was not implemented until 1998 and 2000[52]

Programmers of early 1950s computers notably UNIVAC Iand IBM 701 used machine language programs that is thefirst generation language (1GL) 1GL programming wasquickly superseded by similarly machine-specific butmnemonic second generation languages (2GL) known asassembly languages or assembler Later in the 1950s assembly language programming which had evolved toinclude the use of macro instructions was followed by the development of third generation programminglanguages (3GL) such as FORTRAN LISP and COBOL[53] 3GLs are more abstract and are portable or at leastimplemented similarly on computers that do not support the same native machine code Updated versions of all ofthese 3GLs are still in general use and each has strongly influenced the development of later languages[54] At theend of the 1950s the language formalized as ALGOL 60 was introduced and most later programming languages arein many respects descendants of Algol[54] The format and use of the early programming languages was heavilyinfluenced by the constraints of the interface[55]

RefinementThe period from the 1960s to the late 1970s brought the development of the major language paradigms now in usethough many aspects were refinements of ideas in the very first Third-generation programming languagesbull APL introduced array programming and influenced functional programming[56]

bull PLI (NPL) was designed in the early 1960s to incorporate the best ideas from FORTRAN and COBOLbull In the 1960s Simula was the first language designed to support object-oriented programming in the mid-1970s

Smalltalk followed with the first purely object-oriented languagebull C was developed between 1969 and 1973 as a system programming language and remains popular[57]

bull Prolog designed in 1972 was the first logic programming languagebull In 1978 ML built a polymorphic type system on top of Lisp pioneering statically typed functional programming

languages

Programming language 11

Each of these languages spawned an entire family of descendants and most modern languages count at least one ofthem in their ancestryThe 1960s and 1970s also saw considerable debate over the merits of structured programming and whetherprogramming languages should be designed to support it[58] Edsger Dijkstra in a famous 1968 letter published inthe Communications of the ACM argued that GOTO statements should be eliminated from all higher levelprogramming languages[59]

The 1960s and 1970s also saw expansion of techniques that reduced the footprint of a program as well as improvedproductivity of the programmer and user The card deck for an early 4GL was a lot smaller for the same functionalityexpressed in a 3GL deck

Consolidation and growthThe 1980s were years of relative consolidation C++ combined object-oriented and systems programming TheUnited States government standardized Ada a systems programming language derived from Pascal and intended foruse by defense contractors In Japan and elsewhere vast sums were spent investigating so-called fifth generationlanguages that incorporated logic programming constructs[60] The functional languages community moved tostandardize ML and Lisp Rather than inventing new paradigms all of these movements elaborated upon the ideasinvented in the previous decadeOne important trend in language design for programming large-scale systems during the 1980s was an increasedfocus on the use of modules or large-scale organizational units of code Modula-2 Ada and ML all developednotable module systems in the 1980s although other languages such as PLI already had extensive support formodular programming Module systems were often wedded to generic programming constructs[61]

The rapid growth of the Internet in the mid-1990s created opportunities for new languages Perl originally a Unixscripting tool first released in 1987 became common in dynamic websites Java came to be used for server-sideprogramming and bytecode virtual machines became popular again in commercial settings with their promise ofWrite once run anywhere (UCSD Pascal had been popular for a time in the early 1980s) These developmentswere not fundamentally novel rather they were refinements to existing languages and paradigms and largely basedon the C family of programming languagesProgramming language evolution continues in both industry and research Current directions include security andreliability verification new kinds of modularity (mixins delegates aspects) and database integration such asMicrosofts LINQThe 4GLs are examples of languages which are domain-specific such as SQL which manipulates and returns sets ofdata rather than the scalar values which are canonical to most programming languages Perl for example with itshere document can hold multiple 4GL programs as well as multiple JavaScript programs in part of its own perlcode and use variable interpolation in the here document to support multi-language programming[62]

References[1] Aaby Anthony (2004) Introduction to Programming Languages (http burks brighton ac uk burks pcinfo progdocs plbook index

htm) [2] In mathematical terms this means the programming language is Turing-complete MacLennan Bruce J (1987) Principles of Programming

Languages Oxford University Press p 1 ISBN 0-19-511306-3[3] Steven R Fischer A history of language Reaktion Books 2003 ISBN 1-86189-080-X p 205[4] ACM SIGPLAN (2003) Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery

(http www acm org sigs sigplan sigplan_bylaws htm) Retrieved 19 June 2006 The scope of SIGPLAN is the theory designimplementation description and application of computer programming languages - languages that permit the specification of a variety ofdifferent computations thereby providing the user with significant control (immediate or delayed) over the computers operation

[5] Dean Tom (2002) Programming Robots (http www cs brown edu people tld courses cs148 02 programming html) BuildingIntelligent Robots Brown University Department of Computer Science Retrieved 23 September 2006

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 6

strongly statically typed or even more confusingly to mean simply statically typed Thus C has been called bothstrongly typed and weakly statically typed[31][32]

Standard library and run-time systemMost programming languages have an associated core library (sometimes known as the standard library especiallyif it is included as part of the published language standard) which is conventionally made available by allimplementations of the language Core libraries typically include definitions for commonly used algorithms datastructures and mechanisms for input and outputA languages core library is often treated as part of the language by its users although the designers may have treatedit as a separate entity Many language specifications define a core that must be made available in allimplementations and in the case of standardized languages this core library may be required The line between alanguage and its core library therefore differs from language to language Indeed some languages are designed sothat the meanings of certain syntactic constructs cannot even be described without referring to the core library Forexample in Java a string literal is defined as an instance of the javalangString class similarly inSmalltalk an anonymous function expression (a block) constructs an instance of the librarys BlockContextclass Conversely Scheme contains multiple coherent subsets that suffice to construct the rest of the language aslibrary macros and so the language designers do not even bother to say which portions of the language must beimplemented as language constructs and which must be implemented as parts of a library

Design and implementationProgramming languages share properties with natural languages related to their purpose as vehicles forcommunication having a syntactic form separate from its semantics and showing language families of relatedlanguages branching one from another[3][33] But as artificial constructs they also differ in fundamental ways fromlanguages that have evolved through usage A significant difference is that a programming language can be fullydescribed and studied in its entirety since it has a precise and finite definition[34] By contrast natural languageshave changing meanings given by their users in different communities While constructed languages are alsoartificial languages designed from the ground up with a specific purpose they lack the precise and completesemantic definition that a programming language hasMany programming languages have been designed from scratch altered to meet new needs and combined withother languages Many have eventually fallen into disuse Although there have been attempts to design oneuniversal programming language that serves all purposes all of them have failed to be generally accepted as fillingthis role[35] The need for diverse programming languages arises from the diversity of contexts in which languagesare usedbull Programs range from tiny scripts written by individual hobbyists to huge systems written by hundreds of

programmersbullbull Programmers range in expertise from novices who need simplicity above all else to experts who may be

comfortable with considerable complexitybull Programs must balance speed size and simplicity on systems ranging from microcontrollers to supercomputersbullbull Programs may be written once and not change for generations or they may undergo continual modificationbullbull Finally programmers may simply differ in their tastes they may be accustomed to discussing problems and

expressing them in a particular languageOne common trend in the development of programming languages has been to add more ability to solve problems using a higher level of abstraction The earliest programming languages were tied very closely to the underlying hardware of the computer As new programming languages have developed features have been added that let programmers express ideas that are more remote from simple translation into underlying hardware instructions Because programmers are less tied to the complexity of the computer their programs can do more computing with

Programming language 7

less effort from the programmer This lets them write more functionality per time unit[36]

Natural language processors have been proposed as a way to eliminate the need for a specialized language forprogramming However this goal remains distant and its benefits are open to debate Edsger W Dijkstra took theposition that the use of a formal language is essential to prevent the introduction of meaningless constructs anddismissed natural language programming as foolish[37] Alan Perlis was similarly dismissive of the idea[38] Hybridapproaches have been taken in Structured English and SQLA languages designers and users must construct a number of artifacts that govern and enable the practice ofprogramming The most important of these artifacts are the language specification and implementation

SpecificationThe specification of a programming language is intended to provide a definition that the language users and theimplementors can use to determine whether the behavior of a program is correct given its source codeA programming language specification can take several forms including the followingbull An explicit definition of the syntax static semantics and execution semantics of the language While syntax is

commonly specified using a formal grammar semantic definitions may be written in natural language (eg as inthe C language) or a formal semantics (eg as in Standard ML[39] and Scheme[40] specifications)

bull A description of the behavior of a translator for the language (eg the C++ and Fortran specifications) Thesyntax and semantics of the language have to be inferred from this description which may be written in natural ora formal language

bull A reference or model implementation sometimes written in the language being specified (eg Prolog or ANSIREXX[41]) The syntax and semantics of the language are explicit in the behavior of the referenceimplementation

ImplementationAn implementation of a programming language provides a way to execute that program on one or moreconfigurations of hardware and software There are broadly two approaches to programming languageimplementation compilation and interpretation It is generally possible to implement a language using eithertechniqueThe output of a compiler may be executed by hardware or a program called an interpreter In some implementationsthat make use of the interpreter approach there is no distinct boundary between compiling and interpreting Forinstance some implementations of BASIC compile and then execute the source a line at a timePrograms that are executed directly on the hardware usually run several orders of magnitude faster than those that areinterpreted in softwareOne technique for improving the performance of interpreted programs is just-in-time compilation Here the virtualmachine just before execution translates the blocks of bytecode which are going to be used to machine code fordirect execution on the hardware

Programming language 8

UsageThousands of different programming languages have been created mainly in the computing field[42] Programminglanguages differ from most other forms of human expression in that they require a greater degree of precision andcompletenessWhen using a natural language to communicate with other people human authors and speakers can be ambiguousand make small errors and still expect their intent to be understood However figuratively speaking computers doexactly what they are told to do and cannot understand what code the programmer intended to write Thecombination of the language definition a program and the programs inputs must fully specify the external behaviorthat occurs when the program is executed within the domain of control of that program On the other hand ideasabout an algorithm can be communicated to humans without the precision required for execution by usingpseudocode which interleaves natural language with code written in a programming languageA programming language provides a structured mechanism for defining pieces of data and the operations ortransformations that may be carried out automatically on that data A programmer uses the abstractions present in thelanguage to represent the concepts involved in a computation These concepts are represented as a collection of thesimplest elements available (called primitives)[43] Programming is the process by which programmers combinethese primitives to compose new programs or adapt existing ones to new uses or a changing environmentPrograms for a computer might be executed in a batch process without human interaction or a user might typecommands in an interactive session of an interpreter In this case the commands are simply programs whoseexecution is chained together When a language is used to give commands to a software application (such as a shell)it is called a scripting language

Measuring language usageIt is difficult to determine which programming languages are most widely used and what usage means varies bycontext One language may occupy the greater number of programmer hours a different one have more lines ofcode and a third utilize the most CPU time Some languages are very popular for particular kinds of applicationsFor example COBOL is still strong in the corporate data center often on large mainframes Fortran in scientific andengineering applications and C in embedded applications and operating systems Other languages are regularly usedto write many different kinds of applicationsVarious methods of measuring language popularity each subject to a different bias over what is measured have beenproposedbull counting the number of job advertisements that mention the language[44]

bull the number of books sold that teach or describe the language[45]

bull estimates of the number of existing lines of code written in the languagemdashwhich may underestimate languagesnot often found in public searches[46]

bullbull counts of language references (ie to the name of the language) found using a web search engineCombining and averaging information from various internet sites langpopcom claims that[47] in 2008 the 10 mostcited programming languages are (in alphabetical order) C C++ C Java JavaScript Perl PHP Python Ruby andSQL

Programming language 9

TaxonomiesThere is no overarching classification scheme for programming languages A given programming language does notusually have a single ancestor language Languages commonly arise by combining the elements of severalpredecessor languages with new ideas in circulation at the time Ideas that originate in one language will diffusethroughout a family of related languages and then leap suddenly across familial gaps to appear in an entirelydifferent familyThe task is further complicated by the fact that languages can be classified along multiple axes For example Java isboth 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-orientedscripting languageIn broad strokes programming languages divide into programming paradigms and a classification by intendeddomain of use Traditionally programming languages have been regarded as describing computation in terms ofimperative sentences ie issuing commands These are generally called imperative programming languages A greatdeal of research in programming languages has been aimed at blurring the distinction between a program as a set ofinstructions and a program as an assertion about the desired answer which is the main feature of declarativeprogramming[48] More refined paradigms include procedural programming object-oriented programmingfunctional programming and logic programming some languages are hybrids of paradigms or multi-paradigmaticAn assembly language is not so much a paradigm as a direct model of an underlying machine architecture Bypurpose programming languages might be considered general purpose system programming languages scriptinglanguages domain-specific languages or concurrentdistributed languages (or a combination of these)[49] Somegeneral purpose languages were designed largely with educational goals[50]

A programming language may also be classified by factors unrelated to programming paradigm For instance mostprogramming languages use English language keywords while a minority do not Other languages may be classifiedas being deliberately esoteric or not

Programming language 10

History

A selection of textbooks that teach programming in languagesboth popular and obscure These are only a few of the

thousands of programming languages and dialects that havebeen designed in history

Early developments

The first programming languages predate the moderncomputer The 19th century saw the invention ofprogrammable looms and player piano scrolls both ofwhich implemented examples of domain-specificlanguages By the beginning of the twentieth century punchcards encoded data and directed mechanical processing Inthe 1930s and 1940s the formalisms of Alonzo Churchslambda calculus and Alan Turings Turing machinesprovided mathematical abstractions for expressingalgorithms the lambda calculus remains influential inlanguage design[51]

In the 1940s the first electrically powered digital computerswere created The first high-level programming language tobe designed for a computer was Plankalkuumll developed forthe German Z3 by Konrad Zuse between 1943 and 1945However it was not implemented until 1998 and 2000[52]

Programmers of early 1950s computers notably UNIVAC Iand IBM 701 used machine language programs that is thefirst generation language (1GL) 1GL programming wasquickly superseded by similarly machine-specific butmnemonic second generation languages (2GL) known asassembly languages or assembler Later in the 1950s assembly language programming which had evolved toinclude the use of macro instructions was followed by the development of third generation programminglanguages (3GL) such as FORTRAN LISP and COBOL[53] 3GLs are more abstract and are portable or at leastimplemented similarly on computers that do not support the same native machine code Updated versions of all ofthese 3GLs are still in general use and each has strongly influenced the development of later languages[54] At theend of the 1950s the language formalized as ALGOL 60 was introduced and most later programming languages arein many respects descendants of Algol[54] The format and use of the early programming languages was heavilyinfluenced by the constraints of the interface[55]

RefinementThe period from the 1960s to the late 1970s brought the development of the major language paradigms now in usethough many aspects were refinements of ideas in the very first Third-generation programming languagesbull APL introduced array programming and influenced functional programming[56]

bull PLI (NPL) was designed in the early 1960s to incorporate the best ideas from FORTRAN and COBOLbull In the 1960s Simula was the first language designed to support object-oriented programming in the mid-1970s

Smalltalk followed with the first purely object-oriented languagebull C was developed between 1969 and 1973 as a system programming language and remains popular[57]

bull Prolog designed in 1972 was the first logic programming languagebull In 1978 ML built a polymorphic type system on top of Lisp pioneering statically typed functional programming

languages

Programming language 11

Each of these languages spawned an entire family of descendants and most modern languages count at least one ofthem in their ancestryThe 1960s and 1970s also saw considerable debate over the merits of structured programming and whetherprogramming languages should be designed to support it[58] Edsger Dijkstra in a famous 1968 letter published inthe Communications of the ACM argued that GOTO statements should be eliminated from all higher levelprogramming languages[59]

The 1960s and 1970s also saw expansion of techniques that reduced the footprint of a program as well as improvedproductivity of the programmer and user The card deck for an early 4GL was a lot smaller for the same functionalityexpressed in a 3GL deck

Consolidation and growthThe 1980s were years of relative consolidation C++ combined object-oriented and systems programming TheUnited States government standardized Ada a systems programming language derived from Pascal and intended foruse by defense contractors In Japan and elsewhere vast sums were spent investigating so-called fifth generationlanguages that incorporated logic programming constructs[60] The functional languages community moved tostandardize ML and Lisp Rather than inventing new paradigms all of these movements elaborated upon the ideasinvented in the previous decadeOne important trend in language design for programming large-scale systems during the 1980s was an increasedfocus on the use of modules or large-scale organizational units of code Modula-2 Ada and ML all developednotable module systems in the 1980s although other languages such as PLI already had extensive support formodular programming Module systems were often wedded to generic programming constructs[61]

The rapid growth of the Internet in the mid-1990s created opportunities for new languages Perl originally a Unixscripting tool first released in 1987 became common in dynamic websites Java came to be used for server-sideprogramming and bytecode virtual machines became popular again in commercial settings with their promise ofWrite once run anywhere (UCSD Pascal had been popular for a time in the early 1980s) These developmentswere not fundamentally novel rather they were refinements to existing languages and paradigms and largely basedon the C family of programming languagesProgramming language evolution continues in both industry and research Current directions include security andreliability verification new kinds of modularity (mixins delegates aspects) and database integration such asMicrosofts LINQThe 4GLs are examples of languages which are domain-specific such as SQL which manipulates and returns sets ofdata rather than the scalar values which are canonical to most programming languages Perl for example with itshere document can hold multiple 4GL programs as well as multiple JavaScript programs in part of its own perlcode and use variable interpolation in the here document to support multi-language programming[62]

References[1] Aaby Anthony (2004) Introduction to Programming Languages (http burks brighton ac uk burks pcinfo progdocs plbook index

htm) [2] In mathematical terms this means the programming language is Turing-complete MacLennan Bruce J (1987) Principles of Programming

Languages Oxford University Press p 1 ISBN 0-19-511306-3[3] Steven R Fischer A history of language Reaktion Books 2003 ISBN 1-86189-080-X p 205[4] ACM SIGPLAN (2003) Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery

(http www acm org sigs sigplan sigplan_bylaws htm) Retrieved 19 June 2006 The scope of SIGPLAN is the theory designimplementation description and application of computer programming languages - languages that permit the specification of a variety ofdifferent computations thereby providing the user with significant control (immediate or delayed) over the computers operation

[5] Dean Tom (2002) Programming Robots (http www cs brown edu people tld courses cs148 02 programming html) BuildingIntelligent Robots Brown University Department of Computer Science Retrieved 23 September 2006

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 7

less effort from the programmer This lets them write more functionality per time unit[36]

Natural language processors have been proposed as a way to eliminate the need for a specialized language forprogramming However this goal remains distant and its benefits are open to debate Edsger W Dijkstra took theposition that the use of a formal language is essential to prevent the introduction of meaningless constructs anddismissed natural language programming as foolish[37] Alan Perlis was similarly dismissive of the idea[38] Hybridapproaches have been taken in Structured English and SQLA languages designers and users must construct a number of artifacts that govern and enable the practice ofprogramming The most important of these artifacts are the language specification and implementation

SpecificationThe specification of a programming language is intended to provide a definition that the language users and theimplementors can use to determine whether the behavior of a program is correct given its source codeA programming language specification can take several forms including the followingbull An explicit definition of the syntax static semantics and execution semantics of the language While syntax is

commonly specified using a formal grammar semantic definitions may be written in natural language (eg as inthe C language) or a formal semantics (eg as in Standard ML[39] and Scheme[40] specifications)

bull A description of the behavior of a translator for the language (eg the C++ and Fortran specifications) Thesyntax and semantics of the language have to be inferred from this description which may be written in natural ora formal language

bull A reference or model implementation sometimes written in the language being specified (eg Prolog or ANSIREXX[41]) The syntax and semantics of the language are explicit in the behavior of the referenceimplementation

ImplementationAn implementation of a programming language provides a way to execute that program on one or moreconfigurations of hardware and software There are broadly two approaches to programming languageimplementation compilation and interpretation It is generally possible to implement a language using eithertechniqueThe output of a compiler may be executed by hardware or a program called an interpreter In some implementationsthat make use of the interpreter approach there is no distinct boundary between compiling and interpreting Forinstance some implementations of BASIC compile and then execute the source a line at a timePrograms that are executed directly on the hardware usually run several orders of magnitude faster than those that areinterpreted in softwareOne technique for improving the performance of interpreted programs is just-in-time compilation Here the virtualmachine just before execution translates the blocks of bytecode which are going to be used to machine code fordirect execution on the hardware

Programming language 8

UsageThousands of different programming languages have been created mainly in the computing field[42] Programminglanguages differ from most other forms of human expression in that they require a greater degree of precision andcompletenessWhen using a natural language to communicate with other people human authors and speakers can be ambiguousand make small errors and still expect their intent to be understood However figuratively speaking computers doexactly what they are told to do and cannot understand what code the programmer intended to write Thecombination of the language definition a program and the programs inputs must fully specify the external behaviorthat occurs when the program is executed within the domain of control of that program On the other hand ideasabout an algorithm can be communicated to humans without the precision required for execution by usingpseudocode which interleaves natural language with code written in a programming languageA programming language provides a structured mechanism for defining pieces of data and the operations ortransformations that may be carried out automatically on that data A programmer uses the abstractions present in thelanguage to represent the concepts involved in a computation These concepts are represented as a collection of thesimplest elements available (called primitives)[43] Programming is the process by which programmers combinethese primitives to compose new programs or adapt existing ones to new uses or a changing environmentPrograms for a computer might be executed in a batch process without human interaction or a user might typecommands in an interactive session of an interpreter In this case the commands are simply programs whoseexecution is chained together When a language is used to give commands to a software application (such as a shell)it is called a scripting language

Measuring language usageIt is difficult to determine which programming languages are most widely used and what usage means varies bycontext One language may occupy the greater number of programmer hours a different one have more lines ofcode and a third utilize the most CPU time Some languages are very popular for particular kinds of applicationsFor example COBOL is still strong in the corporate data center often on large mainframes Fortran in scientific andengineering applications and C in embedded applications and operating systems Other languages are regularly usedto write many different kinds of applicationsVarious methods of measuring language popularity each subject to a different bias over what is measured have beenproposedbull counting the number of job advertisements that mention the language[44]

bull the number of books sold that teach or describe the language[45]

bull estimates of the number of existing lines of code written in the languagemdashwhich may underestimate languagesnot often found in public searches[46]

bullbull counts of language references (ie to the name of the language) found using a web search engineCombining and averaging information from various internet sites langpopcom claims that[47] in 2008 the 10 mostcited programming languages are (in alphabetical order) C C++ C Java JavaScript Perl PHP Python Ruby andSQL

Programming language 9

TaxonomiesThere is no overarching classification scheme for programming languages A given programming language does notusually have a single ancestor language Languages commonly arise by combining the elements of severalpredecessor languages with new ideas in circulation at the time Ideas that originate in one language will diffusethroughout a family of related languages and then leap suddenly across familial gaps to appear in an entirelydifferent familyThe task is further complicated by the fact that languages can be classified along multiple axes For example Java isboth 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-orientedscripting languageIn broad strokes programming languages divide into programming paradigms and a classification by intendeddomain of use Traditionally programming languages have been regarded as describing computation in terms ofimperative sentences ie issuing commands These are generally called imperative programming languages A greatdeal of research in programming languages has been aimed at blurring the distinction between a program as a set ofinstructions and a program as an assertion about the desired answer which is the main feature of declarativeprogramming[48] More refined paradigms include procedural programming object-oriented programmingfunctional programming and logic programming some languages are hybrids of paradigms or multi-paradigmaticAn assembly language is not so much a paradigm as a direct model of an underlying machine architecture Bypurpose programming languages might be considered general purpose system programming languages scriptinglanguages domain-specific languages or concurrentdistributed languages (or a combination of these)[49] Somegeneral purpose languages were designed largely with educational goals[50]

A programming language may also be classified by factors unrelated to programming paradigm For instance mostprogramming languages use English language keywords while a minority do not Other languages may be classifiedas being deliberately esoteric or not

Programming language 10

History

A selection of textbooks that teach programming in languagesboth popular and obscure These are only a few of the

thousands of programming languages and dialects that havebeen designed in history

Early developments

The first programming languages predate the moderncomputer The 19th century saw the invention ofprogrammable looms and player piano scrolls both ofwhich implemented examples of domain-specificlanguages By the beginning of the twentieth century punchcards encoded data and directed mechanical processing Inthe 1930s and 1940s the formalisms of Alonzo Churchslambda calculus and Alan Turings Turing machinesprovided mathematical abstractions for expressingalgorithms the lambda calculus remains influential inlanguage design[51]

In the 1940s the first electrically powered digital computerswere created The first high-level programming language tobe designed for a computer was Plankalkuumll developed forthe German Z3 by Konrad Zuse between 1943 and 1945However it was not implemented until 1998 and 2000[52]

Programmers of early 1950s computers notably UNIVAC Iand IBM 701 used machine language programs that is thefirst generation language (1GL) 1GL programming wasquickly superseded by similarly machine-specific butmnemonic second generation languages (2GL) known asassembly languages or assembler Later in the 1950s assembly language programming which had evolved toinclude the use of macro instructions was followed by the development of third generation programminglanguages (3GL) such as FORTRAN LISP and COBOL[53] 3GLs are more abstract and are portable or at leastimplemented similarly on computers that do not support the same native machine code Updated versions of all ofthese 3GLs are still in general use and each has strongly influenced the development of later languages[54] At theend of the 1950s the language formalized as ALGOL 60 was introduced and most later programming languages arein many respects descendants of Algol[54] The format and use of the early programming languages was heavilyinfluenced by the constraints of the interface[55]

RefinementThe period from the 1960s to the late 1970s brought the development of the major language paradigms now in usethough many aspects were refinements of ideas in the very first Third-generation programming languagesbull APL introduced array programming and influenced functional programming[56]

bull PLI (NPL) was designed in the early 1960s to incorporate the best ideas from FORTRAN and COBOLbull In the 1960s Simula was the first language designed to support object-oriented programming in the mid-1970s

Smalltalk followed with the first purely object-oriented languagebull C was developed between 1969 and 1973 as a system programming language and remains popular[57]

bull Prolog designed in 1972 was the first logic programming languagebull In 1978 ML built a polymorphic type system on top of Lisp pioneering statically typed functional programming

languages

Programming language 11

Each of these languages spawned an entire family of descendants and most modern languages count at least one ofthem in their ancestryThe 1960s and 1970s also saw considerable debate over the merits of structured programming and whetherprogramming languages should be designed to support it[58] Edsger Dijkstra in a famous 1968 letter published inthe Communications of the ACM argued that GOTO statements should be eliminated from all higher levelprogramming languages[59]

The 1960s and 1970s also saw expansion of techniques that reduced the footprint of a program as well as improvedproductivity of the programmer and user The card deck for an early 4GL was a lot smaller for the same functionalityexpressed in a 3GL deck

Consolidation and growthThe 1980s were years of relative consolidation C++ combined object-oriented and systems programming TheUnited States government standardized Ada a systems programming language derived from Pascal and intended foruse by defense contractors In Japan and elsewhere vast sums were spent investigating so-called fifth generationlanguages that incorporated logic programming constructs[60] The functional languages community moved tostandardize ML and Lisp Rather than inventing new paradigms all of these movements elaborated upon the ideasinvented in the previous decadeOne important trend in language design for programming large-scale systems during the 1980s was an increasedfocus on the use of modules or large-scale organizational units of code Modula-2 Ada and ML all developednotable module systems in the 1980s although other languages such as PLI already had extensive support formodular programming Module systems were often wedded to generic programming constructs[61]

The rapid growth of the Internet in the mid-1990s created opportunities for new languages Perl originally a Unixscripting tool first released in 1987 became common in dynamic websites Java came to be used for server-sideprogramming and bytecode virtual machines became popular again in commercial settings with their promise ofWrite once run anywhere (UCSD Pascal had been popular for a time in the early 1980s) These developmentswere not fundamentally novel rather they were refinements to existing languages and paradigms and largely basedon the C family of programming languagesProgramming language evolution continues in both industry and research Current directions include security andreliability verification new kinds of modularity (mixins delegates aspects) and database integration such asMicrosofts LINQThe 4GLs are examples of languages which are domain-specific such as SQL which manipulates and returns sets ofdata rather than the scalar values which are canonical to most programming languages Perl for example with itshere document can hold multiple 4GL programs as well as multiple JavaScript programs in part of its own perlcode and use variable interpolation in the here document to support multi-language programming[62]

References[1] Aaby Anthony (2004) Introduction to Programming Languages (http burks brighton ac uk burks pcinfo progdocs plbook index

htm) [2] In mathematical terms this means the programming language is Turing-complete MacLennan Bruce J (1987) Principles of Programming

Languages Oxford University Press p 1 ISBN 0-19-511306-3[3] Steven R Fischer A history of language Reaktion Books 2003 ISBN 1-86189-080-X p 205[4] ACM SIGPLAN (2003) Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery

(http www acm org sigs sigplan sigplan_bylaws htm) Retrieved 19 June 2006 The scope of SIGPLAN is the theory designimplementation description and application of computer programming languages - languages that permit the specification of a variety ofdifferent computations thereby providing the user with significant control (immediate or delayed) over the computers operation

[5] Dean Tom (2002) Programming Robots (http www cs brown edu people tld courses cs148 02 programming html) BuildingIntelligent Robots Brown University Department of Computer Science Retrieved 23 September 2006

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 8

UsageThousands of different programming languages have been created mainly in the computing field[42] Programminglanguages differ from most other forms of human expression in that they require a greater degree of precision andcompletenessWhen using a natural language to communicate with other people human authors and speakers can be ambiguousand make small errors and still expect their intent to be understood However figuratively speaking computers doexactly what they are told to do and cannot understand what code the programmer intended to write Thecombination of the language definition a program and the programs inputs must fully specify the external behaviorthat occurs when the program is executed within the domain of control of that program On the other hand ideasabout an algorithm can be communicated to humans without the precision required for execution by usingpseudocode which interleaves natural language with code written in a programming languageA programming language provides a structured mechanism for defining pieces of data and the operations ortransformations that may be carried out automatically on that data A programmer uses the abstractions present in thelanguage to represent the concepts involved in a computation These concepts are represented as a collection of thesimplest elements available (called primitives)[43] Programming is the process by which programmers combinethese primitives to compose new programs or adapt existing ones to new uses or a changing environmentPrograms for a computer might be executed in a batch process without human interaction or a user might typecommands in an interactive session of an interpreter In this case the commands are simply programs whoseexecution is chained together When a language is used to give commands to a software application (such as a shell)it is called a scripting language

Measuring language usageIt is difficult to determine which programming languages are most widely used and what usage means varies bycontext One language may occupy the greater number of programmer hours a different one have more lines ofcode and a third utilize the most CPU time Some languages are very popular for particular kinds of applicationsFor example COBOL is still strong in the corporate data center often on large mainframes Fortran in scientific andengineering applications and C in embedded applications and operating systems Other languages are regularly usedto write many different kinds of applicationsVarious methods of measuring language popularity each subject to a different bias over what is measured have beenproposedbull counting the number of job advertisements that mention the language[44]

bull the number of books sold that teach or describe the language[45]

bull estimates of the number of existing lines of code written in the languagemdashwhich may underestimate languagesnot often found in public searches[46]

bullbull counts of language references (ie to the name of the language) found using a web search engineCombining and averaging information from various internet sites langpopcom claims that[47] in 2008 the 10 mostcited programming languages are (in alphabetical order) C C++ C Java JavaScript Perl PHP Python Ruby andSQL

Programming language 9

TaxonomiesThere is no overarching classification scheme for programming languages A given programming language does notusually have a single ancestor language Languages commonly arise by combining the elements of severalpredecessor languages with new ideas in circulation at the time Ideas that originate in one language will diffusethroughout a family of related languages and then leap suddenly across familial gaps to appear in an entirelydifferent familyThe task is further complicated by the fact that languages can be classified along multiple axes For example Java isboth 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-orientedscripting languageIn broad strokes programming languages divide into programming paradigms and a classification by intendeddomain of use Traditionally programming languages have been regarded as describing computation in terms ofimperative sentences ie issuing commands These are generally called imperative programming languages A greatdeal of research in programming languages has been aimed at blurring the distinction between a program as a set ofinstructions and a program as an assertion about the desired answer which is the main feature of declarativeprogramming[48] More refined paradigms include procedural programming object-oriented programmingfunctional programming and logic programming some languages are hybrids of paradigms or multi-paradigmaticAn assembly language is not so much a paradigm as a direct model of an underlying machine architecture Bypurpose programming languages might be considered general purpose system programming languages scriptinglanguages domain-specific languages or concurrentdistributed languages (or a combination of these)[49] Somegeneral purpose languages were designed largely with educational goals[50]

A programming language may also be classified by factors unrelated to programming paradigm For instance mostprogramming languages use English language keywords while a minority do not Other languages may be classifiedas being deliberately esoteric or not

Programming language 10

History

A selection of textbooks that teach programming in languagesboth popular and obscure These are only a few of the

thousands of programming languages and dialects that havebeen designed in history

Early developments

The first programming languages predate the moderncomputer The 19th century saw the invention ofprogrammable looms and player piano scrolls both ofwhich implemented examples of domain-specificlanguages By the beginning of the twentieth century punchcards encoded data and directed mechanical processing Inthe 1930s and 1940s the formalisms of Alonzo Churchslambda calculus and Alan Turings Turing machinesprovided mathematical abstractions for expressingalgorithms the lambda calculus remains influential inlanguage design[51]

In the 1940s the first electrically powered digital computerswere created The first high-level programming language tobe designed for a computer was Plankalkuumll developed forthe German Z3 by Konrad Zuse between 1943 and 1945However it was not implemented until 1998 and 2000[52]

Programmers of early 1950s computers notably UNIVAC Iand IBM 701 used machine language programs that is thefirst generation language (1GL) 1GL programming wasquickly superseded by similarly machine-specific butmnemonic second generation languages (2GL) known asassembly languages or assembler Later in the 1950s assembly language programming which had evolved toinclude the use of macro instructions was followed by the development of third generation programminglanguages (3GL) such as FORTRAN LISP and COBOL[53] 3GLs are more abstract and are portable or at leastimplemented similarly on computers that do not support the same native machine code Updated versions of all ofthese 3GLs are still in general use and each has strongly influenced the development of later languages[54] At theend of the 1950s the language formalized as ALGOL 60 was introduced and most later programming languages arein many respects descendants of Algol[54] The format and use of the early programming languages was heavilyinfluenced by the constraints of the interface[55]

RefinementThe period from the 1960s to the late 1970s brought the development of the major language paradigms now in usethough many aspects were refinements of ideas in the very first Third-generation programming languagesbull APL introduced array programming and influenced functional programming[56]

bull PLI (NPL) was designed in the early 1960s to incorporate the best ideas from FORTRAN and COBOLbull In the 1960s Simula was the first language designed to support object-oriented programming in the mid-1970s

Smalltalk followed with the first purely object-oriented languagebull C was developed between 1969 and 1973 as a system programming language and remains popular[57]

bull Prolog designed in 1972 was the first logic programming languagebull In 1978 ML built a polymorphic type system on top of Lisp pioneering statically typed functional programming

languages

Programming language 11

Each of these languages spawned an entire family of descendants and most modern languages count at least one ofthem in their ancestryThe 1960s and 1970s also saw considerable debate over the merits of structured programming and whetherprogramming languages should be designed to support it[58] Edsger Dijkstra in a famous 1968 letter published inthe Communications of the ACM argued that GOTO statements should be eliminated from all higher levelprogramming languages[59]

The 1960s and 1970s also saw expansion of techniques that reduced the footprint of a program as well as improvedproductivity of the programmer and user The card deck for an early 4GL was a lot smaller for the same functionalityexpressed in a 3GL deck

Consolidation and growthThe 1980s were years of relative consolidation C++ combined object-oriented and systems programming TheUnited States government standardized Ada a systems programming language derived from Pascal and intended foruse by defense contractors In Japan and elsewhere vast sums were spent investigating so-called fifth generationlanguages that incorporated logic programming constructs[60] The functional languages community moved tostandardize ML and Lisp Rather than inventing new paradigms all of these movements elaborated upon the ideasinvented in the previous decadeOne important trend in language design for programming large-scale systems during the 1980s was an increasedfocus on the use of modules or large-scale organizational units of code Modula-2 Ada and ML all developednotable module systems in the 1980s although other languages such as PLI already had extensive support formodular programming Module systems were often wedded to generic programming constructs[61]

The rapid growth of the Internet in the mid-1990s created opportunities for new languages Perl originally a Unixscripting tool first released in 1987 became common in dynamic websites Java came to be used for server-sideprogramming and bytecode virtual machines became popular again in commercial settings with their promise ofWrite once run anywhere (UCSD Pascal had been popular for a time in the early 1980s) These developmentswere not fundamentally novel rather they were refinements to existing languages and paradigms and largely basedon the C family of programming languagesProgramming language evolution continues in both industry and research Current directions include security andreliability verification new kinds of modularity (mixins delegates aspects) and database integration such asMicrosofts LINQThe 4GLs are examples of languages which are domain-specific such as SQL which manipulates and returns sets ofdata rather than the scalar values which are canonical to most programming languages Perl for example with itshere document can hold multiple 4GL programs as well as multiple JavaScript programs in part of its own perlcode and use variable interpolation in the here document to support multi-language programming[62]

References[1] Aaby Anthony (2004) Introduction to Programming Languages (http burks brighton ac uk burks pcinfo progdocs plbook index

htm) [2] In mathematical terms this means the programming language is Turing-complete MacLennan Bruce J (1987) Principles of Programming

Languages Oxford University Press p 1 ISBN 0-19-511306-3[3] Steven R Fischer A history of language Reaktion Books 2003 ISBN 1-86189-080-X p 205[4] ACM SIGPLAN (2003) Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery

(http www acm org sigs sigplan sigplan_bylaws htm) Retrieved 19 June 2006 The scope of SIGPLAN is the theory designimplementation description and application of computer programming languages - languages that permit the specification of a variety ofdifferent computations thereby providing the user with significant control (immediate or delayed) over the computers operation

[5] Dean Tom (2002) Programming Robots (http www cs brown edu people tld courses cs148 02 programming html) BuildingIntelligent Robots Brown University Department of Computer Science Retrieved 23 September 2006

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 9

TaxonomiesThere is no overarching classification scheme for programming languages A given programming language does notusually have a single ancestor language Languages commonly arise by combining the elements of severalpredecessor languages with new ideas in circulation at the time Ideas that originate in one language will diffusethroughout a family of related languages and then leap suddenly across familial gaps to appear in an entirelydifferent familyThe task is further complicated by the fact that languages can be classified along multiple axes For example Java isboth 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-orientedscripting languageIn broad strokes programming languages divide into programming paradigms and a classification by intendeddomain of use Traditionally programming languages have been regarded as describing computation in terms ofimperative sentences ie issuing commands These are generally called imperative programming languages A greatdeal of research in programming languages has been aimed at blurring the distinction between a program as a set ofinstructions and a program as an assertion about the desired answer which is the main feature of declarativeprogramming[48] More refined paradigms include procedural programming object-oriented programmingfunctional programming and logic programming some languages are hybrids of paradigms or multi-paradigmaticAn assembly language is not so much a paradigm as a direct model of an underlying machine architecture Bypurpose programming languages might be considered general purpose system programming languages scriptinglanguages domain-specific languages or concurrentdistributed languages (or a combination of these)[49] Somegeneral purpose languages were designed largely with educational goals[50]

A programming language may also be classified by factors unrelated to programming paradigm For instance mostprogramming languages use English language keywords while a minority do not Other languages may be classifiedas being deliberately esoteric or not

Programming language 10

History

A selection of textbooks that teach programming in languagesboth popular and obscure These are only a few of the

thousands of programming languages and dialects that havebeen designed in history

Early developments

The first programming languages predate the moderncomputer The 19th century saw the invention ofprogrammable looms and player piano scrolls both ofwhich implemented examples of domain-specificlanguages By the beginning of the twentieth century punchcards encoded data and directed mechanical processing Inthe 1930s and 1940s the formalisms of Alonzo Churchslambda calculus and Alan Turings Turing machinesprovided mathematical abstractions for expressingalgorithms the lambda calculus remains influential inlanguage design[51]

In the 1940s the first electrically powered digital computerswere created The first high-level programming language tobe designed for a computer was Plankalkuumll developed forthe German Z3 by Konrad Zuse between 1943 and 1945However it was not implemented until 1998 and 2000[52]

Programmers of early 1950s computers notably UNIVAC Iand IBM 701 used machine language programs that is thefirst generation language (1GL) 1GL programming wasquickly superseded by similarly machine-specific butmnemonic second generation languages (2GL) known asassembly languages or assembler Later in the 1950s assembly language programming which had evolved toinclude the use of macro instructions was followed by the development of third generation programminglanguages (3GL) such as FORTRAN LISP and COBOL[53] 3GLs are more abstract and are portable or at leastimplemented similarly on computers that do not support the same native machine code Updated versions of all ofthese 3GLs are still in general use and each has strongly influenced the development of later languages[54] At theend of the 1950s the language formalized as ALGOL 60 was introduced and most later programming languages arein many respects descendants of Algol[54] The format and use of the early programming languages was heavilyinfluenced by the constraints of the interface[55]

RefinementThe period from the 1960s to the late 1970s brought the development of the major language paradigms now in usethough many aspects were refinements of ideas in the very first Third-generation programming languagesbull APL introduced array programming and influenced functional programming[56]

bull PLI (NPL) was designed in the early 1960s to incorporate the best ideas from FORTRAN and COBOLbull In the 1960s Simula was the first language designed to support object-oriented programming in the mid-1970s

Smalltalk followed with the first purely object-oriented languagebull C was developed between 1969 and 1973 as a system programming language and remains popular[57]

bull Prolog designed in 1972 was the first logic programming languagebull In 1978 ML built a polymorphic type system on top of Lisp pioneering statically typed functional programming

languages

Programming language 11

Each of these languages spawned an entire family of descendants and most modern languages count at least one ofthem in their ancestryThe 1960s and 1970s also saw considerable debate over the merits of structured programming and whetherprogramming languages should be designed to support it[58] Edsger Dijkstra in a famous 1968 letter published inthe Communications of the ACM argued that GOTO statements should be eliminated from all higher levelprogramming languages[59]

The 1960s and 1970s also saw expansion of techniques that reduced the footprint of a program as well as improvedproductivity of the programmer and user The card deck for an early 4GL was a lot smaller for the same functionalityexpressed in a 3GL deck

Consolidation and growthThe 1980s were years of relative consolidation C++ combined object-oriented and systems programming TheUnited States government standardized Ada a systems programming language derived from Pascal and intended foruse by defense contractors In Japan and elsewhere vast sums were spent investigating so-called fifth generationlanguages that incorporated logic programming constructs[60] The functional languages community moved tostandardize ML and Lisp Rather than inventing new paradigms all of these movements elaborated upon the ideasinvented in the previous decadeOne important trend in language design for programming large-scale systems during the 1980s was an increasedfocus on the use of modules or large-scale organizational units of code Modula-2 Ada and ML all developednotable module systems in the 1980s although other languages such as PLI already had extensive support formodular programming Module systems were often wedded to generic programming constructs[61]

The rapid growth of the Internet in the mid-1990s created opportunities for new languages Perl originally a Unixscripting tool first released in 1987 became common in dynamic websites Java came to be used for server-sideprogramming and bytecode virtual machines became popular again in commercial settings with their promise ofWrite once run anywhere (UCSD Pascal had been popular for a time in the early 1980s) These developmentswere not fundamentally novel rather they were refinements to existing languages and paradigms and largely basedon the C family of programming languagesProgramming language evolution continues in both industry and research Current directions include security andreliability verification new kinds of modularity (mixins delegates aspects) and database integration such asMicrosofts LINQThe 4GLs are examples of languages which are domain-specific such as SQL which manipulates and returns sets ofdata rather than the scalar values which are canonical to most programming languages Perl for example with itshere document can hold multiple 4GL programs as well as multiple JavaScript programs in part of its own perlcode and use variable interpolation in the here document to support multi-language programming[62]

References[1] Aaby Anthony (2004) Introduction to Programming Languages (http burks brighton ac uk burks pcinfo progdocs plbook index

htm) [2] In mathematical terms this means the programming language is Turing-complete MacLennan Bruce J (1987) Principles of Programming

Languages Oxford University Press p 1 ISBN 0-19-511306-3[3] Steven R Fischer A history of language Reaktion Books 2003 ISBN 1-86189-080-X p 205[4] ACM SIGPLAN (2003) Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery

(http www acm org sigs sigplan sigplan_bylaws htm) Retrieved 19 June 2006 The scope of SIGPLAN is the theory designimplementation description and application of computer programming languages - languages that permit the specification of a variety ofdifferent computations thereby providing the user with significant control (immediate or delayed) over the computers operation

[5] Dean Tom (2002) Programming Robots (http www cs brown edu people tld courses cs148 02 programming html) BuildingIntelligent Robots Brown University Department of Computer Science Retrieved 23 September 2006

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 10

History

A selection of textbooks that teach programming in languagesboth popular and obscure These are only a few of the

thousands of programming languages and dialects that havebeen designed in history

Early developments

The first programming languages predate the moderncomputer The 19th century saw the invention ofprogrammable looms and player piano scrolls both ofwhich implemented examples of domain-specificlanguages By the beginning of the twentieth century punchcards encoded data and directed mechanical processing Inthe 1930s and 1940s the formalisms of Alonzo Churchslambda calculus and Alan Turings Turing machinesprovided mathematical abstractions for expressingalgorithms the lambda calculus remains influential inlanguage design[51]

In the 1940s the first electrically powered digital computerswere created The first high-level programming language tobe designed for a computer was Plankalkuumll developed forthe German Z3 by Konrad Zuse between 1943 and 1945However it was not implemented until 1998 and 2000[52]

Programmers of early 1950s computers notably UNIVAC Iand IBM 701 used machine language programs that is thefirst generation language (1GL) 1GL programming wasquickly superseded by similarly machine-specific butmnemonic second generation languages (2GL) known asassembly languages or assembler Later in the 1950s assembly language programming which had evolved toinclude the use of macro instructions was followed by the development of third generation programminglanguages (3GL) such as FORTRAN LISP and COBOL[53] 3GLs are more abstract and are portable or at leastimplemented similarly on computers that do not support the same native machine code Updated versions of all ofthese 3GLs are still in general use and each has strongly influenced the development of later languages[54] At theend of the 1950s the language formalized as ALGOL 60 was introduced and most later programming languages arein many respects descendants of Algol[54] The format and use of the early programming languages was heavilyinfluenced by the constraints of the interface[55]

RefinementThe period from the 1960s to the late 1970s brought the development of the major language paradigms now in usethough many aspects were refinements of ideas in the very first Third-generation programming languagesbull APL introduced array programming and influenced functional programming[56]

bull PLI (NPL) was designed in the early 1960s to incorporate the best ideas from FORTRAN and COBOLbull In the 1960s Simula was the first language designed to support object-oriented programming in the mid-1970s

Smalltalk followed with the first purely object-oriented languagebull C was developed between 1969 and 1973 as a system programming language and remains popular[57]

bull Prolog designed in 1972 was the first logic programming languagebull In 1978 ML built a polymorphic type system on top of Lisp pioneering statically typed functional programming

languages

Programming language 11

Each of these languages spawned an entire family of descendants and most modern languages count at least one ofthem in their ancestryThe 1960s and 1970s also saw considerable debate over the merits of structured programming and whetherprogramming languages should be designed to support it[58] Edsger Dijkstra in a famous 1968 letter published inthe Communications of the ACM argued that GOTO statements should be eliminated from all higher levelprogramming languages[59]

The 1960s and 1970s also saw expansion of techniques that reduced the footprint of a program as well as improvedproductivity of the programmer and user The card deck for an early 4GL was a lot smaller for the same functionalityexpressed in a 3GL deck

Consolidation and growthThe 1980s were years of relative consolidation C++ combined object-oriented and systems programming TheUnited States government standardized Ada a systems programming language derived from Pascal and intended foruse by defense contractors In Japan and elsewhere vast sums were spent investigating so-called fifth generationlanguages that incorporated logic programming constructs[60] The functional languages community moved tostandardize ML and Lisp Rather than inventing new paradigms all of these movements elaborated upon the ideasinvented in the previous decadeOne important trend in language design for programming large-scale systems during the 1980s was an increasedfocus on the use of modules or large-scale organizational units of code Modula-2 Ada and ML all developednotable module systems in the 1980s although other languages such as PLI already had extensive support formodular programming Module systems were often wedded to generic programming constructs[61]

The rapid growth of the Internet in the mid-1990s created opportunities for new languages Perl originally a Unixscripting tool first released in 1987 became common in dynamic websites Java came to be used for server-sideprogramming and bytecode virtual machines became popular again in commercial settings with their promise ofWrite once run anywhere (UCSD Pascal had been popular for a time in the early 1980s) These developmentswere not fundamentally novel rather they were refinements to existing languages and paradigms and largely basedon the C family of programming languagesProgramming language evolution continues in both industry and research Current directions include security andreliability verification new kinds of modularity (mixins delegates aspects) and database integration such asMicrosofts LINQThe 4GLs are examples of languages which are domain-specific such as SQL which manipulates and returns sets ofdata rather than the scalar values which are canonical to most programming languages Perl for example with itshere document can hold multiple 4GL programs as well as multiple JavaScript programs in part of its own perlcode and use variable interpolation in the here document to support multi-language programming[62]

References[1] Aaby Anthony (2004) Introduction to Programming Languages (http burks brighton ac uk burks pcinfo progdocs plbook index

htm) [2] In mathematical terms this means the programming language is Turing-complete MacLennan Bruce J (1987) Principles of Programming

Languages Oxford University Press p 1 ISBN 0-19-511306-3[3] Steven R Fischer A history of language Reaktion Books 2003 ISBN 1-86189-080-X p 205[4] ACM SIGPLAN (2003) Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery

(http www acm org sigs sigplan sigplan_bylaws htm) Retrieved 19 June 2006 The scope of SIGPLAN is the theory designimplementation description and application of computer programming languages - languages that permit the specification of a variety ofdifferent computations thereby providing the user with significant control (immediate or delayed) over the computers operation

[5] Dean Tom (2002) Programming Robots (http www cs brown edu people tld courses cs148 02 programming html) BuildingIntelligent Robots Brown University Department of Computer Science Retrieved 23 September 2006

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 11

Each of these languages spawned an entire family of descendants and most modern languages count at least one ofthem in their ancestryThe 1960s and 1970s also saw considerable debate over the merits of structured programming and whetherprogramming languages should be designed to support it[58] Edsger Dijkstra in a famous 1968 letter published inthe Communications of the ACM argued that GOTO statements should be eliminated from all higher levelprogramming languages[59]

The 1960s and 1970s also saw expansion of techniques that reduced the footprint of a program as well as improvedproductivity of the programmer and user The card deck for an early 4GL was a lot smaller for the same functionalityexpressed in a 3GL deck

Consolidation and growthThe 1980s were years of relative consolidation C++ combined object-oriented and systems programming TheUnited States government standardized Ada a systems programming language derived from Pascal and intended foruse by defense contractors In Japan and elsewhere vast sums were spent investigating so-called fifth generationlanguages that incorporated logic programming constructs[60] The functional languages community moved tostandardize ML and Lisp Rather than inventing new paradigms all of these movements elaborated upon the ideasinvented in the previous decadeOne important trend in language design for programming large-scale systems during the 1980s was an increasedfocus on the use of modules or large-scale organizational units of code Modula-2 Ada and ML all developednotable module systems in the 1980s although other languages such as PLI already had extensive support formodular programming Module systems were often wedded to generic programming constructs[61]

The rapid growth of the Internet in the mid-1990s created opportunities for new languages Perl originally a Unixscripting tool first released in 1987 became common in dynamic websites Java came to be used for server-sideprogramming and bytecode virtual machines became popular again in commercial settings with their promise ofWrite once run anywhere (UCSD Pascal had been popular for a time in the early 1980s) These developmentswere not fundamentally novel rather they were refinements to existing languages and paradigms and largely basedon the C family of programming languagesProgramming language evolution continues in both industry and research Current directions include security andreliability verification new kinds of modularity (mixins delegates aspects) and database integration such asMicrosofts LINQThe 4GLs are examples of languages which are domain-specific such as SQL which manipulates and returns sets ofdata rather than the scalar values which are canonical to most programming languages Perl for example with itshere document can hold multiple 4GL programs as well as multiple JavaScript programs in part of its own perlcode and use variable interpolation in the here document to support multi-language programming[62]

References[1] Aaby Anthony (2004) Introduction to Programming Languages (http burks brighton ac uk burks pcinfo progdocs plbook index

htm) [2] In mathematical terms this means the programming language is Turing-complete MacLennan Bruce J (1987) Principles of Programming

Languages Oxford University Press p 1 ISBN 0-19-511306-3[3] Steven R Fischer A history of language Reaktion Books 2003 ISBN 1-86189-080-X p 205[4] ACM SIGPLAN (2003) Bylaws of the Special Interest Group on Programming Languages of the Association for Computing Machinery

(http www acm org sigs sigplan sigplan_bylaws htm) Retrieved 19 June 2006 The scope of SIGPLAN is the theory designimplementation description and application of computer programming languages - languages that permit the specification of a variety ofdifferent computations thereby providing the user with significant control (immediate or delayed) over the computers operation

[5] Dean Tom (2002) Programming Robots (http www cs brown edu people tld courses cs148 02 programming html) BuildingIntelligent Robots Brown University Department of Computer Science Retrieved 23 September 2006

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 12

[6][6] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p193 a complete specification of a programming languagemust by definition include a specification of a processor--idealized if you will--for that language [the source cites many references tosupport this statement]

[7] Ben Ari Mordechai (1996) Understanding Programming Languages John Wiley and Sons Programs and languages can be defined aspurely formal mathematical objects However more people are interested in programs than in other mathematical objects such as groupsprecisely because it is possible to use the programmdashthe sequence of symbolsmdashto control the execution of a computer While we highlyrecommend the study of the theory of programming this text will generally limit itself to the study of programs as they are executed on acomputer

[8] David A Schmidt The structure of typed programming languages MIT Press 1994 ISBN 0-262-19349-3 p 32[9] Pierce Benjamin (2002) Types and Programming Languages MIT Press p 339 ISBN 0-262-16209-1[10] Digital Equipment Corporation Information Technology - Database Language SQL (Proposed revised text of DIS 9075) (http www

contrib andrew cmu edu ~shadow sql sql1992 txt) ISOIEC 90751992 Database Language SQL Retrieved 29 June 2006[11] The Charity Development Group (December 1996) The CHARITY Home Page (http pll cpsc ucalgary ca charity1 www home

html) Retrieved 29 June 2006 Charity is a categorical programming language All Charity computations terminate[12] XML in 10 points (http www w3 org XML 1999 XML-in-10-points html) W3C 1999 XML is not a programming language[13] Powell Thomas (2003) HTML amp XHTML the complete reference McGraw-Hill p 25 ISBN 0-07-222942-X HTML is not a

programming language[14] Dykes Lucinda Tittel Ed (2005) XML For Dummies 4th Edition Wiley p 20 ISBN 0-7645-8845-1 its a markup language not a

programming language[15] What kind of language is XSLT (http www ibm com developerworks library x-xslt ) Ibmcom Retrieved 3 December 2010[16] XSLT is a Programming Language (http msdn microsoft com en-us library ms767587(VS 85) aspx) Msdnmicrosoftcom

Retrieved 3 December 2010[17] Scott Michael (2006) Programming Language Pragmatics Morgan Kaufmann p 802 ISBN 0-12-633951-1 XSLT though highly

specialized to the transformation of XML is a Turing-complete programming language[18] http tobi oetiker ch lshort lshort pdf[19] Syropoulos Apostolos Antonis Tsolomitis Nick Sofroniou (2003) Digital typography using LaTeX Springer-Verlag p 213

ISBN 0-387-95217-9 TeX is not only an excellent typesetting engine but also a real programming language[20][20] Robert A Edmunds The Prentice-Hall standard glossary of computer terminology Prentice-Hall 1985 p 91[21] Pascal Lando Anne Lapujade Gilles Kassel and Freacutedeacuteric Fuumlrst Towards a General Ontology of Computer Programs (http www

loa-cnr it ICSOFT2007_final pdf) ICSOFT 2007 (http dblp uni-trier de db conf icsoft icsoft2007-1 html) pp 163-170[22] SK Bajpai Introduction To Computers And C Programming New Age International 2007 ISBN 81-224-1379-X p 346[23][23] R Narasimahan Programming Languages and Computers A Unified Metatheory pp 189--247 in Franz Alt Morris Rubinoff (eds)

Advances in computers Volume 8 Academic Press 1994 ISBN 012012108 p215 [] the model [] for computer languages differs fromthat [] for programming languages in only two respects In a computer language there are only finitely many names--or registers--which canassume only finitely many values--or states--and these states are not further distinguished in terms of any other attributes [authors footnote]This may sound like a truism but its implications are far reaching For example it would imply that any model for programming languages byfixing certain of its parameters or features should be reducible in a natural way to a model for computer languages

[24] John C Reynolds Some thoughts on teaching programming and programming languages SIGPLAN Notices Volume 43 Issue 11November 2008 p109

[25] Michael Sipser (1996) Introduction to the Theory of Computation PWS Publishing ISBN 0-534-94728-X Section 22 PushdownAutomata pp101ndash114

[26] Jeffrey Kegler Perl and Undecidability (http www jeffreykegler com Home perl-and-undecidability) The Perl Review Papers 2 and3 prove using respectively Rices theorem and direct reduction to the halting problem that the parsing of Perl programs is in generalundecidable

[27] Marty Hall 1995 Lecture Notes Macros (http www apl jhu edu ~hall Lisp-Notes Macros html) PostScript version (http wwwapl jhu edu ~hall Lisp-Notes Macros ps)

[28] Michael Lee Scott Programming language pragmatics Edition 2 Morgan Kaufmann 2006 ISBN 0-12-633951-1 p 18-19[29] Andrew Cooke An Introduction to Programming Languages (http www acooke org andrew writing lang htmlsec-types)

Retrieved 30 June 2006[30] Specifically instantiations of generic types are inferred for certain expression forms Type inference in Generic Javamdashthe research language

that provided the basis for Java 15s bounded parametric polymorphism extensionsmdashis discussed in two informal manuscripts from the Typesmailing list Generic Java type inference is unsound (http www seas upenn edu ~sweirich types archive 1999-2003 msg00849 html)(Alan Jeffrey 17 December 2001) and Sound Generic Java type inference (http www seas upenn edu ~sweirich types archive1999-2003 msg00921 html) (Martin Odersky 15 January 2002) Cs type system is similar to Javas and uses a similar partial typeinference scheme

[31] Revised Report on the Algorithmic Language Scheme (http www schemers org Documents Standards R5RS HTML r5rs-Z-H-4html) 20 February 1998 Retrieved 9 June 2006

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 13

[32] Luca Cardelli and Peter Wegner On Understanding Types Data Abstraction and Polymorphism (http citeseer ist psu educardelli85understanding html) Manuscript (1985) Retrieved 9 June 2006

[33] Eacuteric Leacuteveacutenez (2011) Computer Languages History (http www levenez com lang ) [34] Jing Huang Artificial Language vs Natural Language (http www cs cornell edu info Projects Nuprl cs611 fall94notes cn2

subsection3_1_3 html) [35] IBM in first publishing PLI for example rather ambitiously titled its manual The universal programming language PLI (IBM Library

1966) The title reflected IBMs goals for unlimited subsetting capability PLI is designed in such a way that one can isolate subsets from itsatisfying the requirements of particular applications ( PLI (http www encyclopediaofmath org index phptitle=PL Iamp oldid=19175)Encyclopedia of Mathematics Retrieved 29 June 2006) Ada and UNCOL had similar early goals

[36] Frederick P Brooks Jr The Mythical Man-Month Addison-Wesley 1982 pp 93-94[37] Dijkstra Edsger W On the foolishness of natural language programming (http www cs utexas edu users EWD transcriptions

EWD06xx EWD667 html) EWD667[38] Perlis Alan (September 1982) Epigrams on Programming (http www-pu informatik uni-tuebingen de users klaeren epigrams

html) SIGPLAN Notices Vol 17 No 9 pp 7-13 [39] Milner R M Tofte R Harper and D MacQueen (1997) The Definition of Standard ML (Revised) MIT Press ISBN 0-262-63181-4[40] Kelsey Richard William Clinger and Jonathan Rees (February 1998) Section 72 Formal semantics (http www schemers org

Documents Standards R5RS HTML r5rs-Z-H-10 html_sec_7 2) Revised5 Report on the Algorithmic Language Scheme Retrieved 9June 2006

[41] ANSI mdash Programming Language Rexx X3-2741996[42] HOPL an interactive Roster of Programming Languages (http hopl murdoch edu au ) Australia Murdoch University Retrieved 1

June 2009 This site lists 8512 languages[43] Abelson Sussman and Sussman Structure and Interpretation of Computer Programs (http mitpress mit edu sicp full-text book

book-Z-H-10 html) Retrieved 3 March 2009[44] http www computerweekly com Articles 2007 09 11 226631 sslcomputer-weekly-it-salary-survey-finance-boom-drives-it-job htm[45] Counting programming languages by book sales (http radar oreilly com archives 2006 08 programming_language_trends_1 html)

Radaroreillycom 2 August 2006 Retrieved 3 December 2010[46][46] Bieman JM Murdock V Finding code on the World Wide Web a preliminary investigation Proceedings First IEEE International

Workshop on Source Code Analysis and Manipulation 2001[47] Programming Language Popularity (http www langpop com ) Langpopcom Retrieved 3 December 2010[48] Carl A Gunter Semantics of Programming Languages Structures and Techniques MIT Press 1992 ISBN 0-262-57095-5 p 1[49] TUNES Programming Languages (http tunes org wiki programming_20languages html) [50] Wirth Niklaus (1993) Recollections about the development of Pascal (http portal acm org citation cfmid=155378) Proc 2nd ACM

SIGPLAN conference on history of programming languages 333ndash342 doi101145154766155378 ISBN 0-89791-570-4 Retrieved 30 June2006

[51][51] Benjamin C Pierce writes

the lambda calculus has seen widespread use in the specification of programming language features inlanguage design and implementation and in the study of type systems

Pierce Benjamin C (2002) Types and Programming Languages MIT Press p 52 ISBN 0-262-16209-1[52] Rojas Rauacutel et al (2000) Plankalkuumll The First High-Level Programming Language and its Implementation Institut fuumlr Informatik Freie

Universitaumlt Berlin Technical Report B-32000 (full text) (http www zib de zuse Inhalt Programme Plankalkuel Plankalkuel-ReportPlankalkuel-Report htm)

[53] Linda Null Julia Lobur The essentials of computer organization and architecture Edition 2 Jones amp Bartlett Publishers 2006 ISBN0-7637-3769-0 p 435

[54] OReilly Media History of programming languages (http www oreilly com news graphics prog_lang_poster pdf) (PDF) Retrieved5 October 2006

[55] Frank da Cruz IBM Punch Cards (http www columbia edu acis history cards html) Columbia University Computing History (http www columbia edu acis history index html)

[56] Richard L Wexelblat History of Programming Languages Academic Press 1981 chapter XIV[57] Franccedilois Labelle Programming Language Usage Graph (http www cs berkeley edu ~flab languages html) SourceForge

Retrieved 21 June 2006 This comparison analyzes trends in number of projects hosted by a popular community programming repositoryDuring most years of the comparison C leads by a considerable margin in 2006 Java overtakes C but the combination of CC++ still leadsconsiderably

[58] Hayes Brian (2006) The Semicolon Wars American Scientist 94 (4) 299ndash303[59] Dijkstra Edsger W (March 1968) Go To Statement Considered Harmful (http www acm org classics oct95 ) Communications of

the ACM 11 (3) 147ndash148 doi101145362929362947 Retrieved 29 June 2006[60] 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(http www icot or jp ARCHIVE HomePage-E html)]]

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Programming language 14

[61] Jim Bender (15 March 2004) Mini-Bibliography on Modules for Functional Programming Languages (http readscheme org modules) ReadSchemeorg Retrieved 27 September 2006

[62] Wall Programming Perl ISBN 0-596-00027-8 p66

Further readingbull Abelson Harold Sussman Gerald Jay (1996) [[Structure and Interpretation of Computer Programs (http

mitpress mit edu sicp full-text book book-Z-H-4 html)]] (2nd ed) MIT Pressbull Raphael Finkel Advanced Programming Language Design (http www nondot org sabre Mirrored

AdvProgLangDesign ) Addison Wesley 1995bull Daniel P Friedman Mitchell Wand Christopher T Haynes Essentials of Programming Languages The MIT

Press 2001bullbull Maurizio Gabbrielli and Simone Martini Programming Languages Principles and Paradigms Springer 2010bull David Gelernter Suresh Jagannathan Programming Linguistics The MIT Press 1990bull Ellis Horowitz (ed) Programming Languages a Grand Tour (3rd ed) 1987bull Ellis Horowitz Fundamentals of Programming Languages 1989bull Shriram Krishnamurthi Programming Languages Application and Interpretation online publication (http

www cs brown edu ~sk Publications Books ProgLangs )bull Bruce J MacLennan Principles of Programming Languages Design Evaluation and Implementation Oxford

University Press 1999bull John C Mitchell Concepts in Programming Languages Cambridge University Press 2002bull Benjamin C Pierce Types and Programming Languages The MIT Press 2002bull Terrence W Pratt and Marvin V Zelkowitz Programming Languages Design and Implementation (4th ed)

Prentice Hall 2000bull Peter H Salus Handbook of Programming Languages (4 vols) Macmillan 1998bull Ravi Sethi Programming Languages Concepts and Constructs 2nd ed Addison-Wesley 1996bull Michael L Scott Programming Language Pragmatics Morgan Kaufmann Publishers 2005bull Robert W Sebesta Concepts of Programming Languages 9th ed Addison Wesley 2009bull Franklyn Turbak and David Gifford with Mark Sheldon Design Concepts in Programming Languages The MIT

Press 2009bull Peter Van Roy and Seif Haridi Concepts Techniques and Models of Computer Programming The MIT Press

2004bull David A Watt Programming Language Concepts and Paradigms Prentice Hall 1990bull David A Watt and Muffy Thomas Programming Language Syntax and Semantics Prentice Hall 1991bull David A Watt Programming Language Processors Prentice Hall 1993bull David A Watt Programming Language Design Concepts John Wiley amp Sons 2004

External linksbull 99 Bottles of Beer (http www 99-bottles-of-beer net ) A collection of implementations in many languagesbull Computer Programming Languages (http www dmoz org Computers Programming Languages ) at the

Open Directory Project

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License

Article Sources and Contributors 15

Article Sources and ContributorsProgramming language Source httpenwikipediaorgwindexphpoldid=501147391 Contributors -Barry- 107 151203224xxx 16r 1989755xxx 199196144xxx 1exec12033781xxx 21218819xxx 2988 96186 A520 AJim Abednigo Abeliavsky Abramcarolan Acacix Acaciz AccurateOne Addicted2Sanity Ahoerstemeier Ahy1 Akadruid AlansohnAlex AlexPlank Alhoori Alksub Allan McInnes Alliswellthen Altenmann Amire80 Ancheta Wis Andonic Andre Engels Andres Andylmurphy Angela Angusmclellan Antonielly ApApwestern ArmadilloFromHell AstroNomer Autocratique Avono B4hand Behnam Beland Ben Ben Ben Standeven Benjaminct Bevo Bh3u4m BigSmoke Bill122 BioPupil BirgitteSBBlaisorblade Blanchardb Bobblewik Bobo192 Bonaovox Booyabazooka Borislav Brandon Brentdax Brianjd Brick Thrower Brion VIBBER Bubba73 Burkedavis CSProfBill CalltechCant sleep clown will eat me CanisRufus Capricorn42 Captain-n00dle CarlHewitt Carmichael Catgut Centrx Charlesriver Charlie Huggard Chillum Chinabuffalo Chun-hian CireshoeCkatz Closedmouth Cmichael Cobaltbluetony ColdFeet Conor123777 Conversion script Cp15 Cybercobra DBigXray DMacks DVD R W Damianrouson Damieng Dan128 DanakilDanim Dave Bell DavidMonniaux DavidHOzAu Davidfstr Davidpdx Dcoetzee DeadEyeArrow DenisMoskowitz DennisDaniels DerHexer Derek Ross Derek farn Diannaa Diego MoyaDolfrog Dominator09 Dont Copy That Floppy Donhalcon Doradus DouglasGreen Dreftymac Dtaylor1984 Duke Ganote Dysprosia EJF ESkog EagleOne Edward301 Eivind F OslashyangenElAmericano Elembis EncMstr EngineerScotty Epbr123 Esap Evercat Everyking Ewlyahoocom Ezrakilty Fantom Faradayplank Fayt82 Fieldday-sunday Finlay McWalter Fl FoobahFour Dog Night Fplay Fredrik Friedo Fubar Obfusco Funandtrvl FvdP Gaius Cornelius Galoubet Gazpacho Gbruin Georg Peter Giftlite Giorgios Gioto Goodgerster Gploc Greencaterpillar GregAsche Grin Gurch Gutza Gwicke Hadal Hairy Dude Hammer1980 Hans Adler HarisM Harmil Hayabusa future Headbomb HeikoEvermann HenryLi HfastedgeHopeChrist Hoziron Hut 85 Hyad INkubusse IanOsgood Icey Ideogram Ilario Imran Indon Infinoid Iridescent Iwantitalllllllll Ixfd64 Jdelanoy JMSwtlk JPINFV JaK81600 JanSuchyJarble Jason5ayers Jaxad0127 Jaxl Jeffrey Mall Jeltz Jeronimo Jerryobject Jguy Jim1138 Jitse Niesen Jj137 Johann Wolfgang John lindgren John254 JohnLai JohnWittle Jonik JorendJossi Joyous Jpbowen Jpk JulesH Juliancolton Jusjih Jwissick Klee K12308025 KHaskell KSmrq KTC Karingo Karthikndr Katieh5584 Kbdank71 Kbh3rd Kedearian KetiltroutKhalid Mahmood Kickstart70 Kiminatheguardian Kimse Kinema Klasbricks KnowledgeOfSelf Knyf Kooginup Koyaanis Qatsi Kragen Krauss Krawi Kris Schnee Krischik KuciwalkerKungfuadam Kwertii KymFarnik L Gottschalk L33tminion LC Lagalag Leibniz Liao Lightmouse Ligulem LindsayH LinguistAtLarge Logarkh LordCo Centre Lradrama Lucian1900Lulu of the Lotus-Eaters Luna Santin Lupo MER-C MK8 Mac c Macaldo Macrakis Magnus Manske Mahanga Majilis Malcolm Farmer Malleus Fatuorum Mangojuice ManpreettMarcos Mark Renier MarsRover MartinHarper MartyMcGowan Marudubshinki Materialscientist Matthew Woodcraft Mattisse Mav Maxis ftw McSly Mccready Mean as custardMearsMan MegaHasher Mellum Mendaliv Merbabu Merphant Michael Hardy Michael Zimmermann Midinastasurazz Mike Rosoft Mild Bill Hiccup Minesweeper MisterCharlie MiymMkdw Mobile Snail Monz Mpils Mpradeep Mrjeff Ms2ger Mschel Muro de Aguas Murray Langton Mwaisberg Mxn Migravethrandir N5iln Naderi 8189 Nameneko Nanshu Napi NatalieErin Natkeeran NawlinWiki Nbrothers Necklace NewEnglandYankee NewbieDoo Nick125 Nikai Nima1024 Ningauble Nixdorf Noctibus Noformation Noisy Noldoaran NoosentaalNotQuiteEXPComplete Nottsadol Novasource Ntalamai Nuggetboy Nutsnbolts222 Oblivious Ohms law Ohnoitsjamie Oldadamml Oleg Alexandrov Omphaloscope Orderud OrgasGirlOrphan Wiki Papercutbiology Paul August PaulFord Pcap Peter Peterdjones Phil Sandifer PhilKnight Philg88 Phyzome Pieguy48 Piet Delport PlayStation 69 Poor Yorick PooryorickPositron Prolog Ptk Pumpie Pwv1 Quagmire Quiddity Quota Quuxplusone Qwyrxian RainerBlome Raise exception Ranafon RayAYang RedWolf Reddi Reelrt Reinis RenamedUser2Revived RexNL Rich Farmbrough Rjstott Rjwilmsi Rlee0001 Robbe Robert A West Robert Skyhawk Roland2 Romanm Ronhjones Roux Royboycrashfan Rrburke Rursus RushyoRussell Joseph McCann Ruud Koot SOumlrvarrS Saccade Sam Korn Science History Seaphoto SeeAnd Sekelsenmat Sgbirch Shadowjams Shane A Bender Shanes ShelfSkewed SimonPSimplyanil Sjakkalle Skytreader Slaad Slakr Slashem SmartBee Snickel11 Sonicology SparsityProblem Specs112 Speed Air Man SpeedyGonsales Speuler SpuriousQ Stephen BStreater Stephenb Stevertigo SubSeven Suffusion of Yellow Suruena Swatiri Swirsky Switchercat Systemetsys TakuyaMurata Tarret Taxman Techman224 Tedickey Templatenamespace initialisation script Teval Tewy Tgeairn Tgr The Thing That Should Not Be Thniels Thomasuniko Thv Tiddly Tom Tide rolls Tim Starling Timhowardriley Tizio TobiasBergemann Tomatensaft Tony1 TonyClarke Torc2 Toussaint TuukkaH Tysto Ubiq Ulric1313 Ultra two Undeference Useight Usmanampmuzammal Vadmium Vahid83 VaibhavkanwalVald VampWillow VictorAnyakin Victorgrigas Vivin Vkhaitan Vriullop Vsion WAS 4250 Waterfles Wavelength Wiki alf Wiki13 WikiTome Wikibob Wikibofh Wikisedia WimtWindharp Wlievens Wmahan Woohookitty Ww Xaosflux Xavier Combelle Yana209 Yath Yk Yk Yk Yoric Zaheen Zarniwoot Zawersh ZeWrestler Zero1328 Zoicon5 Zondor sup2sup1sup2 Σanonymous edits 914 ئاراس نوری

Image Sources Licenses and ContributorsImagePython add5 parsepng Source httpenwikipediaorgwindexphptitle=FilePython_add5_parsepng License Public Domain Contributors UserLulu of the Lotus-EatersImagePython add5 syntaxsvg Source httpenwikipediaorgwindexphptitle=FilePython_add5_syntaxsvg License Copyrighted free use Contributors Computer tower Lulu of theLotus-Eaters Nerzhal Nixoacuten Red Rooster Savh Xander89 6 anonymous editsFileBangalore India Tech books for sale IMG 5261jpg Source httpenwikipediaorgwindexphptitle=FileBangalore_India_Tech_books_for_sale_IMG_5261jpg License CreativeCommons Attribution-Sharealike 30 Contributors UserVictorgrigas

LicenseCreative Commons Attribution-Share Alike 30 Unportedcreativecommonsorglicensesby-sa30

  • Programming language
    • Definitions
    • Elements
      • Syntax
      • Semantics
        • Static semantics
        • Dynamic semantics
        • Type system
          • Standard library and run-time system
            • Design and implementation
              • Specification
              • Implementation
                • Usage
                  • Measuring language usage
                    • Taxonomies
                    • History
                      • Early developments
                      • Refinement
                      • Consolidation and growth
                        • References
                        • Further reading
                        • External links
                          • License