Pascal ist eine Programmiersprache, die speziell für die Lehre entworfen wurde. Darum muss auch jede Variable usw. vorher deklariert werden - man soll zum strukturierten und ordentlichen Programmieren gezwungen werden. Außerdem ist Pascal weniger kryptisch als C, da es weniger Symbole und mehr englische Worte gibt. Dieses macht den Code in der Regel auch sehr lesbar. Zwischen Groß- und Kleinschreibung wird nicht unterschieden.
Moderne Pascal-Dialekte (GnuPascal, Delphi/Kylix, FreePascal, Virtual Pascal, ja selbst das alte Turbo-Pascal seit Version 5.0) sind objektorientiert. Das alte Objektmodell von Turbo Pascal (das spannenderweise urprünglich von Apple entwickelt wurde) wurde mit Delphi um Interfaces u.ä. erweitert. Damit ist Pascal eigentlich von den Features her eine sehr moderne Sprache. Pascal ist allerdings nicht "hip" und ist es m.E. auch nie gewesen.
(Ueber letzteres kann man sich streiten, Turbo Pascal war zu seiner Zeit sehr weit verbreitet und beliebt -- twm)
Pascal-Liebhaber schätzen die Klarheit und Übersichtlichkeit der Programme und Frameworks (z.B. der ObjectWindows-Bibliothek von Borland) sowie die gute IDE von Delphi oder Kylix. Pascal-Hasser ärgern sich über den mitunter etwas starren Programmierstil. Eine Sprache, die diese "Ordnung" beim Programmieren auf die Spitze treibt, ist Ada.
Hello World-Programme
Klassisch
Anmerkung: Das Semikolon hinter Writeln könnte in diesem Fall entfallen. Das Semikolon wird im Gegensatz zu C nicht als Befehls-Abschluss interpretiert, sondern als Trenn-Zeichen zwischen Befehlen. Vor einem END kann es somit entfallen, in einer IF-THEN-ELSE Anweisung darf es vor dem ELSE noch nicht mal stehen, da der IF-Ausdruck dadurch als abgeschlossen interpretiert werden würde.
Objektorientiert (Turbo Pascal)
So auch in GnuPascal und FreePascal anwendbar.
1 PROGRAM ObjectHelloWorld;
2
3 TYPE
4 PHelloWorld = ^THelloWorld;
5 THelloWorld = OBJECT
6 CONSTRUCTOR Init;
7 PROCEDURE SayHello; VIRTUAL;
8 DESTRUCTOR Done; VIRTUAL;
9 END;
10
11 CONSTRUCTOR THelloWorld.Init;
12 BEGIN
13 END;
14
15 PROCEDURE THelloWorld.SayHello;
16 BEGIN
17 WriteLn('Hello World');
18 END;
19
20 DESTRUCTOR THelloWorld.Done;
21 BEGIN
22 END;
23
24 (* Hauptprogramm *)
25 VAR myobj : PHelloWorld;
26
27 BEGIN
28 New(myobj, Init);
29 myobj^.SayHello;
30 Dispose(myobj);
31 END.
Objektorientiert mit Interface (Delphi/Kylix)
So auch in FreePascal anwendbar
1 PROGRAM ObjectHelloWorld;
2
3 TYPE
4 IHelloWorld = INTERFACE
5 PROCEDURE SayHello;
6 END;
7
8 TYPE
9 THelloWorld = CLASS(TInterfacedObject, IHelloWorld)
10 // CONSTRUCTOR Create; // brauchen wir nicht, es gibt ja nichts zu initialisieren
11 // DESTRUCTOR Destroy; override; // dito
12 PROCEDURE SayHello; VIRTUAL;
13 END;
14
15 PROCEDURE THelloWorld.SayHello;
16 BEGIN
17 WriteLn('Hello World');
18 END;
19
20 (* Hauptprogramm *)
21 VAR
22 myobj : IHelloWorld;
23
24 BEGIN
25 myobj := THelloWorld.Create; // ruft standard constructor von TInterfacedObject auf
26 myobj.SayHello;
27 // interfaces werden automatisch freigegeben, also kein expliziter destructor-Aufruf mehr
28 END.
Siehe auch SprachePascal, ObjectPascal, ObjectPascalResourcen.