Changes

Programming language

4,341 bytes added, 04:54, 9 November 2018
/* Imperative programming */ Duplicate links.
A '''programming language''' is an artificial [[language]] used mainly for giving instructions to [[computer]]s; a secondary use is for the precise specification of [[algorithm]]s. A group of instructions for a particular purpose is known as a [[computer program]].
When compared with human languages (e.g. English, French, Spanish, etc.), programming languages are very much smaller, much simpler, and are also more precise. Most programming languages consist of a mixture of English words and mathematical notation; very few programming languages have a base vocabulary exceeding 60 words, although they may also have utility libraries with hundreds of entries which provide optional extra functionality.
Many thousands of different programming languages have been defined, though only a few dozen are in widespread use. The first publicly available programming language was A-0, was developed in 1951 by [[Grace Hopper]]. In 1948 Zuse published a paper (in "Archiv der Mathematik") about an early programming language Plankalk├╝l, though this was not actually implemented until 1998.
==Describing a programming language==
While human languages such as English may have rules of grammar, there are almost always exceptions to these rules. To reduce ambiguity, most programming languages have their [[grammar]] or syntax rigidly defined by a relatively small number of rules, with no exceptions. In many cases some variation of a [[Context-Free Grammar|context-free grammar]] is used, often Backus-Naur Form, or some extension thereof. Note that context-free grammars are not powerful enough to describe human languages such as English.
The meaning or [[semantics]] of any particular construct in a programming language is most commonly described in fairly precise English. Several unsuccessful attempts have been made to find a useful and formal way of describing the semantics.
The more important programming languages have an internationally-agreed official standard (ISO is the international standards organisation, ANSI is the standards body in the United States). In theory, programs which conform to the relevant standard should be usable on most types of computer; this works in practice most of the time, provided that the programmers have been careful to avoid machine-dependencies. Such agreed standards are usually revised every 5 to 15 years, often with new features being added, and sometimes with old features being either removed or marked as obsolete.
Very few programmers learn a programming language directly from the formal definition, which exists primarily as a reference which can be consulted in cases of doubt. There are usually plenty of books and training courses for the more common programming languages.
The initial distinction is between '''low-level languages''' and '''high-level languages'''.
===Low-level languages===
Low-level languages are generally referred to as '''assembly''' languages. Most instructions in such languages equate directly to a single machine instruction. Each machine architecture has its own assembly language, so programs written in such languages are generally very machine-specific and are not portable. The instructions in such languages are usually fairly cryptic, often using abbreviations such as ADD, JNE, LR, LI, etc. In the early days of computing (up to about 1ate 1950's) most programming was done in assembly language, partly due to the limited power and memory capacity of early computers.
===High-level languages===High-level languages generally use a mixture of English words and simple mathematical notation, and are often available with little or no change on many different types of computers, depending on what [[compiler]]s are available on which computers. These are often referred to as 3rd-generation languages (the 1st generation was raw binary machine code, the 2nd was assembly language). A single high-level statement may be equivalent to using 3 to 10 assembly language statements, so programming in a high-level language can be much more productive. One of the key reasons for the success of high-level languages is that they provide a level of abstraction (sometimes several such levels). which means that a programmer can concentrate more on the problem to be solved and less on the detail of how to solve it. There are a variety of different programming paradigms (styles of writing programs). Some programming languages really only support a single paradigm while others may support several. Possible paradigms include: imperative, declarative, procedural, functional, event-driven, object-oriented, list processing, and automata-based. Languages associated with computers can also be classified as to whether or not they are Turing-complete, i.e. whether or not they are capable of expressing all possible computations (assuming enough time and memory). Examples of languages which are not Turing-complete include SQL for describing databases and markup languages such as HTML and XML. Example statements include:
X = 5 + Y*3
'''if''' result < 3 '''then''' stop
'''print''' "Hello world"
The two main types ====Imperative programming====This is the most common type of high-level languages programming language, and many of the other paradigms are '''derived from or build on this. When using an imperative''' and '''declarative'''language, with the first type being far more commonprogrammer is responsible for giving precise instructions as to exactly what has to be done and in what order. Note that some programs may have a random element included so that the results of a program are not necessarily predictable.
Declarative Early high-level programming languages define relationships and facts, ask were often intended for use in a questionparticular problem domain::[[COBOL]] for business purposes, :[[Fortran]] and leave it to the underlying program implementation Algol 60 for scientific calculations,:[[BASIC programming language|BASIC]] and its theorem prover to work out how to derive an answer. An example of such a [[Pascal programming language is Prolog |Pascal]] for teaching purposes,:[[C]] for systems programming (Programming in Logicwriting operating systems and compilers). These languages can be effective in areas such as database analysis, symbolic mathematics, :[[LISP]] for list processing and language parsingartificial intelligence.
When using an imperative languageSuccessful programming languages evolve over time to become more general-purpose, or form the programmer basis for other languages (e.g. '''C''' -> '''C++'''). The evolution often involves incorporating good features from other languages. The general trend is responsible for giving precise instructions as languages to exactly what has to be done become more general-purpose and in what order. Note that some programs may have a random element included so that the results provide more levels of a program are not necessarily predictableabstraction. One The concepts of structured programming were put on a sound theoretical basis in the key reasons for early 1970s and these have also influenced the success evolution of high-level some programming languages is that they provide a level of abstraction (sometimes several such levelse.g. Fortran 66 -> Fortran 77). which means that a programmer can concentrate more on The idea of objects (combining data with the problem to be solved applicable operations) was available in Simula in the mid 1960s, but did not become popular until the advent of [[C++]] in the early 1980s and less on [[Java]] in the detail mid 1990s; confusingly, Java and C++ have a lot of how to solve itsyntax in common, but the meaning (semantics) may differ drastically for what looks the same when written down.
Early high-level ====Declarative programming ====Declarative languages were often intended for use in define relationships and facts, ask a particular problem domain (e.g. COBOL for business purposesquestion, Fortran and Algol 60 for scientific calculationsleave it to the underlying program implementation and its theorem prover to work out how to derive an answer. An example of such a language is Prolog (Programming in Logic). Other programming These languages were originally intended for teaching purposes (e.g. BASIC can be effective in areas such as database analysis, symbolic mathematics, and Pascal). The language '''C''' was originally intended for systems programming (writing operating systems and compilers)parsing.
Successful ==Implementation of programming languages evolve over time ==A program as written by a programmer in some programming language is said to become more general-purpose, or be in the form the basis for other languages (e.g. of '''Csource code''' -> '''C++'''). The evolution often involves incorporating good features from other languages. The general trend Such source code can not be used as is for languages to become more general-purpose and provide more levels of abstraction. The concepts of structured programming were put on a sound theoretical basis in the early 1970's and these have also influenced the evolution of some programming languages (e.g. Fortran 66 -> Fortran 77). The idea of objects (combining data with the applicable operations) was available in Simula in the mid 1960's, but did not become popular until the advent of C++ in the early 1980's and Java in the mid 1990's; confusingly, Java and C++ have must first be processed by another program before it can be used on a lot of syntax in common, but the meaning (semantics) may differ drastically for what looks the same when written downcomputer.
In the case of assembly language the processing program is called an '''assembler'''; this has a relatively simple task since the instructions coded by the user correspond almost exactly to the actual machine code instructions to be used. The entire program is assembled prior to use.
==Implementation There are three types of program for dealing with high-level programming lLanguages==languages:A set of instructions written in a programming language is called * '''source code[[compiler]]''', or simply '''which converts the entire program to machine code'''. In order for a computer prior to execute a program, another program must be used to prepare the source for executionuse. * '''Interpreters[[Interpreter (computer science)|interpreter]]''' translate , which examines the source code into '''machine code''' as the program executesline by line, works out what has to be done and does it. * translation to some '''Compilersintermediate code''' and '''Assemblers''' convert the source code into machine code once, and the computer which can run the then either be interpreted or converted to machine code any number of times. This makes compiled code run faster than interpreted code, usually by a factor of about 10on the fly.
==Language List==Most of the program Programs which have been completely converted to machine code in prior to use today is written in C, C++, COBOL, and Java. Other popular general-purpose languages include BASIC, Pascal, and C#. There may easily run 10 times faster than programs which are literally thousands of programming languages, although many of them are simply variants of others. Variants are called '''dialects'''. Thus, Visual BASIC is a dialect of BASICinterpreted.
The following There are no fixed rules as to which programming languages are processed in which way, and indeed most languages can be handled in any of these three ways. Many languages have been implemented in two or more of these ways. Traditionally compilers have been used for languages where performance is a sample list important (e.g. Fortran, '''C'''), interpreters have been used for languages where convenience of programming use is important (e.g. most scripting and command languages), and translation to intermediate code has been used when machine-independence is considered to be important (e.g. Java).
A-0==Assorted Languages==
AdaInformation about some 2,500 programming languages can be found in 'The Language List'.<ref>{{cite web| url = http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm| title = The Language List | accessdate = 2012-03-16}}</ref>
ALGOLAccording to LangPop <ref>{{cite web| url = http://www.langpop.com/| title = Programming Language Popularity | accessdate = 2012-03-13}}</ref> the most popular programming languages as of 2012 are:
APL:[[C]]:[[C++]]:C#:[[Java]]:[[Javascript]]:[[Perl]]:[[PHP]]:[[Python (programming language)|Python]]:Ruby:Shell:[[SQL]]:Visual Basic
AssemblyA similar list, which [[Java]] as the most popular programming language, was published for 2011.<ref>http://www.eweek.com/c/a/Application-Development/Java-C-C-Top-18-Programming-Languages-for-2011-480790/?kc=EWKNLBOE12242010FEA1</ref>
[[BASIC]]According to Professor Alfred V. Aho <ref>{{cite web| url = http://www.google.co.uk/url?sa=t&rct=j&q=influential+programming+languages&source=web&cd=9&ved=0CGkQFjAI&url=http%3A%2F%2Fwww1.cs.columbia.edu%2F~sedwards%2Fclasses%2F2002%2Fw4995-02%2Faho.pdf&ei=lyNhT9LcCoTX0QWi6qihBw&usg=AFQjCNHlnXcrb-ExmOXpx9O81GWQ2ZvU3w| title = Trends in Programming Language Design | accessdate = 2012-03-14}}</ref> The most influential high-level programming languages have been (in approximate order of development):
:[[FORTRAN]] showed that a useful high-level language was possible. :COBOL provided a language especially for business use.:LISP provided a language suitable for symbol processing.:Algol 60 was the first block-structured language and set a new standard in language definition (Backus-Naur form).::Algol 60 was described by Edsger Dijkstra, as "a great improvement on many of its successors".:[[BASIC]] was the first language used interactively with multiple simultaneous users.:Simula 67 was the first object-oriented language.:[[C]]showed that operating systems and compilers could be written in a high-level language.
==Prescient Quotes on Police State Programming Surveillance==* "The progress of [[C++science]] C# COBOL D Euclid FORTRAN Galaxy IITRAN Java in furnishing the [[Javascriptbig government|government]] Jovial LISP Modula 2 MUMPS Oberon with means of [[Pascalespionage]]is not likely to stop with [[wiretap]]ping. Ways may some day be developed by which the [[Police state|government]], without removing papers from [[hard disk|secret drawers]], can reproduce them in [[Foreign Intelligence Surveillance Court|court]], and by which it will be enabled to expose to a [[jury]] the most intimate occurrences of the home. Advances in the [[computer science|psychic and related sciences]] may bring means of exploring unexpressed beliefs, thoughts and emotions. 'That places the [[liberty]] of every [[citizen|man]] in the hands of every [[tyrant|petty officer]]' was said by James Otis of much lesser [[tyranny|intrusions]] than these. 1 To Lord Camden a far slighter intrusion seemed '[[subversive]] of all the comforts of society.' Can it be that the [[Constitution]] affords no [[Right to Privacy|protection]] against such invasions of [[Fourth Amendment|individual security]]?" Perl PHP PL/I Prolog ** [[Python Louis Brandeis]]''' (programming language1856-1941)|Python, [[United States Supreme Court]] RPG Sirius SmallTalk SNOBOL YACC[[Associate Justice]] Dissenting, ''[[Olmstead v. United States]]'', 277 U.S. 438 (1928).
==References==
{{reflist|2}} ==See also==[http://www.princeton.edu/~ferguson/adw/programming_languages.shtml The History of Computer Programming Languages] [http://people.ku.edu/~nkinners/LangList/Extras/langlist.htm The Language List]
[[Category:Information technologyTechnology]]
[[Category:Computer Science]]
Block, Siteadmin, SkipCaptcha, Upload, check user, delete, edit, move, oversight, protect, rollback, Administrator
50,826
edits