Pascal is een programmeertaal die in 1970 ontwikkeld werd door Niklaus Wirth. De taal is genoemd naar de beroemde Franse wiskundige Blaise Pascal. Binnen deze taal wordt de nadruk gelegd op eenvoud. Daarmee vormde deze taal een reactie op de enkele jaren voordien ontwikkelde taal algol en met name ook algol-68. De nadruk wordt gelegd op gestructureerd programmeren en datastructuren. Pascal was ook een poging om af te komen van de al te abstracte mogelijkheden van Algol (die een mainframe vereisten ter compilatie). Pascal poogde een voldoende abstracte, maar toch voldoende eenvoudige en compileerbare taal te zijn. In deze opzet is Wirth uitstekend geslaagd; niettemin is Pascal nooit zo populair geworden als de programmeertaal C van Brian Kernighan en Dennis Ritchie, die dezelfde structuren biedt als Pascal maar daarnaast ook meer sluipweggetjes om ze te kunnen omzeilen en mogelijkheden om speciaal voor de te gebruiken computer optimalisaties uit te kunnen voeren, zaken die Wirth juist wilde vermijden maar waar programmeurs wel behoefte aan hadden. Buiten de academische wereld is Pascal dan ook nooit erg van de grond gekomen. Het is wel een heel goede taal om in te leren programmeren.
De taal kende zijn gloriejaren tijdens de jaren ´70 en ´80. Tijdens deze periode werden ook verschillend varianten ontwikkeld. Na het gestructureerd programmeren waarvan Edsger Dijkstra de grote voorvechter was is de volgende grote ontwikkeling het object-georiënteerd programmeren geworden; zowel van C als van Pascal zijn object-geörienteerde varianten gemaakt.
Turbo Pascal van de firma Borland betekende de doorbraak van Pascal op de PC, want terwijl voorheen compilers heel duur waren, kon de gebruiker opeens voor betrekkelijk weinig geld een echte compiler kopen die ook nog snel was. Versie 8 van Turbo Pascal kreeg in 1995 een nieuwe naam: Delphi en werd daarmee geschikt om eenvoudig pascal programma's voor Windows te kunnen schrijven. De linux versie van delphi en daarmee pascal is beschikbaar als Kylix
Basisgrammatica
Een veelvoorkomend voorbeeld van de grammatica van een taal is het "Hallo wereld" programma.
program hello_world; begin writeln('Hallo wereld!'); end.
Alle programma's starten met het sleutelwoord "program" en een blok code wordt aangegeven door de "begin"/"end" sleutelwoorden. Opdrachten worden gescheiden door een puntkomma, en een punt geeft het einde van een programma (of unit) aan. Sommige compilers staan het toe de "program"-regel weg te laten. Pascal is, in zijn oorspronkelijke vorm, een puur procedurele taal, met de standaardverzamling constructies als if, while, for enz.
Pascal en C
Pascal is rond dezelfde tijd ontwikkeld als C en er zijn tussen beide talen dan ook veel overeenkomsten. Het oorspronkelijke Pascal en C zijn beiden simpele procedurele talen waarin je gestructureerd kunt programmeren. Beide talen hebben voorzieningen voor dynamisch geheugenbeheer en pointermanipulatie. Uiterlijk echter, zien de talen er totaal verschillend uit, waarbij C wat compacter is.
Een belangrijk verschil wat de bron is van veel 'heilige oorlogen' is het gebruik in Pascal van := als toewijzigingsoperator, waarbij = voor vergelijkingen wordt gebruikt. Omdat = in wiskunde voor beide doeleinden wordt gebruikt, gebruiken veel mensen het kortere symbool wanneer het andere symbool (hetzij := in Pascal danwel == in C) bedoeld wordt. De ontwerpers van C beargumenteerden dat toewijzingen veel vaker voorkwamen dan vergelijkingen, en dat dus de toewijzing het kortste symbool verdiende. Pascal-aanhangers werpen daarop tegen dat het per ongeluk uitvoeren van een vergelijking veel minder schadelijk is dan het per ongeluk uitvoeren van een toewijzing, hetgeen zeker waar is als, zoals in C, het volkomen correct is om een toewijzing midden in een if-opdracht uit te voeren. Moderne compilers maken de programmeur op dit soort zaken attent waarmee de grond voor discussie grotendeels ik komen te vervallen.
Dit debat is een illustratie van de verschillen die aan het ontwerp van beide talen ten grondslag lagen. Pascal was gedeeltelijk ontworpen als studietaal. Foutgevoelige constructies werden bewust vermeden en er werd veel zorg besteed aan het eenvoudig leesbaar maken van de code. De ontwerpers van C legden daarentegen de nadruk op kort-en-bondigheid.
Een ander belangrijk verschil is dat Pascal sterke typering heeft. Dit betekent dat alle variabelen vooraf met een bepaald type gedefineerd moeten zijn voordat zij gebruikt kunnen worden. Toewijzingen tussen typen die niet uitwisselbaar met elkaar zijn worden verboden, tenzij zij door een explicitie typecast geconverteerd worden. Dit voorkomt veelgemaakte fouten waar variabelen niet correct gebruikt worden omdat de programmeur niet in het oog had wat het type van de variabelen was. Er is ook geen noodzaak meer voor Hongaarse notatie, een gewoonte waarbij variabelenamen vooraf gegaan worden door een letter die het type identificeerd.
In tegenstelling tot C is het mogelijk om in Pascal procedures te nesten. Oorspronkelijk had Pascal geen mechanismen voor gescheiden compilatie en het afhandelen van arrays met een onbekende grootte, echter er zijn al tientallen jaren implementaties beschikbaar die deze functionaliteit wel bieden, vaak netter en beter geïmplementeerd dan in C.
literatuur
Pascal: User manual and report
Kathleen Jensen and Niklaus Wirth
Springer Verlag 1974, 1985, 1991
ISBN 0-387-97649-3
ISBN 0-540-97649-3
Geeft een formele beschrijving van en introductie tot de taal.