User:Arny/Pascal history

From Lazarus wiki
Jump to navigationJump to search

Work in progress! Comments are very welcome...

ALGOL origins

The oldest direct ancestor of Pascal is ALGOL, also known as IAL (International Algorithmic Language). The language was designed for describing algorithms, and from that purpose came the code readability most of its descendants (like Pascal) are famous for. The first standard was ALGOL 58 (or IAL 58, in 1958.), the next was ALGOL 60, from which Niklaus Wirth developed the language ALGOL W as a candidate for the next ALGOL standard, but a different language version was accepted for ALGOL 68. That standard has significantly expanded the language, but some concluded that its complexity has considerably increased too. For that reason many people still continued using ALGOL 60 for its cleaner and simpler syntax. Many languages continued the ALGOL 60 legacy, and Pascal was among them.

Niklaus Wirth

After ALGOL W, Wirth worked on an ALGOL-like language with a clean syntax and designed for structural programming - Pascal. Named after the French philosopher Blaise Pascal, the language was released in 1970. Wirth used it as a teaching aid because of its clean syntax and enforcement of good programming practices. That contributed to its popularity because many people learned it in school, but the other side of the medal was that many people also spurned the language for serious programming, deeming it to be just a "teaching language" or a "toy language".

Other than ALGOL 60 and ALGOL W, Wirth used elements from other ALGOL-like languages like Simula, from which would some more elements borrowed in creating Object Pascal.

Niklaus Wirth has developed several more ALGOL-like languages, the most important ones being Modula2 and Oberon. Improvements from those languages will later be used for extending several Pascal implementations.

UCSD and Apple Pascal

Perhaps one of the most significant earlier implementations was the USCD Pascal developed at the UCSD, San Diego in 1978. It has ran on the p-System, an OS and virtual machine that directly ran Pascal programs compiled to bytecode (p-code). The language was expanded and UCSD Pascal influenced both Apple Pascal and later, Turbo Pascal. Apple Pascal was available for Apple II and III, and later it was used for development of the OS for the Apple Lisa, and also available for the Macintosh. During that time, Apple created object oriented versions, first the Pascal-based language Clascal, and later expanded the Pascal language thus creating Object Pascal.

Object Pascal and Turbo Pascal

At the beginning of the eighties, Anders Hejlsberg wrote a very fast Pascal compiler which was later bought by Borland and marketed as Turbo Pascal. Its main selling points were lightning fast compilation and low price which made it quite popular. After porting it to Apple platforms, they began to incorporate Apple's Object Pascal extensions, which has also spread to the PC version.

Borland has worked on a Modula2 compiler for a while, called Turbo Modula, but it was dropped. However, they've borrowed the module concept for Turbo Pascal units. By improving Turbo Pascal using that and other improvements from Modula2, the Turbo Modula actually became unnecessary, and the more popular Pascal compiler became more powerful.

Although Object Pascal is object oriented, it has always been multi-paradigm and still is today in all its implementations (except .NET based ones). As a superset of standard Pascal, classic procedural structured programming can be normally used, even mixed with object oriented code.

Delphi and Kylix

While creating their new RAD tool, Borland chose their most popular language - Turbo Pascal as a base, however its object oriented features were redesigned according to some more modern OOP principles, and thus Delphi was born.

The name "Delphi" was chosen because of the planned database orientation, and it was a play on Oracle, one of the most powerful RDBM systems - "If you want to talk to Oracle, go to Delphi". Later they used the name to apply to the language too, first called "Delphi Pascal" it became "Delphi language" because Pascal was never quite popular in the US.

Borland also created Kylix, a RAD tool for Linux, which also used Object Pascal similar to Delphi's but it was based on the CLX framework which vas not directly compatible with Delphi's VCL and it was mostly created as a wrapper for the Qt widgetset. The product met a moderate success, and was discontinued after version 3, leaving the Linux platfom without an Object Pascal RAD IDE again.

FPC and Lazarus

Florian Klaempfl created FPC ("FPK" at first), first as a Turbo Pascal and Apple Pascal compatible Object Pascal compiler, and later it was expanded to include Delphi Pascal compatibility. With the end of Turbo Pascal, this compiler became quite important in compiling Turbo Pascal code. It also offered several improvements compared to Turbo Pascal, like compilation to 32-bit code, multiplatform ability and it was more available, being free software.

It became even more important at the turn of the century when Delphi started to seem abandoned by Borland. Its development slowed, it seemed to stray from its path flirting with .NET. Its future seemed uncertain, making many Delphi Pascal developers uneasy about the future of their work. That's when Lazarus project started gaining in significance, bringing back the hope of a great Object Pascal RAD tool. More than just an alternative to Delphi, its LCL framework together with FPC compiler enabled cross-platform development something Delphi never offered. Linux users got an Object Pascal IDE RAD once again, and this time one that is free software. LCL is also better designed than CLX, offering more VCL compatibility, which helped porting many Delphi programs and components not only to Lazarus on Windows, but also to other platforms as well.

Many more details about FPC and Lazarus are of course available elsewhere on this wiki.

Standardization

Pascal has been standardized two times. First standard was ISO 7185 in 1983, which was created by refinement of Wirth's specification from 1974, and is respected by most compilers. The other one, ISO 10206 from 1990, also called "Extended Pascal" is not as popular and very few compilers implement it fully.