Pascal

Just as every true computer scientist was supposed to hate COBOL, every true computer scientist was supposed to love Pascal.

I like Pascal OK, but there are a few things about it that are just plain stupid. Let me go through them one by one.

Non-short-circuiting AND and OR conditions.

This makes stuff like WHILE X<1000 AND A[1000] = 0 DO just about impossible to write without making A one larger than necessary. Idiotic.

AND as a multiplying operator - OR as an adding operator

This is mathematical nonsense. AND and OR are symmetric and interchangable with one another. Also it makes the following statment syntactically incorrect.

IF A < B AND C < D THEN

This is syntactically incorrect because multiplying operators bind tighter than comparison operators so this self-parenthesizes like this:

IF A < (B AND C) < D THEN

Semicolon as separator

Why does anybody care about this? Note that more modern languages tend to dispense with semicolons entirely. Yes, I know there are superfluous semicolons in my code. I'm not going to take them out so PLEASE DON'T tell me about them.

The dot at the end

OK, I admit it. This one is just personal prejudice. I once spent several hours in the Iowa State University computer room running a Pascal program over and over and over and over and over ... . It was an example straight out of the book. Suddenly I realized, that what I had taken for a fly-speck on the paper was actually a period at the end of a program and that the gobbeldey-gook coming out of the compiler was telling me that the only thing wrong with my program was the missing period at the end.

This program compiles and runs under Turbo Pascal. Turbo Pascal is now freely available on Borland's website. The Borland folks, being sensible people, changed the AND and OR semantics so that they short-circuit by default. (Otherwise this program wouldn't work.) Those who prefer the original semantics can turn them back on. They added a few other nice things too. Like objects.

We have no Delphi example on this site because Delphi is not a language but a programming system that uses Object Pascal as its base language. There are a couple of added features to support the development of components, but Delphi and Pascal are essentially the same thing.


{//////////////////////////////////////////////////////////


// Name: Peter M. Maurer


// Program: Sieve of Eratosthenes


// Due: Never


// Language: Pascal


//////////////////////////////////////////////////////////}



Program SieveE;


var Candidates : Array[0..999] of Integer;


i,j : Integer;


begin


{ define the sieve data structure }


for i := 0 to 999 do


begin


{ everything is potentially prime until proven otherwise }


Candidates[i] := 1;


end;


{ Neither 1 nor 0 is prime, so flag them off }


Candidates[0] := 0;


Candidates[1] := 0;


{ start the sieve with the integer 0 }


i := 0;


while i<1000 do


begin


{ advance to the next un-crossed out number. }


{ this number must be a prime }


while (i<1000) and (Candidates[i] = 0) do


begin


i := i+1;


end;


{ insure against running off the end of the data structure }


if i<1000 then


begin


{ cross out all multiples of the prime, starting with 2*p. }


j := 2;


while j*i < 1000 do


begin


Candidates[j*i] := 0;


j := j+1;


end;


{ advance to the next candidate }


i := i+1;


end


end;


{ all uncrossed-out numbers are prime (and only those numbers) }


{ print all primes }


for i := 0 to 999 do


begin


if Candidates[i] <> 0 then


begin


writeln(i,' is prime');


end


end


end.

Click Here for the actual code.