Changes

Jump to: navigation, search

Programming language

1,749 bytes added, 04:54, 9 November 2018
/* Imperative programming */ Duplicate links.
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 of high-level languages are '''imperative''' and '''declarative''', with ====Imperative programming====This is the first most common type being far more common. 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 programming language is Prolog (Programming in Logic). These languages can be effective in areas such as database analysis, symbolic mathematics, and language parsingmany of the other paradigms are derived from or build on this. When using an imperative language, the programmer 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. 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.
Early high-level programming languages were often intended for use in a particular problem domain:
:[[COBOL ]] for business purposes,:[[Fortran ]] and Algol 60 for scientific calculations,:[[BASIC programming language|BASIC]] and [[Pascal programming language|Pascal ]] for teaching purposes,:'''[[C''' ]] for systems programming (writing operating systems and compilers),:[[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 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 sound theoretical basis in the early 1970's 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 1960's1960s, but did not become popular until the advent of [[C++ ]] in the early 1980's 1980s and [[Java ]] in the mid 1990's1990s; 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.
There are a variety of different programming paradigms (styles of writing programs). Some ====Declarative programming ====Declarative languages really only support define relationships and facts, ask a single paradigm while others may support several. Declarative programming has already been mentioned above. Other paradigms include: procedural, functional, event-driven, object-oriented, list processingquestion, and automata-based. Languages associated with computers can also be classified as leave it to whether or not they are Turing-complete, ithe underlying program implementation and its theorem prover to work out how to derive an answer.e. whether or not they are capable An example of expressing all possible computations such a language is Prolog (assuming enough time and memoryProgramming in Logic). Examples of languages which are not Turing-complete include SQL for describing databases and markup These languages can be effective in areas such as HTML database analysis, symbolic mathematics, and XMLlanguage parsing.
==Implementation of programming languages==
There 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.
:[[Java]]
:[[Javascript]]
:[[Perl]]:[[PHP]]
:[[Python (programming language)|Python]]
:Ruby
:Shell
:[[SQL]]
:Visual Basic
 
A 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>
According to Professor Alfred V. Aho <ref>{{cite web
: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 [[science]] in furnishing the [[big 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]]?"
** [[Louis Brandeis]]''' (1856-1941), [[United States Supreme Court]] [[Associate Justice]] Dissenting, ''[[Olmstead v. United States]]'', 277 U.S. 438 (1928).
==References==
{{reflist|2}}
[[Category:Information technologyTechnology]]
[[Category:Computer Science]]
Block, Siteadmin, SkipCaptcha, Upload, check user, delete, edit, move, oversight, protect, rollback, Administrator
50,826
edits