Turbo Pascal
Turbo Pascal
Turbo Pascal
Pascal
Imperative
Structured
Paradigm
Designed by
First appeared
Typing discipline
Niklaus Wirth
1970; 47 years ago
Static
Strong
Safe
Delphi
Turbo Pascal
UCSD Pascal
Influenced by
ALGOL W
Influenced
Ada
Component Pascal
Go
Java[1][2][3]
Modula / -2 / -3
Oberon / -2
Object Pascal
Oxygene
Seed7
Pascal is an imperative and procedural programming language, which Niklaus Wirth designed in
196869 and published in 1970, as a small, efficient language intended to encourage good
programming practices using structured programming and data structuring.
A derivative known as Object Pascal designed for object-oriented programming was developed in
1985.
Contents
1 History
2 Brief description
3 Implementations
3.1 Early Pascal compilers
3.2 The Pascal-P system
3.3 Object Pascal and Turbo Pascal
3.4 Other variants
4 Language constructs
4.1 Data types
4.2 Subrange types
4.3 Set types
4.4 Type declarations
4.5 File type
4.6 Pointer types
4.7 Control structures
4.8 Procedures and functions
4.9 Semicolons as statement separators
5 Resources
5.1 Compilers and interpreters
5.2 IDEs
5.3 Libraries
6 Standards
6.1 ISO/IEC 7185:1990 Pascal
6.2 ISO/IEC 10206:1990 Extended Pascal
6.3 Variations
6.3.1 Borland-like Pascal compilers
6.4 List of related standards
7 Reception
7.1 Early criticism
8 See also
9 References
10 Further reading
11 External links
History
Pascal, named in honor of the French mathematician and philosopher Blaise Pascal, was developed
by Niklaus Wirth.
Before his work on Pascal, Wirth had developed Euler and ALGOL W and later went on to develop
the Pascal-like languages Modula-2 and Oberon.
Initially, Pascal was largely, but not exclusively, intended to teach students structured programming.
[4] A generation of students used Pascal as an introductory language in undergraduate courses.
Variants of Pascal have also frequently been used for everything from research projects to PC
games and embedded systems. Newer Pascal compilers exist which are widely used.[5]
Pascal was the primary high-level language used for development in the Apple Lisa, and in the
early years of the Macintosh. Parts of the original Macintosh operating system were hand-translated
into Motorola 68000 assembly language from the Pascal sources.[6] The typesetting system TeX by
Donald E. Knuth was written in WEB, the original literate programming system, based on DEC
PDP-10 Pascal, while applications like Total Commander, Skype and Macromedia Captivate were
written in Delphi (Object Pascal). Apollo Computer used Pascal as the systems programming
language for its operating systems beginning in 1980.
Object Pascal (Embarcadero Delphi) is still used for developing Windows applications but also has
the ability to cross compile the same code to Mac, iOS and Android. Another cross-platform version
called Free Pascal, with the Lazarus IDE, is popular with Linux users since it also offers write once,
compile anywhere development. CodeTyphon is a Lazarus distribution with more preinstalled
packages and cross compilers.
Brief description
Wirth's intention was to create an efficient language (regarding both compilation speed and
generated code) based on structured programming, a recently popularized concept that he promoted
in his book Algorithms + Data Structures = Programs. Pascal has its roots in the ALGOL 60
language, but also introduced concepts and mechanisms which (on top of ALGOL's scalars and
arrays) enabled programmers to define their own complex (structured) datatypes, and also made it
easier to build dynamic and recursive data structures such as lists, trees and graphs. Important
features included for this were records, enumerations, subranges, dynamically allocated variables
with associated pointers, and sets. To make this possible and meaningful, Pascal has a strong typing
on all objects, which means that one type of data cannot be converted or interpreted as another
without explicit conversions. Similar mechanisms are standard in many programming languages
today. Other languages that influenced Pascal's development were Simula 67, and Wirth's own
ALGOL W.
Pascal, like many programming languages of today (but unlike most languages in the C family),
allows nested procedure definitions to any level of depth, and also allows most kinds of definitions
and declarations inside subroutines (procedures and functions). This enables a very simple and
coherent syntax where a complete program is syntactically nearly identical to a single procedure or
function (except for the heading, which has one of these three keywords).
Implementations
Early Pascal compilers
The first Pascal compiler was designed in Zrich for the CDC 6000 series mainframe computer
family. Niklaus Wirth reports that a first attempt to implement it in Fortran in 1969 was
unsuccessful due to Fortran's inadequacy to express complex data structures. The second attempt
was implemented in a C-like language (Scallop by Max Engeli) and then translated by hand (by R.
Schild) to Pascal itself for boot-strapping.[7] It was operational by mid-1970. Many Pascal
compilers since have been similarly self-hosting, that is, the compiler is itself written in Pascal, and
the compiler is usually capable of recompiling itself when new features are added to the language,
or when the compiler is to be ported to a new environment. The GNU Pascal compiler is one
notable exception, being written in C.
The first successful port of the CDC Pascal compiler to another mainframe was completed by Welsh
and Quinn at the Queen's University of Belfast (QUB) in 1972. The target was the ICL 1900 series.
This compiler in turn was the parent of the Pascal compiler for the Information Computer Systems
(ICS) Multum minicomputer. The Multum port was developed with a view to using Pascal as a
systems programming language by Findlay, Cupples, Cavouras and Davis, working at the
Department of Computing Science in Glasgow University. It is thought that Multum Pascal, which
was completed in the summer of 1973, may have been the first 16-bit implementation.
A completely new compiler was completed by Welsh et al. at QUB in 1977. It offered a sourcelanguage diagnostic feature (incorporating profiling, tracing and type-aware formatted postmortem
dumps) that was implemented by Findlay and Watt at Glasgow University. This implementation was
ported in 1980 to the ICL 2900 series by a team based at Southampton University and Glasgow
University. The Standard Pascal Model Implementation was also based on this compiler, having
been adapted, by Welsh and Hay at Manchester University in 1984, to check rigorously for
conformity to the BSI 6192/ISO 7185 Standard and to generate code for a portable abstract
machine.
The first Pascal compiler written in North America was constructed at the University of Illinois
under Donald B. Gillies for the PDP-11 and generated native machine code.
In the 1980s, Anders Hejlsberg wrote the Blue Label Pascal compiler for the Nascom-2. A
reimplementation of this compiler for the IBM PC was marketed under the names Compas Pascal
and PolyPascal before it was acquired by Borland and renamed Turbo Pascal.
Turbo Pascal became hugely popular, thanks to: an aggressive pricing strategy; having one of the
first full-screen Integrated development environments - and very fast turnaround-time (just seconds
to compile, link, and run.) It was written and highly optimized entirely in assembly language,
making it smaller and faster than much of the competition.
In 1986, Anders ported Turbo Pascal to the Macintosh and incorporated Apple's Object Pascal
extensions into Turbo Pascal. These extensions were then added back into the PC version of Turbo
Pascal for version 5.5. At the same time Microsoft also implemented the Object Pascal compiler.
[10][11] Turbo Pascal 5.5 had a large influence on the Pascal community, which began
concentrating mainly on the IBM PC in the late 1980s. Many PC hobbyists in search of a structured
replacement for BASIC used this product. It also began to be adopted by professional developers.
Around the same time a number of concepts were imported from C to let Pascal programmers use
the C-based API of Microsoft Windows directly. These extensions included null-terminated strings,
pointer arithmetic, function pointers, an address-of operator and unsafe typecasts.
Turbo Pascal, and other derivatives with units or module concepts are modular languages. However,
it does not provide a nested module concept or qualified import and export of specific symbols.
Other variants
Super Pascal was a variant that added non-numeric labels, a return statement and expressions as
names of types.
The universities of Wisconsin-Madison, Zrich, Karlsruhe and Wuppertal developed the PascalSC[12][13] and Pascal-XSC[14][15][16] (Extensions for Scientific Computation) compilers, aimed
at programming numerical computations. TMT Pascal the first Borland-compatible compiler for 32bit DOS protected mode, OS/2 and Win32 operating systems. Also the TMT Pascal language was
the first one which allowed function and operator overloading. Development for Pascal-SC started
in 1978 supporting ISO 7185 Pascal level 0, but level 2 support was added at a later stage.[17]
Pascal-SC originally targeted the Z80 processor, but was later rewritten for DOS (x86) and 68000.
Pascal-XSC has at various times been ported to Unix (Linux, SunOS, HP-UX, AIX) and
Microsoft/IBM (DOS with EMX, OS/2, Windows) operating systems. It operates by generating
intermediate C source code which is then compiled to a native executable. Some of the Pascal-SC
language extensions have been adopted by GNU Pascal.
Pascal Sol was designed around 1983 by a French team to implement a Unix-like systems named
Sol. It was standard Pascal level-1 (with parametrized array bounds) but the definition allowed
alternative keywords and predefined identifiers in French and the language included a few
extensions to ease system programming (e.g. an equivalent to lseek).[18] The Sol team later on
moved to the ChorusOS project to design a distributed operating system.[19]
IP Pascal was an implementation of the Pascal programming language using Micropolis DOS, but
was moved rapidly to CP/M-80 running on the Z80. It was moved to the 80386 machine types in
1994, and exists today as Windows/XP and Linux implementations. In 2008, the system was
brought up to a new level and the resulting language termed "Pascaline" (after Pascal's calculator).
It includes objects, namespace controls, dynamic arrays, along with many other extensions, and
generally features the same functionality and type protection as C#. It is the only such
implementation that is also compatible with the original Pascal implementation, which is
standardized as ISO 7185.
Smart Mobile Studio[20] was created by Jon Aasenden and compiles his own dialect of Object
Pascal to HTML5/Javascript
Smart Mobile Studio has an IDE which includes a visual component set, its language is unusual in
that it incorporates extensions for the Javascript language
Language constructs
Pascal, in its original form, is a purely procedural language and includes the traditional array of
ALGOL-like control structures with reserved words such as if, then, else, while, for, and so on.
However, Pascal also has many data structuring facilities and other abstractions which were not
included in the original ALGOL 60, like type definitions, records, pointers, enumerations, and sets.
Such constructs were in part inherited or inspired from Simula 67, ALGOL 68, Niklaus Wirth's own
ALGOL W and suggestions by C. A. R. Hoare.
Pascal programs start with the program keyword with a list of external file descriptors as
parameters[21] (not required in Turbo Pascal etc.); then follows the main block bracketed by the
begin and end keywords. Semicolons separate statements, and the full stop (i.e., a period) ends the
whole program (or unit). Letter case is ignored in Pascal source.
Here is an example of the source code in use for a very simple "Hello world" program:
program HelloWorld(output);
begin
Write('Hello, world!')
{no ";" is required after the last statement of a block adding one adds a "null statement" to the program;}
end.
Data types
A type in Pascal, and in several other popular programming languages, defines a variable in such a
way that it defines a range of values which the variable is capable of storing, and it also defines a
set of operations that are permissible to be performed on variables of that type. The predefined
types are:
Data type Type of values which the variable is capable of storing
integer
integer (whole) numbers
real
floating-point numbers
boolean the value True or False
char
a single character from an ordered character set
string
a group or "string" of characters
The range of values allowed for each (except boolean) is implementation defined. Functions are
provided for some data conversions. For conversion of real to integer, the following functions
are available: round (which rounds to integer using banker's rounding) and trunc (rounds
towards zero).
The programmer has the freedom to define other commonly used data types (e.g. byte, string, etc.)
in terms of the predefined types using Pascal's type declaration facility, for example
type
byte
= 0..255;
signed_byte = -128..127;
string
= packed array[1..255] of char;
(Often-used types like byte and string are already defined in many implementations.)
Subrange types
Subranges of any ordinal data type (any simple type except real) can also be made:
var
x : 1..10;
y : 'a'..'z';
Set types
In contrast with other programming languages from its time, Pascal supports a set type:
var
Set1 : set of 1..10;
Set2 : set of 'a'..'z';
A set is a fundamental concept for modern mathematics, and they may be used in many algorithms.
Such a feature is useful and may be faster than an equivalent construct in a language that does not
support sets. For example, for many Pascal compilers:
if i in [5..10] then ...
Sets of non-contiguous values can be particularly useful, in terms of both performance and
readability:
if i in [0..3, 7, 9, 12..15] then ...
For these examples, which involve sets over small domains, the improved performance is usually
achieved by the compiler representing set variables as bit vectors. The set operators can then be
implemented efficiently as bitwise machine code operations.
Type declarations
Types can be defined from other types using type declarations:
type
x = integer;
y = x;
...
File type
As shown in the example above, Pascal files are sequences of components. Every file has a buffer
variable which is denoted by f^. The procedures get (for reading) and put (for writing) move the
buffer variable to the next element. Read is introduced such that read(f, x) is the same as x := f^;
get(f);. Write is introduced such that write(f, x) is the same as f^ := x; put(f); The type text is
predefined as file of char. While the buffer variable could be used for inspecting the next character
to be used (check for a digit before reading an integer), this leads to serious problems with
interactive programs in early implementations, but was solved later with the "lazy I/O" concept.
In Jensen & Wirth Pascal, strings are represented as packed arrays of chars; they therefore have
fixed length and are usually space-padded.
Pointer types
Pascal supports the use of pointers:
type
pNode = ^Node;
Node = record
a : integer;
b : char;
c : pNode {extra semicolon not strictly required}
end;
var
NodePtr : pNode;
IntPtr : ^integer;
Here the variable NodePtr is a pointer to the data type Node, a record. Pointers can be used before
they are declared. This is a forward declaration, an exception to the rule that things must be
declared before they are used.
To create a new record and assign the value 10 and character A to the fields a and b in the record,
and to initialise the pointer c to NIL, the commands would be:
New(NodePtr);
...
NodePtr^.a := 10;
NodePtr^.b := 'A';
NodePtr^.c := NIL;
...
begin
a := 10;
b := 'A';
c := NIL
end;
...
Inside of the scope of the with statement, a and b refer to the subfields of the record pointer
NodePtr and not to the record Node or the pointer type pNode.
Linked lists, stacks and queues can be created by including a pointer type field (c) in the record (see
also NIL).
Unlike many languages that feature pointers, Pascal only allows pointers to reference dynamically
created variables that are anonymous, and does not allow them to reference standard static or local
variables. Pointers also must have an associated type, and a pointer to one type is not compatible
with a pointer to another type (e.g. a pointer to a char is not compatible with a pointer to an integer).
This helps eliminate the type security issues inherent with other pointer implementations,
particularly those used for PL/I or C. It also removes some risks caused by dangling pointers, but
the ability to dynamically deallocate referenced space by using the dispose function (which has the
same effect as the free library function found in C) means that the risk of dangling pointers has not
been entirely eliminated[22] as it has in languages such as Java and C#, which provide automatic
garbage collection (but which do not entirely eliminate the related problem of memory leaks).
Some of these restrictions can be lifted in newer dialects.
Control structures
Pascal is a structured programming language, meaning that the flow of control is structured into
standard statements, usually without 'goto' commands.
while a <> b do
WriteLn('Waiting');
var i : integer;
procedure Print(j : integer);
begin
...
end;
begin { main program }
...
Print(i);
end.
Procedures and functions can nest to any depth, and the 'program' construct is the logical outermost
block.
Each procedure or function can have its own declarations of goto labels, constants, types, variables,
and other procedures and functions, which must all be in that order. This ordering requirement was
originally intended to allow efficient single-pass compilation. However, in some dialects (such as
Embarcadero Delphi) the strict ordering requirement of declaration sections has been relaxed.
Resources
Compilers and interpreters
Several Pascal compilers and interpreters are available for general use:
Delphi is Embarcadero's (formerly Borland/CodeGear) flagship rapid application
development (RAD) product. It uses the Object Pascal language (termed 'Delphi' by
Borland), descended from Pascal, to create applications for Windows, macOS, iOS, and
Android. The .NET support that existed from D8 through D2005, D2006 and D2007 has
been terminated, and replaced by a new language (Prism, which is rebranded Oxygene, see
below) that is not fully backward compatible. In recent years Unicode support and generics
were added (D2009, D2010, Delphi XE).
Free Pascal is a multi-platform compiler written in Object Pascal (and is self-hosting). It is
aimed at providing a convenient and powerful compiler, both able to compile legacy
applications and to be the means of developing new ones. It is distributed under the GNU
GPL, while packages and runtime library come under a modified GNU LGPL. Apart from
compatibility modes for Turbo Pascal, Delphi and Mac Pascal, it also has its own procedural
and object-oriented syntax modes with support for extended features such as operator
overloading. It supports many platforms and operating systems. Current versions also
feature an ISO mode.
Turbo51 is a free Pascal compiler for the 8051 family of microcontrollers, with Turbo
Pascal 7 syntax.
Oxygene (formerly known as Chrome) is an Object Pascal compiler for the .NET and Mono
platforms. It was created and is sold by RemObjects Software, and sold for a while by
Embarcadero as the backend compiler of Prism.
Kylix was a descendant of Delphi, with support for the Linux operating system and an
improved object library. It is no longer supported. Compiler and IDE are available now for
non-commercial use.
GNU Pascal Compiler (GPC) is the Pascal compiler of the GNU Compiler Collection
(GCC). The compiler itself is written in C, the runtime library mostly in Pascal. Distributed
under the GNU General Public License, it runs on many platforms and operating systems. It
supports the ANSI/ISO standard languages and has partial Turbo Pascal dialect support. One
of the more painful omissions is the absence of a 100% Turbo Pascal-compatible
(short)string type. Support for Borland Delphi and other language variations is quite limited.
There is some support for Mac-pascal however.
DWScript aka DelphiWebScript, is an interpreter created by Matthias Ackermann and
Hannes Hernler in 2000. Current version runs a dialect of Object Pascal largely compatible
with Delphi, but also supports language constructs elements introduced in Prism. DWScript
code can be embedded into Delphi applications similar to PascalScript, compiled into
standalone application using SimpleMobileStudio or compiled into JavaScript code and
placed on a web page.[24]
Dr. Pascal is an interpreter that runs Standard Pascal. Notable are the "visible execution"
mode that shows a running program and its variables, and the extensive runtime error
checking. Runs programs but does not emit a separate executable binary. Runs on DOS,
Windows in DOS window, and old Macintosh.
Dr. Pascal's Extended Pascal Compiler tested on DOS, Windows 3.1, 95, 98, NT.
Virtual Pascal was created by Vitaly Miryanov in 1995 as a native OS/2 compiler compatible
with Borland Pascal syntax. Then, it had been commercially developed by fPrint, adding
Win32 support, and in 2000 it became freeware. Today it can compile for Win32, OS/2 and
Linux, and is mostly compatible with Borland Pascal and Delphi. Development was
canceled on April 4, 2005.
P4 compiler, the basis for many subsequent Pascal-implemented-in-Pascal compilers. It
implements a subset of full Pascal.
IDEs
Dev-Pascal is a Pascal IDE that was designed in Borland Delphi and which supports Free
Pascal and GNU Pascal as backends.
Lazarus is a free Delphi-like visual cross-platform IDE for rapid application development
(RAD). Based on Free Pascal, Lazarus is available for numerous platforms including Linux,
FreeBSD, macOS and Microsoft Windows.
Libraries
WOL Library for creating GUI applications with the Free Pascal Compiler.
Standards
ISO/IEC 7185:1990 Pascal
In 1983, the language was standardized, in the international standard IEC/ISO 7185,[26] and several
local country specific standards, including the American ANSI/IEEE770X3.97-1983, and ISO
7185:1983. These two standards differed only in that the ISO standard included a "level 1"
extension for conformant arrays (an array where the boundaries of the array are not known until run
time), where ANSI did not allow for this extension to the original (Wirth version) language. In
1989, ISO 7185 was revised (ISO 7185:1990) to correct various errors and ambiguities found in the
original document.
The ISO 7185 was stated to be a clarification of Wirth's 1974 language as detailed by the User
Manual and Report [Jensen and Wirth], but was also notable for adding "Conformant Array
Parameters" as a level 1 to the standard, level 0 being Pascal without conformant arrays. This
addition was made at the request of C. A. R. Hoare, and with the approval of Niklaus Wirth. The
precipitating cause was that Hoare wanted to create a Pascal version of the (NAG) Numerical
Algorithms Library, which had originally been written in FORTRAN, and found that it was not
possible to do so without an extension that would allow array parameters of varying size. Similar
considerations motivated the inclusion in ISO 7185 of the facility to specify the parameter types of
procedural and functional parameters.
Note that Niklaus Wirth himself referred to the 1974 language as "the Standard", for example, to
differentiate it from the machine specific features of the CDC 6000 compiler. This language was
documented in The Pascal Report,[27] the second part of the "Pascal users manual and report".
On the large machines (mainframes and minicomputers) Pascal originated on, the standards were
generally followed. On the IBM PC, they were not. On IBM PCs, the Borland standards Turbo
Pascal and Delphi have the greatest number of users. Thus, it is typically important to understand
whether a particular implementation corresponds to the original Pascal language, or a Borland
dialect of it.
The IBM PC versions of the language began to differ with the advent of UCSD Pascal, an
interpreted implementation that featured several extensions to the language, along with several
omissions and changes. Many UCSD language features survive today, including in Borland's
dialect.
Variations
Niklaus Wirth's Zurich version of Pascal was issued outside 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. 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, under Professor Kenneth Bowles, 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 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) 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's Turbo Pascal, written by Anders Hejlsberg, was written in assembly language
independent of UCSD or the Zurich 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 and Delphi 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 (compilers, and Interactive/Rapid Development Environments with compilers, in
this category:
Turbo Pascal - "TURBO.EXE" up to version 7, and Turbo Pascal for Windows ("TPW") and
Turbo Pascal for Macintosh.
Borland Pascal 7 (essentially Turbo Pascal 7 for Windows).
Object Pascal - an extension of the Pascal language that was developed at Apple Computer
by a team led by Larry Tesler in consultation with Niklaus Wirth, the inventor of Pascal; its
features were added to Borland's Turbo Pascal for Macintosh and in 1989 for Turbo Pascal
5.5 for DOS.
Reception
Pascal generated a wide variety of responses in the computing community, both critical and
complimentary.
Early criticism
While very popular in the 1980s and early 1990s, implementations of Pascal that closely followed
Wirth's initial definition of the language were widely criticized for being unsuitable for use outside
teaching. Brian Kernighan, who popularized the C language, outlined his most notable criticisms of
Pascal as early as 1981, in his paper Why Pascal Is Not My Favorite Programming Language.[33]
The most serious problem described in his article was that array sizes and string lengths were part
of the type, so it was not possible to write a function that would accept variable length arrays or
even strings as parameters. This made it unfeasible to write, for example, a sorting library. The
author also criticized the unpredictable order of evaluation of boolean expressions, poor library
support, and lack of static variables, and raised a number of smaller issues. Also, he stated that the
language did not provide any simple constructs to "escape" (knowingly and forcibly ignore)
restrictions and limitations. More general complaints from other sources[22][34] noted that the
scope of declarations was not clearly defined in the original language definition, which sometimes
had serious consequences when using forward declarations to define pointer types, or when record
declarations led to mutual recursion, or when an identifier may or may not have been used in an
enumeration list. Another difficulty was that, like ALGOL 60, the language did not allow
procedures or functions passed as parameters to predefine the expected type of their parameters.
Most of Kernighan's criticisms were directly addressed in the paper "The Pascal Programming
Language",[35] specifically, under Myth 6: Pascal is Not For Serious Programmers.[36]
Despite initial criticisms, Pascal continued to evolve, and most of Kernighan's points do not apply
to versions of the language which were enhanced to be suitable for commercial product
development, such as Borland's Turbo Pascal. As Kernighan predicted in his article, most of the
extensions to fix these issues were incompatible from compiler to compiler. Since the early 1990s,
however, most of the varieties seem condensed into two categories, ISO and Borland-like.
Extended Pascal addresses many of these early criticisms. It supports variable-length strings,
variable initialization, separate compilation, short-circuit boolean operators, and default
(OTHERWISE) clauses for case statements.[37]
See also
Concurrent Pascal
Comparison of Pascal and Borland Delphi
Comparison of Pascal and C
Modula-2
Oberon (programming language)
Object Pascal
Real Programmers Don't Use Pascal
References
1.
"We looked very carefully at Delphi Object Pascal and built a working prototype of bound
method references in order to understand their interaction with the Java programming
language and its APIs ... Our conclusion was that bound method references are unnecessary
and detrimental to the language. This decision was made in consultation with Borland
International, who had previous experience with bound method references in Delphi Object
Pascal." (from About Microsoft's "Delegates" at java.sun.com.
TechMetrix Research (1999). "History of Java" (PDF). Java Application Servers Report.
The project went ahead under the name "green" and the language was based on an old
model of UCSD Pascal, which makes it possible to generate interpretive code
"A Conversation with James Gosling - ACM Queue". Retrieved 11 August 2015.
Essential Pascal by Marco Cant
tiobe.com, Programming Community Index for January 2011.
Hertzfeld, Andy. "Hungarian folklore.org: Macintosh Stories. Retrieved 2012-03-06.
Computers and Computing. A Personal Perspective. by Niklaus Wirth
"An Interview with JOHN BRACKETT AND DOUG ROSS", p15, Charles Babbage
Institute, 2004
"AUSTRALIAN ATOMIC ENERGY COMMISSION RESEARCH ESTABLISHMENT,
LUCAS HEIGHTS, NUCLEAR SCIENCE AND TECHNOLOGY BRANCH REPORT
1977, DIVISIONAL RESEARCH", p.22, International Atomic Energy Agency (IEAE)
Jon Udell, Crash of the Object-Oriented Pascals, BYTE, July, 1989.
M.I.Trofimov, The End of Pascal?, BYTE, March, 1990, p.36.
"An introduction to the scientific computing language Pascal-SC". Computers. 14: 5369.
doi:10.1016/0898-1221(87)90181-7.
PI (1986-08-29). "Cadmus jetzt mit Kulisch-Arithmetik - Uni Karlsruhe gibt PascalCompiler nach Mnchen" [Cadmus now comes with Kulisch arithmetic - University
Karlsruhe delivers Pascal compiler to Munich]. Computerwoche (in German). Munich /
Karlsruhe, Germany: IDG Business Media GmbH. Archived from the original on 2016-0530. Retrieved 2016-05-30.
"PASCAL-XSC: PASCAL for Extended Scientific Computing".
"XSC Software". Retrieved 11 August 2015.
"Universitaet Wuppertal: Wissenschaftliches Rechnen / Softwaretechnologie". Retrieved 11
August 2015.
Bamberger, Lothar; Davenport, James H.; Fischer, Hans-Christoph; Kok, Jan; Schumacher,
Gnter; Ullrich, Christian; Wallis, Peter J. L.; Winter, Dik T.; Wolff von Gudenberg, Jrgen
(1990). Wallis, Peter J. L., ed. Improving Floating-Point Programming (1st ed.). Bath,
United Kingdom: John Wiley & Sons Ltd. ISBN 0-471-92437-7. ISBN 978-0-471-92437-1.
Michel Gien, "The SOL Operating System", in Usenix Summer '83 Conference, Toronto,
ON, (July 1983), pp. 75-78
cs.berkeley.edu
http://smartmobilestudio.com
Pascal ISO 7185:1990 6.10
J. Welsh, W. J. Sneeringer, and C. A. R. Hoare, "Ambiguities and Insecurities in Pascal",
Software Practice and Experience 7, pp. 685696 (1977)
Pascal, Nell Dale and Chip Weems, "Dangling Else", p. 160161
"Flock-JSCodeGenDemo.7z - dwscript - "Flock" DWScript / JavaScript CodeGen demo Delphi Web Script general purpose scripting engine - Google Project Hosting". Retrieved
11 August 2015.
"Pascal-S: A Subset and Its Implementation", N. Wirth in Pascal The Language and Its
Implementation, by D.W. Barron, Wiley 1979.
ISO/IEC 7185:1990 Pascal (PDF). Retrieved 16 September 2014.
Wirth, Niklaus (July 1973). The Programming Language Pascal (Revised Report) (PDF).
ETH Zrich. Retrieved 16 September 2014.
Extended Pascal: ISO/IEC 10206:1990. Retrieved 16 September 2014.
"Language standards: Pascal, Extended Pascal, Fortan". Archived from the original on
2014-07-14. Retrieved 16 September 2014.
Further reading
Niklaus Wirth: The Programming Language Pascal. 3563, Acta Informatica, Volume 1,
1971.
C. A. R. Hoare: Notes on data structuring. In O-J Dahl, E W Dijkstra and C A R Hoare,
editors, Structured Programming, pages 83174. Academic Press, 1972.
C. A. R. Hoare, Niklaus Wirth: An Axiomatic Definition of the Programming Language
Pascal. 335355, Acta Informatica, Volume 2, 1973.
Kathleen Jensen and Niklaus Wirth: PASCAL User Manual and Report. Springer-Verlag,
1974, 1985, 1991, ISBN 0-387-97649-3 and ISBN 3-540-97649-3.
Niklaus Wirth: Algorithms + Data Structures = Programs. Prentice-Hall, 1975, ISBN 0-13022418-9.
Niklaus Wirth: An assessment of the programming language PASCAL. 2330 ACM
SIGPLAN Notices Volume 10, Issue 6, June 1975.
N. Wirth, and A. I. Wasserman, ed: Programming Language Design. IEEE Computer
Society Press, 1980
D. W. Barron (Ed.): Pascal The Language and its Implementation. John Wiley 1981, ISBN
0-471-27835-1
Peter Grogono: Programming in Pascal, Revised Edition, Addison-Wesley, 1980
Richard S. Forsyth: Pascal in Work and Play, Chapman and Hall, 1982
N. Wirth, M. Broy, ed, and E. Denert, ed: Pascal and its Successors in Software Pioneers:
Contributions to Software Engineering. Springer-Verlag, 2002, ISBN 3-540-43081-4
N. Wirth: Recollections about the Development of Pascal. ACM SIGPLAN Notices, Volume
28, No 3, March 1993.
External links
Programming languages
[hide]
Dialects
Pascal
Object Pascal
Pascal Script
Oxygene
Clascal
Concurrent Pascal
SuperPascal
Compilers
Current
Historic
Delphi
Oxygene
PocketStudio
HP Pascal
IP Pascal
Free Pascal (Lazarus)
PascalABC.NET
GNU Pascal
Turbo51
MIDletPascal
Pic Micro Pascal
ACK
Virtual Pascal
Apple Pascal
Turbo Pascal
Microsoft Pascal
UCSD Pascal
JRT
Pascal/MT+
API
CLX
FCL
FireMonkey
LCL
Object Windows Library
OpenWire
RTL
Turbo Vision
Visual Component Library
Navigation menu
Not logged in
Talk
Contributions
Create account
Log in
Article
Talk
Read
Edit
View history
Main page
Contents
Featured content
Current events
Random article
Donate to Wikipedia
Wikipedia store
Interaction
Help
About Wikipedia
Community portal
Recent changes
Contact page
Tools
Wikidata item
Cite this page
Print/export
Create a book
Download as PDF
Printable version
In other projects
Wikimedia Commons
Wikibooks
Wikiquote
Languages
Afrikaans
Aragons
Azrbaycanca
Bn-lm-g
()
Boarisch
Bosanski
Catal
etina
Dansk
Deutsch
Eesti
Espaol
Esperanto
Euskara
Franais
Gaeilge
Galego
Hrvatski
Bahasa Indonesia
slenska
Italiano
Latina
Latvieu
Lietuvi
Magyar
Bahasa Melayu
Nederlands
Norsk bokml
Norsk nynorsk
Ozbekcha/
Polski
Portugus
Romn
Scots
Simple English
Slovenina
Slovenina
/ srpski
Srpskohrvatski /
Suomi
Svenska
Tagalog
Taqbaylit
/tatara
Trke
Ting Vit
Yorb
emaitka
Edit links
This page was last modified on 16 January 2017, at 15:36.
Text is available under the Creative Commons Attribution-ShareAlike License; additional
terms may apply. By using this site, you agree to the Terms of Use and Privacy Policy.
Wikipedia is a registered trademark of the Wikimedia Foundation, Inc., a non-profit
organization.
Privacy policy
About Wikipedia
Disclaimers
Contact Wikipedia
Developers
Cookie statement
Mobile view