Pascal: A Brief History

Pascal was defined in 1970 by Prof. Niklaus Wirth, in a very successful attempt to find an evolutionary successor to Algol. Pascal cleaned up and left out some of Algol's more obscure features, and, in addition, added the capability to define new data types out of simpler existing ones and introduced support for dynamic data structures.

When Wirth and the Swiss Federal Institute of Technology released a Pascal compiler that produced a simple intermediate code for a virtual machine (P-code), instead of true native code for a particular machine, a giant was born. This simplified porting Pascal to other processor architectures considerably, because only a new P-code interpreter needed be written for this purpose, not a whole new compiler.

What people began to find was that Pascal didn’t require a large mainframe, but rather, that it would run on the, then new, Apple II personal computers. This advance, and Pascal’s compact approach, paved the way for high school teachers and professors around the world to embrace Pascal as a teaching language.

Since then, with the release of Turbo Pascal, and other similar products, Pascal has remained a staple in the world of programming languages, and because of this, Pascal has greatly influenced the design and evolution of many other languages, from Ada to Visual Basic.


Scope and Binding Rules Type System Memory Management Call Mechanisms Evaluation Strategy Pointers High-Order Functions Compilation Does Not Support Intended Use Assertions, Invariants, and Pre/Post Conditions


Example Program 1:

program binding_example (input, output)

procedure A (I : integer; procedure P);

	procedure B;
	begin
		writeln (I);
	end;

begin (* A *)
	if I > 1 then
		P
	Else
		A (2, B);
end;

procedure C; begin end;

begin (* main *)
	A (1, C);
end.


This prints 1, as Pascal has deep binding and static scoping. With shallow binding, it would print a 2.