COMPUTER PROGRAMMING LANGUAGE
Computer programming language, any of various languages for expressing a set of detailed instructions for a digital computer. Such instructions can be executed directly when they are in the computer manufacturer-specific numerical form known as machine language, after a simple substitution process when expressed in a corresponding assembly language, or after translation from some “higher-level” language. Although there are over 2,000 computer languages, relatively few are widely used.
Machine and assembly languages are “low-level,” requiring a programmer to manage explicitly all of a computer’s idiosyncratic features
of data storage and operation. In contrast, high-level languages shield
a programmer from worrying about such considerations and provide a
notation that is more easily written and read by programmers.
LANGUAGE TYPES
Machine and assembly languages
A
machine language consists of the numeric codes for the operations that a
particular computer can execute directly. The codes are strings of 0s
and 1s, or binary digits (“bits”), which are frequently converted both
from and to hexadecimal (base 16) for human viewing and modification.
Machine language instructions typically use some bits to represent
operations, such as addition, and some to represent operands, or perhaps
the location of the next instruction. Machine language is difficult to
read and write, since it does not resemble conventional mathematical
notation or human language, and its codes vary from computer to
computer.
READ MORE ON THIS TOPIC
Assembly language is one level above machine language. It uses short mnemonic codes
for instructions and allows the programmer to introduce names for
blocks of memory that hold data. One might thus write “add pay, total”
instead of “0110101100101000” for an instruction that adds two numbers.
Assembly
language is designed to be easily translated into machine language.
Although blocks of data may be referred to by name instead of by their
machine addresses, assembly language does not provide more sophisticated
means of organizing complex information. Like machine language,
assembly language requires detailed knowledge of internal computer
architecture. It is useful when such details are important, as in
programming a computer to interact with input/output devices (printers, scanners, storage devices, and so forth).
Algorithmic languages
FORTRANAlgorithmic languages are designed to express mathematical or symbolic computations. They can express algebraic operations in notation similar to mathematics and allow the use of subprograms that package commonly used operations for reuse. They were the first high-level languages.
The first important algorithmic language was FORTRAN (formula translation), designed in 1957 by an IBM team led by John Backus. It was intended for scientific computations with real numbers
and collections of them organized as one- or multidimensional arrays.
Its control structures included conditional IF statements, repetitive
loops (so-called DO loops), and a GOTO statement that allowed
nonsequential execution of program code. FORTRAN made it convenient to
have subprograms for common mathematical operations, and built libraries
of them.
FORTRAN was also designed to translate into efficient machine language. It was immediately successful and continues to evolve.
ALGOL
ALGOL (algorithmic language) was designed by a committee of American and European computer scientists during 1958–60 for publishing algorithms,
as well as for doing computations. Like LISP (described in the next
section), ALGOL had recursive subprograms—procedures that could invoke themselves to solve a problem by reducing it to a smaller problem of the same kind. ALGOL introduced block
structure, in which a program is composed of blocks that might contain
both data and instructions and have the same structure as an entire
program. Block structure became a powerful tool for building large
programs out of small components.
ALGOL
contributed a notation for describing the structure of a programming
language, Backus–Naur Form, which in some variation became the standard
tool for stating the syntax (grammar)
of programming languages. ALGOL was widely used in Europe, and for many
years it remained the language in which computer algorithms were
published. Many important languages, such as Pascal and Ada (both
described later), are its descendants.
LISP
TEST YOUR KNOWLEDGE
LISP (list processing) was developed about 1960 by John McCarthy at the Massachusetts Institute of Technology (MIT) and was founded on the mathematical theory of recursive functions
(in which a function appears in its own definition). A LISP program is a
function applied to data, rather than being a sequence of procedural
steps as in FORTRAN and ALGOL. LISP uses a very simple notation in which
operations and their operands are given in a parenthesized list. For
example, (+ a (* b c)) stands for a + b*c.
Although this appears awkward, the notation works well for computers.
LISP also uses the list structure to represent data, and, because
programs and data use the same structure, it is easy for a LISP program
to operate on other programs as data.
LISP became a common language for artificial intelligence (AI) programming, partly owing to the confluence of
LISP and AI work at MIT and partly because AI programs capable of
“learning” could be written in LISP as self-modifying programs. LISP has
evolved through numerous dialects, such as Scheme and Common LISP.
C
The C programming language was developed in 1972 by Dennis Ritchieand Brian Kernighan at the AT&T Corporation for programming computer operating systems. Its capacity to structure data and programs through the composition of
smaller units is comparable to that of ALGOL. It uses a compact
notation and provides the programmer with the ability to operate with
the addresses of data as well as with their values. This ability is
important in systems programming,
and C shares with assembly language the power to exploit all the
features of a computer’s internal architecture. C, along with its
descendant C++, remains one of the most common languages.
Business-oriented languages
COBOL
COBOL (common business oriented language)
has been heavily used by businesses since its inception in 1959. A
committee of computer manufacturers and users and U.S. government
organizations established CODASYL (Committee on Data Systems and Languages) to develop and oversee the language standard in order to ensure its portability across diverse systems.
COBOL
uses an English-like notation—novel when introduced. Business
computations organize and manipulate large quantities of data, and COBOL
introduced the record data structure for such tasks. A record clusters heterogeneous data such as a name, ID number, age, and address into a single unit. This contrasts with scientific languages, in which homogeneous arrays
of numbers are common. Records are an important example of “chunking”
data into a single object, and they appear in nearly all modern
languages
SQL
SQL (structured query language) is a language for specifying the organization of databases
(collections of records). Databases organized with SQL are called
relational because SQL provides the ability to query a database for
information that falls in a given relation. For example, a query might
be “find all records with both last_name Smith and city New York.” Commercial database programs commonly use a SQL-like language for their queries
.
.
Education-oriented languages
BASIC
BASIC (beginner’s all-purpose symbolic instruction code) was designed at Dartmouth College in the mid-1960s by John Kemeny and
Thomas Kurtz. It was intended to be easy to learn by novices,
particularly non-computer science majors, and to run well on a time-sharing computer with many users. It had simple data structures and
notation and it was interpreted: a BASIC program was translated
line-by-line and executed as it was translated, which made it easy to
locate programming errors.
Its
small size and simplicity also made BASIC a popular language for early
personal computers. Its recent forms have adopted many of the data and
control structures of other contemporary languages, which makes it more
powerful but less convenient for beginners.
Pascal
About 1970 Niklaus Wirth of Switzerland designed Pascal to
teach structured programming, which emphasized the orderly use of
conditional and loop control structures without GOTO statements.
Although Pascal resembled ALGOL in notation, it provided the ability to
define data types with which to organize complex information, a feature
beyond the capabilities of ALGOL as well as FORTRAN and COBOL.
User-defined data types allowed the programmer to introduce names for
complex data, which the language translator could then check for correct
usage before running a program.
READ MORE ON THIS TOPIC
During
the late 1970s and ’80s, Pascal was one of the most widely used
languages for programming instruction. It was available on nearly all
computers, and, because of its familiarity, clarity, and security, it
was used for production software as well as for education.
LogoLogo originated in the late 1960s as a simplified LISP dialect for education; Seymour Papert and others used it at MIT to teach mathematical thinking to schoolchildren. It had a more conventional syntax than LISP and featured “turtle graphics,” a simple method for generating computer graphics. (The name came from an early project to program a turtlelike robot.) Turtle graphics used body-centred instructions, in which an object was moved around a screen by commands, such as “left 90” and “forward,” that specified actions relative to the current position and orientation of the object rather than in terms of a fixed framework. Together with recursive routines, this technique made it easy to program intricate and attractive patterns.
Hypertalk
Hypertalk was designed as “programming for the rest of us” by Bill Atkinson for Apple’s
Macintosh. Using a simple English-like syntax, Hypertalk enabled anyone
to combine text, graphics, and audio quickly into “linked stacks” that
could be navigated by clicking with a mouse on standard buttons supplied
by the program. Hypertalk was particularly popular among educators in
the 1980s and early ’90s for classroom multimedia presentations.
Although Hypertalk had many features of object-oriented languages
(described in the next section), Apple did not develop it for other
computer platforms and let it languish; as Apple’s market share declined
in the 1990s, a new cross-platform way of displaying multimedia left
Hypertalk all but obsolete (see the section World Wide Web display languages).
Object-oriented languages
Object-oriented
languages help to manage complexity in large programs. Objects package
data and the operations on them so that only the operations are publicly
accessible and internal details of the data structures are hidden. This
information hiding made large-scale programming easier by allowing a
programmer to think about each part of the program in isolation. In
addition, objects may be derived from more general ones, “inheriting”
their capabilities. Such an object hierarchy made it possible to define specialized objects without repeating all that is in the more general ones.
TEST YOUR KNOWLEDGE
Object-oriented programming began
with the Simula language (1967), which added information hiding to
ALGOL. Another influential object-oriented language was Smalltalk
(1980), in which a program was a set of objects that interacted by
sending messages to one another.
C++
The C++ language, developed by Bjarne Stroustrup at AT&T in the mid-1980s, extended C by adding objects to it while preserving the efficiencyof C programs. It has been one of the most important languages for both education and industrial programming. Large parts of many operating systems, such as the Microsoft Corporation’s Windows 98, were written in C++
.
Ada
Ada was named for Augusta Ada King, countess of Lovelace, who was an assistant to the 19th-century English inventor Charles Babbage, and is sometimes called the first computer programmer. Ada, the language, was developed in the early 1980s for the U.S. Department of Defense for
large-scale programming. It combined Pascal-like notation with the
ability to package operations and data into independent modules. Its
first form, Ada 83, was not fully object-oriented, but the subsequent
Ada 95 provided objects and the ability to construct hierarchies of them. While no longer mandated for use in work for the Department of Defense, Ada remains an effective language for engineering large programs.
Java
In the early 1990s, Java was designed by Sun Microsystems, Inc., as a programming language for the World Wide Web (WWW).
Although it resembled C++ in appearance, it was fully object-oriented.
In particular, Java dispensed with lower-level features, including the
ability to manipulate data addresses, a capability that is neither
desirable nor useful in programs for distributed systems. In order to be
portable, Java programs are translated by a Java Virtual Machine
specific to each computer platform, which then executes the Java
program. In addition to adding interactive capabilities to the Internet through Web “applets,” Java has been widely used for programming small and portable devices, such as mobile telephones.