Programming language: Difference between revisions

From Citizendium
Jump to navigation Jump to search
imported>Pat Palmer
(→‎Compiled vs. interpreted: more paragraphs to this section)
imported>Pat Palmer
Line 5: Line 5:


==Compiled vs. interpreted==
==Compiled vs. interpreted==
One way in which various programming languages have traditionally been categorized is as [[compiler|compiled]] vs. [[interpreter|interpreted]] languages.  The traditional view was that ''compiled'' languages were first translated, by a ''compiler'' program, from human-readable [[source code]] into [[binary numeral system|binary]] [[machine code]].  Some widely used early languages such as [[Fortran] and [[C programming language|C]] use pure compilation.
One way in which various programming languages have traditionally been categorized is as [[compiler|compiled]] vs. [[interpreter|interpreted]] languages.  The traditional view was that ''compiled'' languages were first translated, by a ''compiler'' program, from human-readable [[source code]] into [[binary numeral system|binary]] [[machine code]].  Some widely used early languages such as [[Fortran]] and [[C programming language|C]] use pure compilation.


Conversely, ''interpreted'' languages relied, at run time, on a special runtime application, called the ''interpreter'', to translate [[source code]] line by line into [[machine code]] during program execution.  An example of an early purely interpreted language is [[Snobol]].
Conversely, ''interpreted'' languages relied, at run time, on a special runtime application, called the ''interpreter'', to translate [[source code]] line by line into [[machine code]] during program execution.  An example of an early purely interpreted language is [[Snobol]].

Revision as of 22:08, 19 September 2007

A programming language is a human-readable lexicon and grammar that a programmer uses to instruct a computer how to operate. Programs written in a programming language have to be translated into machine code, usually by a compiler program. Machine code consists of multiple lower-level instructions which the computer can actually understand. Use of a programming language allows programmers to work at a higher level than machine code (which is not human-readable).

Language categories

The following are some of the ways that people have categorized different computer programming languages, although there is not always agreement on the precise meaning of the categories, or which languages belong in them. This article will attempt to describe the more common contradictory uses of the following terms.

Compiled vs. interpreted

One way in which various programming languages have traditionally been categorized is as compiled vs. interpreted languages. The traditional view was that compiled languages were first translated, by a compiler program, from human-readable source code into binary machine code. Some widely used early languages such as Fortran and C use pure compilation.

Conversely, interpreted languages relied, at run time, on a special runtime application, called the interpreter, to translate source code line by line into machine code during program execution. An example of an early purely interpreted language is Snobol.

The division between compiled languages and interpreted languages has blurred since the 1990's with the advent of hybrid platforms such as Java and the .NET Framework (C# and VB.NET). These hybrid languages compile down to an intermediate language, and the intermediate languages require sophisticated, optimized "runtime" engines to execute. The runtime engines could be implemented as interpreters (early ones were), but nowadays they typically use Just-In-Time compilers to generate native machine code from the intermediate language on an as-needed basis at runtime. So multiple compilers are involved, at different points in the program lifecycle.


High-level vs. low-level

Another way in which programming languages are sometimes categorized is into "high-level" versus "low-level" languages. "High-level" programming languages have one high-level command or statement corresponding to many machine code instructions. "Low-level" programming languages, including especially assemblers, may have approximately one human-readable instruction per binary machine instruction. A "high-level" language may also sometimes be called "low-level" if it permits a programmer to perform certain (possibly risky) hardware or operating system operations. C is technically "high-level" but is sometimes regarded as "low-level" as well because it imposes little, if any, restrictions on what a programmer can do in terms of accessing the computer's raw hardware capabilities.

General purpose vs. special purpose

A third categorization for programming languages is whether the language is "general purpose" or "special purpose". A language is considered general-purpose if any program at all can be coded in the language. Conversely, if the language is targeted towards making certain kinds of things possible, but does not do everything that other languages might, it is considered "special purpose". Examples of general-purposes languages are C, Java and C#. An example of a special-purpose programming language is SQL (used to interact with database programs).

Markup languages (special purpose)

Markup languages contain a lexicon and grammar, but they are limited in purpose. Their purpose is to mark up text information into segments, and label each segment so that another program, sometime in the future, can "render" or display this information in a useful manner (instead of as one large blob of text). Examples of markup languages are HTML, LaTeX, SGML, XML and Postscript. HTML marks up information intended to be displayed later in a web browser; HTML tells the browser where paragraphs begin and end, which text to make into hyperlinks (and the target for those), what color to make the background, and things like that. Web browsers later "interpret" the markup commands within HTML pages and then format the page for display to human readers. Postscript commands are used to tell printers how to print documents; printers act as the "interpreter" for postscript commands embedded within documents to be printed.

PDF is a derivative of Postscript and serves many of the same functions but now can be embedded with Javascript and other features. XML takes the markup approach one step farther. Not only can it be used for human-readable presentations, but it also provides a simple, consistent format that other programs can use to store and transfer data across platforms.

Object-oriented vs. procedural

Strongly-typed vs. loosely-typed

Declarative

Dynamic languages

Scripting languages

Assemblers

In the first computers, programmers had to work with binary machine code, which was very tedious and difficult. It was a huge breakthrough when someone wrote the first "assembler", a program which translated human-readable mnemonic words (written in plain text) into binary machine code. There is usually a one-to-one correspondence between assembler source code mnemonics (commands) with machine code instructions. A different assembler had to be written for each kind of computer, because each computer has a different machine instruction set, so there are many different assembler languages in existence (they are sometimes also called assembly languages). Assemblers were pre-cursors to high-level programming languages. In fact, compilers usually translate high-level program source code in two stages, first from human-readable high-level instructions to assembler, then from barely-human-readable assembler to machine code.

List of programming languages

List of programming languages

References