Penguin

An imperative ProgrammingLanguage designed by NicolasWirth as a teaching language. Once very popular in schools before students started whining that they wanted to learn C. The ancestor of the language in Borland's Delphi and Kylix GUI development environments, which added ObjectOrientation.

A Sample

function plural (noun : string) : string;
   { Returns the plural version of a noun. }
var
   i : integer;
begin
   case noun[[length(noun)] of
       's': if noun[[length(noun)-1] = 'e' then
               plural := noun
            else
               plural := noun + 'es';
       'y': begin
               delete(noun, length(noun), 1);
               plural := noun + 'ies';
            end;
       else plural := noun + 's';
   end;
end; {plural}

(This is in the TurboPascal dialect of Pascal.)

History

Pascal became popular very quickly because the original compiler was designed to be very easy to Port. It was written in Pascal and compiled to ByteCodes, called P-Code. All anyone had to do to get a Pascal compiler working on a new machine was to write the simple P-Code VirtualMachine for it -- they could hack the compiler around to generate proper MachineCode later. This meant that Pascal spread very quickly through the world's Universities. They soon began teaching in Pascal -- it was a very good language for demonstrating structured programming, a hot topic at the time.

Standard Pascal was a nice language with terrible limitations: Pascal programs could not open files by name, could barely handle strings and could only pass arrays of predetermined sizes to functions. BrianKernighan famously described Pascal's problems in Why Pascal is Not My Favorite Programming Language. (It has to be noted that NicolasWirth had already addressed most of Pascal's problems in his follow-up language Modula2 before Kernighan wrote this paper, and in some places Kernighan seems to be just complaining that Pascal is not C.) At any rate, these limitations meant that Pascal splintered into dialects as people hacked in missing features in incompatible ways. C did not have this problem, so it gradually took over from the Pascal dialects.

Implementations

The most successful Pascal dialect has been Borland's TurboPascal. There are two OpenSource Pascal compilers for Linux:

  • GNU Pascal
  • Free Pascal. Note this is written in Pascal, so you need an existing Free Pascal binary to build the source!

Free Pascal tends more towards TurboPascal compatibility.

The online book Pascal Implementation: A Book and Sources walks you through the source code to the original Pascal compiler (implemented in Pascal as a RecursiveDescentParser). It's educational to read just as an extended critique of a non-trivial program.


Part of CategoryProgrammingLanguages, CategoryImperativeProgrammingLanguages, CategoryMachineOrientedProgrammingLanguages