Changes

Jump to: navigation, search

Programming language

5,156 bytes added, 04:54, 9 November 2018
/* Imperative programming */ Duplicate links.
A '''programming language''' is an artificial [[language]] used mainly for giving instructions to computers[[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 art of programming==
The act of writing a computer program using a programming language is called [[Computer Programming|programming]]. While there are many guidelines, there are no rules which are guaranteed to produce a correct and usable program, so programming is very much an art or skill rather than a science. Furthermore, a programmer must pay meticulous attention to detail: a moderately large program of say 150,000 instructions must be completely free of punctuation errors, grammatical errors, and spelling mistakes, and must also be largely free of logical errors (as a size comparison, a 400-page paperback book contains about 16,000 lines - 1/10th the size).
Various studies have found that programmers with a comparable amount of experience may differ in skill levels by a factor of 10 or more.
==About Classifying programming languages==Some programming languages are generalThe initial distinction is between '''low-purpose and some are specific to a particular problem domain. However, programming level languages evolve over time ''' and usually become more general'''high-purpose. For instance, the [[BASIC programming language]] and the [[Pascal programming language]] were originally intended as teaching level languages, for students of programming. But both are now popular as general-purpose languages. The features of most modern programming languages are similar, but the words and syntax differ. For instance, the PRINT statement is used to output data in BASIC, whereas WRITELN is used for the same purpose in Pascal. Even when the words and syntax are similar between two languages, often the meaning (semantics) is different'''.
==Distinguishing features=Low-level languages===Programming Low-level languages can be divided into are generally referred to as '''declarative''' and '''proceduralassembly''' languages. Declarative Most instructions in such languages define information equate directly to a single machine instruction. Each machine architecture has its own assembly language, so programs written in such as relationships languages are generally very machine-specific and attributesare not portable. Prolog is an example of a declarative language. Procedural The instructions in such languages define processes are usually fairly cryptic, often using abbreviations such as ADD, JNE, LR, LI, etc. In the early days of computing (algorithmsup to about 1ate 1950's) for the computer most programming was done in assembly language, partly due to follow. C is an example the limited power and memory capacity of a procedural languageearly computers.
Languages can also be divided into '''low===High-level languages''' such as Assembly, and '''high===High-level languages''' such as 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 [[Cobol|COBOLcompiler]]s are available on which computers. LowThese are often referred to as 3rd-level generation languages are those where (the program 1st generation was raw binary machine code interacts directly (or fairly directly), with the CPU2nd was assembly language). A single high-level statement may be equivalent to using 3 to 10 assembly language statements, whereas so programming in a high-level language can be much more productive. One of the key reasons for the success of high-level languages have is that they provide a higher level of abstraction, leaving (sometimes several such levels). which means that a programmer can concentrate more on the compiler or interpreter problem to deal with issuing be solved and less on the appropriate commands detail of how to the CPU, and similar issuessolve it.
The level There are a variety of different programming paradigms (styles of writing programs). Some programming languages really only support a language is a sliding scale, with some languages considered more high-level than single paradigm while othersmay support several. LowPossible paradigms include: imperative, declarative, procedural, functional, event-level langauges tend to require more steps to accomplish the same tasks than highdriven, object-level languages. [[Assembly language]] is not '''a''' specific languageoriented, such as BASIClist processing, but rather any of a group of languages that are each specific to a particular [[CPU]]and automata-based.
MostLanguages associated with computers can also be classified as to whether or not they are Turing-complete, if i.e. whether or not they are capable of expressing all, high-level languages support the following features: sub-routines possible computations (functions assuming enough time and proceduresmemory), variables, flow-control, data types, I/O, arithmetic operations, string operations, dynamic allocation (heaps), arrays, structures, constants, and literals. Unique features Examples of some languages will find their way into other which are not Turing-complete include SQL for describing databases and markup languages if the feature is generally useful, or will remain unique to the language otherwise. An example of a feature that has not received widespread acceptance is '''sets'''such as HTML and XML.
Example statements include: X = 5 + Y*3 '''Objectsif''' are a means of encapsulating data and algorithms that operate on that data, with polymorphism. Originally specified in Simula, objects became popular with the advent of C++. Many languages which originally did not support objects have since acquired them. For instance [[Visual BASIC]] is a version of BASIC supporting objects. Likewise, [[Borland Delphi]] is a version of Pascal supporting objects.result < 3 '''then''' stop '''print''' "Hello world"
==Implementation of ==Imperative programming lLanguages====A set This is the most common type of instructions written in a programming language is called '''source code''', and many of the other paradigms are derived from or simply '''code'''build on this. In order for a computer to execute a programWhen using an imperative language, another program must be used to prepare the source programmer is responsible for execution. '''Interpreters''' translate the source code into '''machine code''' giving precise instructions as the program executesto exactly what has to be done and in what order. '''Compilers''' and '''Assemblers''' convert Note that some programs may have a random element included so that the source code into machine code once, and the computer can run the machine code any number results of times. This makes compiled code run faster than interpreted code, usually by a factor of about 10program are not necessarily predictable.
==Language List==Most of the program code in Early high-level programming languages were often intended for use today is written in C, C++, a particular problem domain::[[COBOL]] for business purposes, :[[Fortran]] and Java. Other popular general-purpose languages include BASICAlgol 60 for scientific calculations, :[[BASIC programming language|BASIC]] and [[Pascal programming language|Pascal]] for teaching purposes, and :[[C#. There are literally thousands of ]] for systems programming languages, although many of them are simply variants of others. Variants are called '''dialects'''. Thus(writing operating systems and compilers), Visual BASIC is a dialect of BASIC:[[LISP]] for list processing and artificial intelligence.
Successful programming languages evolve over time to become more general-purpose, or form the basis for other languages (e.g. '''C''' -> '''C++'''). The following evolution often involves incorporating good features from other languages. The general trend is for languages to become more general-purpose and provide more levels of abstraction. The concepts of structured programming were put on a sample list sound theoretical basis in the early 1970s 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 1960s, but did not become popular until the advent of [[C++]] in the early 1980s and [[Java]] in the mid 1990s; confusingly, Java and C++ have a lot of syntax in common, but the meaning (semantics) may differ drastically for what looks the same when written down.
A-0====Declarative programming====Declarative languages define relationships and facts, ask a question, and leave 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). These languages can be effective in areas such as database analysis, symbolic mathematics, and language parsing.
Ada==Implementation of programming languages==A program as written by a programmer in some programming language is said to be in the form of '''source code'''. Such source code can not be used as is, but must first be processed by another program before it can be used on a computer.
ALGOLIn 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.
APLThere are three types of program for dealing with high-level programming languages:* '''[[compiler]]''', which converts the entire program to machine code prior to use.* '''[[Interpreter (computer science)|interpreter]]''', which examines the source program line by line, works out what has to be done and does it.* translation to some '''intermediate code''', which can then either be interpreted or converted to machine code on the fly.
AssemblyPrograms which have been completely converted to machine code prior to use may easily run 10 times faster than programs which are interpreted.
[[BASIC]]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 important (e.g. Fortran, '''C'''), interpreters have been used for languages where convenience of 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).
[[C]]==Assorted Languages==
[[C++]]Information 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>
C#According 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:
COBOL:[[C]]:[[C++]]:C#:[[Java]]:[[Javascript]]:[[Perl]]:[[PHP]]:[[Python (programming language)|Python]]:Ruby:Shell:[[SQL]]:Visual Basic
DA 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>
EuclidAccording 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.
Galaxy IITRAN Java==Prescient Quotes on Police State Programming Surveillance==* "The progress of [[Javascriptscience]] Jovial LISP Modula 2 MUMPS Oberon in furnishing the [[Pascalbig government|government]] with means of [[espionage]] 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