TheInfoList

Pascal is an
imperative Imperative may refer to: *Imperative mood, a grammatical mood (or mode) expressing commands, direct requests, and prohibitions *Imperative programming, a programming paradigm in computer science *Imperative logic *Imperative (film), ''Imperative'' ...
and procedural
programming language A programming language is a formal language In logic, mathematics, computer science, and linguistics, a formal language consists of string (computer science), words whose symbol (formal), letters are taken from an alphabet (computer science) ...

, designed by
Niklaus Wirth Niklaus Emil Wirth (born 15 February 1934) is a Swiss computer scientist. He has designed several programming languages, including Pascal (programming language), Pascal, and pioneered several classic topics in software engineering. In 1984, he w ...

as a small, efficient language intended to encourage good programming practices using
structured programming Structured programming is a programming paradigm Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms. Some paradigms are concerned mainly with impl ...
and . It is named in honour of the French mathematician, philosopher and physicist
Blaise Pascal Blaise Pascal ( , , ; ; 19 June 1623 – 19 August 1662) was a French mathematician A mathematician is someone who uses an extensive knowledge of mathematics Mathematics (from Greek: ) includes the study of such topics as numbers ...

. Based on Wirth's book ''
Algorithms + Data Structures = Programs ''Algorithms + Data Structures = Programs'' is a 1976 book written by Niklaus Wirth covering some of the fundamental topics of computer programming, particularly that algorithms and data structures are inherently related. For example, if one has a ...
'', Pascal was developed on the pattern of the
ALGOL 60 ALGOL 60 (short for ''Algorithmic Language 1960'') is a member of the ALGOL ALGOL (; short for "Algorithmic Language") is a family of imperative Imperative may refer to: *Imperative mood, a grammatical mood (or mode) expressing commands, dir ...
language. Wirth was involved in the process to improve the language as part of the
ALGOL X ALGOL X was the code name given to a programming language A programming language is a formal language In logic, mathematics, computer science, and linguistics, a formal language consists of string (computer science), words whose symbol (fo ...
efforts and proposed a version named
ALGOL W ALGOL W is a programming language A programming language is a formal language comprising a Instruction set architecture, set of instructions that produce various kinds of Input/output, output. Programming languages are used in computer programm ...
. This was not accepted, and the ALGOL X process bogged down. In 1968, Wirth decided to abandon the ALGOL X process and further improve ALGOL W, releasing this as Pascal in 1970. On top of ALGOL's
scalar Scalar may refer to: *Scalar (mathematics), an element of a field, which is used to define a vector space, usually the field of real numbers *Scalar (physics), a physical quantity that can be described by a single element of a number field such as ...
s and
array ARRAY, also known as ARRAY Now, is an independent distribution company launched by film maker and former publicist Ava DuVernay Ava Marie DuVernay (; born August 24, 1972) is an American filmmaker. She won the directing award in the U.S. dram ...
s, Pascal enables defining complex datatypes and building dynamic and recursive data structures such as
list A ''list'' is any set of items. List or lists may also refer to: People * List (surname)List or Liste is a European surname. Notable people with the surname include: List * Friedrich List (1789–1846), German economist * Garrett List (194 ...
s,
tree In botany, a tree is a perennial plant with an elongated Plant stem, stem, or trunk (botany), trunk, supporting branches and leaves in most species. In some usages, the definition of a tree may be narrower, including only wood plants with se ...
s and
graph Graph may refer to: Mathematics *Graph (discrete mathematics), a structure made of vertices and edges **Graph theory, the study of such graphs and their properties *Graph (topology), a topological space resembling a graph in the sense of discret ...
s. Pascal has
strong typing In computer programming, one of the many ways that programming languages are colloquially classified is whether the language's type system makes it strongly typed or weakly typed (loosely typed). However, there is no precise technical definition of ...
on all objects, which means that one type of data cannot be converted to or interpreted as another without explicit conversions. Unlike C (and most languages in the
C-family Due to the success of the C programming language C (, as in the letter ''c'') is a general-purpose, procedural computer programming language A programming language is a formal language comprising a Instruction set architecture, set of i ...
), Pascal allows nested procedure definitions to any level of depth, and also allows most kinds of definitions and declarations inside
subroutines In computer programming Computer programming is the process of designing and building an executable computer program to accomplish a specific computing result or to perform a particular task. Programming involves tasks such as analysis, gener ...
(procedures and functions). A program is thus syntactically similar to a single procedure or function. This is similar to the block structure of ALGOL 60, but restricted from arbitrary block statements to just procedures and functions. Pascal became very successful in the 1970s, notably on the burgeoning
minicomputer A minicomputer, or colloquially mini, is a class of smaller general purpose computers that developed in the mid-1960s and sold for much less than Mainframe computer, mainframe and mid-size computers from IBM and BUNCH, its direct competitors. In ...
market.
Compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily ...

s were also available for many
microcomputer A microcomputer is a small, relatively inexpensive computer with a microprocessor as its central processing unit (CPU). It includes a microprocessor, Computer memory, memory and minimal input/output (I/O) circuitry mounted on a single printed ci ...
s as the field emerged in the late 1970s. It was widely used as a teaching language in
university A university () is an educational institution, institution of higher education, higher (or Tertiary education, tertiary) education and research which awards academic degrees in several Discipline (academia), academic disciplines. Universities typ ...

-level programming courses in the 1980s, and also used in production settings for writing commercial software during the same period. It was displaced by the
C programming language C (, as in the letter ''c'') is a general-purpose, procedural computer programming language A programming language is a formal language comprising a Instruction set architecture, set of instructions that produce various kinds of Input/outp ...
during the late 1980s and early 1990s as
UNIX Unix (; trademarked as UNIX) is a family of multitasking, multiuser Multi-user software is computer software Software is a collection of Instruction (computer science), instructions that tell a computer how to work. This is in contrast t ...

-based systems became popular, and especially with the release of
C++ C, or c, is the third Letter (alphabet), letter in the English alphabet, English and ISO basic Latin alphabets. Its name in English is English alphabet#Letter names, ''cee'' (pronounced ), plural ''cees''. History "C" comes from the same ...

. A derivative named
Object Pascal Object Pascal is an extension to the programming language Pascal Pascal, Pascal's or PASCAL may refer to: People and fictional characters * Pascal (given name), including a list of people with the name * Pascal (surname), including a list of ...
designed for
object-oriented programming Object-oriented programming (OOP) is a programming paradigm Programming paradigms are a way to classify programming languages based on their features. Languages can be classified into multiple paradigms. Some paradigms are concerned mai ...
was developed in 1985. This was used by
Apple Computer Apple Inc. is an American multinational Multinational may refer to: * Multinational corporation, a corporate organization operating in multiple countries * Multinational force, a military body from multiple countries * Multinational state, ...
and
Borland Borland Software Corporation was a computer technology company founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn. Its main business was the development and sale of software development and software deployment products. ...
in the late 1980s and later developed into
Delphi Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracle ...
on the
Microsoft Windows Microsoft Windows, commonly referred to as Windows, is a group of several proprietary {{Short pages monitor

## Variations

Niklaus Wirth's Zürich version of Pascal was issued outside ETH Zürich, ETH in two basic forms: the CDC 6000 compiler source, and a porting kit called Pascal-P system. The Pascal-P compiler left out several features of the full language that were not required to bootstrap the compiler. For example, procedures and functions used as parameters, undiscriminated variant records, packing, dispose, interprocedural gotos and other features of the full compiler were omitted.
UCSD Pascal UCSD Pascal is a Pascal programming language Pascal is an Imperative programming, imperative and Procedural programming, procedural programming language, designed by Niklaus Wirth as a small, efficient language intended to encourage good progr ...
, under Professor
Kenneth Bowles Kenneth L. "Ken" Bowles (c. 1929 – August 15, 2018) was an American computer science, computer scientist best known for his work in initiating and directing the UCSD Pascal project, when he was a professor of computer science at the University of ...
, was based on the Pascal-P2 kit, and consequently shared several of the Pascal-P language restrictions. UCSD Pascal was later adopted as Apple Pascal, and continued through several versions there. Although UCSD Pascal actually expanded the subset Pascal in the Pascal-P kit by adding back standard Pascal constructs, it was still not a complete standard installation of Pascal. In the early 1990s, Alan Burns (professor), Alan Burns and Geoff Davies developed Pascal-FC, an extension to Pl/0 (from the Niklaus' book ''Algorithms + Data Structures = Programs''). Several constructs were added to use Pascal-FC as a teaching tool for Concurrent Programming (such as semaphores, monitors, channels, remote-invocation and resources). To be able to demonstrate concurrency, the compiler output (a kind of p-code machine, P-code) could then be executed on a virtual machine. This virtual machine not only simulated a normal – fair – environment, but could also simulate extreme conditions (unfair mode).

### Borland-like Pascal compilers

Borland Borland Software Corporation was a computer technology company founded in 1983 by Niels Jensen, Ole Henriksen, Mogens Glad and Philippe Kahn. Its main business was the development and sale of software development and software deployment products. ...
's
Turbo Pascal Turbo Pascal is a software development system that includes a compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into ano ...
, written by
Anders Hejlsberg Anders Hejlsberg (, born 2 December 1960) is a Danish Danish may refer to: * Something of, from, or related to the country of Denmark * A national or citizen of Denmark, also called a "Dane", see Demographics of Denmark * Danish people or Danes, ...

, was written in assembly language independent of UCSD and the Zürich compilers. However, it adopted much of the same subset and extensions as the UCSD compiler. This is probably because the UCSD system was the most common Pascal system suitable for developing applications on the resource-limited microprocessor systems available at that time. The shrink-wrapped Turbo Pascal version 3 and later incarnations, including Borland's
Object Pascal Object Pascal is an extension to the programming language Pascal Pascal, Pascal's or PASCAL may refer to: People and fictional characters * Pascal (given name), including a list of people with the name * Pascal (surname), including a list of ...
and
Delphi Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracle ...
and non-Borland near-compatibles became popular with programmers including shareware authors, and so the SWAG library of Pascal code features a large amount of code written with such versions as Delphi in mind. Software products (
compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into another language (the ''target'' language). The name "compiler" is primarily ...

s, and IDE/Rapid Application Development (RAD)) in this category: *
Turbo Pascal Turbo Pascal is a software development system that includes a compiler In computing, a compiler is a computer program that Translator (computing), translates computer code written in one programming language (the ''source'' language) into ano ...
– "TURBO.EXE" up to version 7, and Turbo Pascal for Windows ("TPW") and Turbo Pascal#Apple Macintosh, Turbo Pascal for Macintosh. * Turbo Pascal, Borland Pascal 7 – A professional version of Turbo Pascal line which targeted both DOS and Windows. *
Object Pascal Object Pascal is an extension to the programming language Pascal Pascal, Pascal's or PASCAL may refer to: People and fictional characters * Pascal (given name), including a list of people with the name * Pascal (surname), including a list of ...
– an extension of the Pascal language that was developed at
Apple Computer Apple Inc. is an American multinational Multinational may refer to: * Multinational corporation, a corporate organization operating in multiple countries * Multinational force, a military body from multiple countries * Multinational state, ...
by a team led by
Larry Tesler Lawrence Gordon Tesler (April 24, 1945 – February 16, 2020) was an American computer scientist A computer scientist is a person who has acquired the knowledge of computer science Computer science deals with the theoretical foundations ...
in consultation with
Niklaus Wirth Niklaus Emil Wirth (born 15 February 1934) is a Swiss computer scientist. He has designed several programming languages, including Pascal (programming language), Pascal, and pioneered several classic topics in software engineering. In 1984, he w ...

, the inventor of Pascal; its features were added to Borland's Turbo Pascal#Apple Macintosh, Turbo Pascal for Macintosh and in 1989 for Turbo Pascal 5.5 for DOS. *
Delphi Delphi (; ), in legend previously called Pytho (Πυθώ), in ancient times was a sacred precinct that served as the seat of Pythia, the major oracle who was consulted about important decisions throughout the ancient classical world. The oracle ...
– Object Pascal is essentially its underlying language. *
Free Pascal Free Pascal Compiler (FPC) is a compiler for the closely related programming-language dialects Pascal (programming language), Pascal and Object Pascal. It is free software released under the GNU General Public License, witexception clausesthat al ...
compiler (FPC) – Free Pascal adopted the de facto standard dialect of Pascal programmers, Borland Pascal and, later, Delphi. Freepascal also supports both ISO standards. * PascalABC.NET – a new generation Pascal programming language including compiler and IDE. * Kylix (software), Borland Kylix is a compiler and IDE formerly sold by Borland, but later discontinued. It is a Linux version of the Delphi (software), Borland Delphi software development environment and C++Builder. * Lazarus – similar to Kylix in function, is a free cross-platform visual IDE for RAD using the Free Pascal compiler, which supports dialects of
Object Pascal Object Pascal is an extension to the programming language Pascal Pascal, Pascal's or PASCAL may refer to: People and fictional characters * Pascal (given name), including a list of people with the name * Pascal (surname), including a list of ...
to varying degrees. * Virtual Pascal – VP2/1 is a fully Borland Pascal– and Borland Delphi–compatible 32-bit Pascal compiler for OS/2 and Windows 32 (with a Linux version "on the way"). * Sybil is an open source Delphi-like IDE and compiler; implementations include: ** WDSibyl for
Microsoft Windows Microsoft Windows, commonly referred to as Windows, is a group of several proprietary {{Short pages monitor