18

I am compiling a detailed history of the Pascal language, and there are a few details I am missing.

There are so many features today that we take for granted. What features significantly contributed to the evolution of Pascal, and why were they significant?

I'm looking for language features, not platform or framework features. So like operator overloading or default parameters, but not Linux support or new Rich Text widget.

I know there are a few different flavors of Pascal (Delphi, Free Pascal, Oxygene, Quick Pascal, Apple Pascal, etc.) and they introduced the same features at different times and in parallel. That is OK. I'm looking at the Pascal language as whole, and when the significant milestones occurred (dates, versions, etc.)

Jim McKeeth
  • 2,126

13 Answers13

16

I would say that the two most important driving forces throughout the history of Pascal have been:

  1. Type safety: Pascal was seminal in creating the belief that type safety is important and critical in a language.
  2. Compiler efficiency: Pascal has always been designed as a single pass language, and showed the world how fast a compiler can be without giving up power. The things that make for a fast compiler are also the things that make for a well designed, easy to read language as well. Borland's genuis was in providing all that and performance, too.
13

From a language historical perspective, probably the biggest contribution of Pascal was strong type safety. That battle is mostly over now - Pascal's side won - and the industrial tipping point was Java. But for a very long time, C was favoured ahead of Pascal by people who considered themselves grown up coders in large part because of this: people wanted the freedom to manipulate their pointers as if they were integers. Practical implementations of Pascal had loopholes, however, like unions that didn't dynamically check the discriminant field, or even had full-blown typecasting of pointers to the point of being all but C equivalent (Turbo Pascal was one of these).

This, and a simplification of the complicated ALGOL 68 spec[1], might be a starting point.

[1] Try reading the ALGOL 68 report sometime - it's definitely a product of the 60s! One site on the web mentions some of its odd jargon: 'bus token', 'invisible production trees', 'primal environs', 'incestuous unions', 'notions', 'protonotions', 'metanotions', 'hypernotions', 'paranotions', etc.

13

You really need to go back to the origins - find some history of Niklaus Wirth. Pascal started its life as a teaching language. "Algorithms + Data Structures = Programs" is a good starting point.

At the time, Pascal was far simpler than Algol 68 and PL/1. It forced structure and declaration, and strong type safety, unlike Fortran4 (Fortran 77 improved things a bit there but you could still play terribly fast-n-loose). And compared to COBOL it was short, simple and easier to write programs. (Hello world in about 6 lines instead of 600).

When it originated, there were things like character arrays in Pascal - that was it for string handling. Things improved over the years.

If you really want to delve into a Pascal history, some points you must take into account:

  • Wirth's original (Standard Pascal)
  • extensions by Digital Equipment Corp (DEC) on the Vax
  • the UCSD p-System (on many machines but notably the Apple-2)
  • Turbo Pascal
  • Apollo Domain Pascal (used to write the Domain/OS operating system, also called Aegis)
  • Turbo Pascal with objects and units (ver 5.5 and later. Edit: just found the TP 5.5 OOP PDF)
  • Delphi

Back in the 1980s there was a huge slug-fest between Pascal and C. There was a vast amount of development and activity happening in both camps.

As a consequence, weird and wonderful things like Bliss-32, Algol, and PL/1 have pretty much disappeared - but ideas from these made their way into Pascal.

EDIT: character arrays could be packed which conferred some special properties, but if you wanted what we now know as string handling you needed to grow it yourself.

quickly_now
  • 15,060
5

Object Oriented extensions! Object Pascal was the biggest (unofficial) standards leap with the release of Delphi (1) in the mid-90s. Its hard to pick out just one, but the entire core of the object model as a whole helped bring the language up to modern status. Unfortunately to this day it has not been made into an official single unified standard of which all compilers would conform to for coding symmetry.

Thankfully the Free Pascal project developers has been quite accommodating of features added to Delphi by both Borland and Embarcadero. RemObjects not so much but at least hey have ties to Embarcadero under Delphi Prism so any deviation from a standard (to make the language more .NET compliant) would be highly documented.

5

Looking back at Delphi's Pascal language innovations - I would add the Property, Method, Event (PME) model and the "Published" section for classes. That made native code, easy to use and extend component building possible. Components fulfilled Brad Cox's promise of Software ICs.

David I
  • 51
4

The fight between many flavours of Pascal in the 80s and early 90s.

You had Apple Pascal, Microsoft Pascal and QuickPascal, and Turbo Pascal.

All introduced Object Pascal in one way or the other (QuickPascal 1.0 and Turbo Pascal 5.5 around the same time frame). Apple because they required it for their platform, Microsoft and Borland because OO was becoming 'cool' (then QuickPascal died soon after, and Turbo Pascal 6.0 added a reasonable OO framework called Turbo Vision).

Rudy Velthuis is quite complete on this in his forum posting**.

You can download an [Wayback archived] ISO image with DOS 6.22 and a few of the DOS Pascal compilers from that era which I archived at csboot.zip.

** This forum post is long gone and emphasises why companies should actively cooperate with the Internet Archive to preserve their digital heritage. Embarcadero Technologies - of Delphi fame - clearly doesn't, given that the digital heritage in their Museum, Codecentral and Forums - with that insightful post of the late Rudy Velthuis - are now long gone.

4

Just one or two things I remember from using Pascal long ago with MS-DOS:

Turbo Pascal more or less introduced a kind of IDE in the 80s (and compilation performance got a great boost compared to UCSD Pascal

Somehow around the mid 90s Borland changed the name from Turbo to Borland Pascal. As a first step the introduced Units, which allowed to split large projects into separate compilation units.

Later they added object-oriented programming as well.

4

One of the core evolutionary steps in Pascal was the proper notion of strings. ISO 7185 ("Standard Pascal") didn't have them, which is kind of embarassing. However, all real programmers needed them, and viable Pascal implementations (such as Borland/Turbo Pascal) did provide them.

MSalters
  • 9,038
3

Start with "Structured Programming", by Dahl, Dijkstra, and Hoare. Dijkstra's section is fundamental, even today. Tony Hoare's section on data structuring laid a great deal of the groundwork for PASCAL. (Dahl's section talked about what eventually became object-oriented programming. He described what became classes in Simula 67.)

Look into ALGOL-W, Wirth's implementation of a variant of ALGOL-60.

You also need to know about PL/I and the IBM 360 link editor (linker) at the time. It was a marvel of generality, with the minor issue that it ran slower than molasses in January in Juneau, Alaska. PASCAL was specifically designed to be compiled and linked in one pass, for speed. (It did help that the language started life on a CDC 6400 junior supercomputer, with lots of memory, making a one-pass compiler practical.)

There were actually two major versions of PASCAL from ETH Zurich. The language everyone currently knows as PASCAL was actually PASCAL2, the second version.

3

I'll add anonymous methods and generics to the mix.

gabr
  • 133
2

I think the introduction of interfaces (in Delphi 3 IIRC) was very important to make it a modern object oriented language.

Francesca
  • 271
2

New language features between Delphi 7 and Delphi XE are described on page 52 in this white paper from Embarcadero:
http://www.embarcadero.com/images/dm/technical-papers/reasons-to-migrate-to-delphi-xe-white-paper.pdf

2

For me the two biggest things (after some other languages like C...) was the case insensitivity and the compiler speed.

And after that is the fact that it is easier to write with Finnish keyboard, because I don't need constantly the {} or other keys that is difficult to reach...

I've been aboard since Delphi2 but used D1 in work couple of years...