Loading AI tools
programmeertaal Van Wikipedia, de vrije encyclopedie
Pascal is een programmeertaal die in 1970 ontwikkeld werd door Niklaus Wirth en die is genoemd naar de Franse wiskundige Blaise Pascal. In Pascal wordt de nadruk gelegd op eenvoud, gestructureerd programmeren en datastructuren. De taal was gebaseerd op de enkele jaren eerder ontwikkelde taal Algol-60 en een alternatief voor de te ingewikkelde opvolger daarvan (Algol-68).
Pascal | ||||
---|---|---|---|---|
Paradigma | Imperatief | |||
Verschenen | 1970 | |||
Ontworpen door | Niklaus Wirth | |||
Typesysteem | statisch, sterk | |||
Implementaties | GNU Pascal, HP Pascal, Apple Pascal en andere | |||
Dialecten | Borland Pascal, Turbo Pascal, Object Pascal en andere | |||
Beïnvloed door | Algol | |||
Invloed op | Modula-2, Ada, Oxygene, COMAL | |||
Besturingssysteem | Multiplatform | |||
|
Het was de bedoeling dat Pascalprogramma's op een minicomputer konden worden gecompileerd en uitgevoerd. In feite had Wirth al een soort personal computer voor ogen. Pascal is echter voor praktische toepassingen nooit zo populair geworden als de programmeertaal C van Brian Kernighan en Dennis Ritchie, die dezelfde structuren biedt als Pascal, maar daarnaast ook meer mogelijkheden om ze te kunnen omzeilen en mogelijkheden om optimalisaties voor de te gebruiken computer uit te kunnen voeren, zaken die Wirth juist wilde vermijden, maar waar programmeurs wel behoefte aan hadden.
In de jaren 1970 sloeg Pascal nog niet zo aan. Enerzijds waren de minicomputers nog te duur om stand-alone gebruikt te worden, anderzijds bleven mainframegebruikers aan talen als Algol-60 en Fortran vasthouden. Dat veranderde in de jaren 1980, toen compilers voor verschillende varianten voor personal computers beschikbaar kwamen. Pascal verving toen Algol-60 als de meest gebruikte taal voor het programmeeronderwijs aan universiteiten en hogescholen. Na het gestructureerd programmeren, waarvan Edsger Dijkstra de grote voorvechter was, werd de volgende grote ontwikkeling het objectgeoriënteerd programmeren; zowel van C als van Pascal zijn later objectgeoriënteerde varianten gemaakt. Turbo Pascal was een populaire variant.
Pascal is, in zijn oorspronkelijke vorm, een puur procedurele taal.
Een veel gebruikt voorbeeld om een indruk te krijgen van de grammatica van een taal is het "Hello world" programma.
program helloworld(output);
begin
writeln('Hello world!')
end.
In Pascal zijn sleutelwoorden niet hoofdlettergevoelig. Verder hebben (buiten strings) spaties voor en na een puntkomma en de punt en extra spaties, geen invloed. Ook is een overgang naar een nieuwe regel gelijkwaardig aan een spatie.
Een Pascalprogramma start met het sleutelwoord "program", gevolgd door een identifier met eventueel tussen haakjes een of meer parameters en dan een puntkomma. Sommige compilers staan toe het tot hier genoemde weg te laten. Vervolgens volgt eventueel een uses clause. De rest is een blok, gevolgd door een punt.
Het blok bestaat uit een declaratiedeel (hierboven leeg) en een samengestelde opdracht, dat bestaat uit "begin", nul of meer opdrachten gescheiden door puntkomma's en "end". Een opdracht mag ook leeg zijn, daarom is ook een puntkomma vóór "end" toegestaan.
Het declaratiedeel kan onder meer bestaan uit de declaratie van een of meer variabelen, zoals:
var m,n:integer; a,b,c:real; f:textfile
Een opdracht (o) kan onder meer zijn (met (oo) staand voor nul of meer opdrachten gescheiden door puntkomma's en (e) voor expressie):
Expressies zijn bijvoorbeeld "m=10", "m<n" en combinaties zoals "(m=10) and (m<n)" en "(m=10) or (m<n)".
Schrijven naar een bestand met bestandslocatie (b) kan (afhankelijk van de compiler) bijvoorbeeld als in het volgende voorbeeld:
var d: integer;
f: textfile;
begin
assignfile(f,(b));
try
rewrite(f);
for d:=1 to 10 do writeln(f,d,' ',d*d);
finally
closefile(f)
end
end.
De functie "write" in plaats van "writeln" wordt gebruikt als er nog meer op dezelfde regel moet komen.
Pascal is duidelijk gebaseerd op Algol-60 en het is dus zinvol de verschillen met die taal en de redenen voor die verschillen te beschrijven. In de meeste gevallen zijn de vernieuwingen in Pascal ook in latere talen overgenomen. Er zijn drie soorten verschillen:
Pascal is rond dezelfde tijd ontwikkeld als C en er zijn veel overeenkomsten tussen beide talen. Het oorspronkelijke Pascal en C zijn beide simpele procedurele talen waarin gestructureerd kan worden geprogrammeerd. Ze hebben voorzieningen voor dynamisch geheugenbeheer en pointermanipulatie. Uiterlijk echter zijn de talen totaal verschillend, waarbij C veel compacter, maar minder "leesbaar" is.
Een belangrijk verschil dat een bron is van voorkeur voor de ene of de andere taal, is het gebruik in Pascal van := als toewijzigingsoperator, en = voor vergelijkingen. In C wordt = als toewijzigingsoperator gebruikt, en == voor vergelijkingen. Omdat = in de wiskunde voor beide doeleinden wordt gebruikt, gebruiken velen het kortere symbool wanneer het andere symbool (hetzij := in Pascal dan wel == in C) bedoeld wordt. De ontwerpers van C argumenteerden dat toewijzingen veel vaker voorkwamen dan vergelijkingen, en dat dus de toewijzing het kortste symbool verdiende. Aanhangers van Pascal brengen daar tegenin dat het per ongeluk uitvoeren van een vergelijking veel minder schadelijk is dan van een toewijzing, hetgeen zeker waar is als, zoals in C, het volkomen correct is een toewijzing midden in een if-statement uit te voeren. Moderne compilers maken de programmeur op dit soort zaken attent, waarmee de grond voor discussie grotendeels is vervallen.
Het grootste risico van het gebruik van C t.o.v. Pascal is verwarring rondom pointers. In productie-omgevingen worden relatief veel zeer lastig te vinden fouten in C-programma's gemaakt door het per abuis verwisselen van een adres van een pointer met de waarde waarnaar de pointer wijst. In Pascal is een dergelijke verwisseling dankzij de sterke type-checking onmogelijk.
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 al van een bepaald type gedefinieerd moeten zijn voordat zij gebruikt kunnen worden. Toewijzingen tussen niet-uitwisselbare typen zijn verboden en geven een compilerfout, tenzij ze door een expliciete typecast geconverteerd worden. Dit voorkomt veelgemaakte fouten waar variabelen niet correct gebruikt worden doordat de programmeur niet in het oog had gehouden wat het type van de variabelen was. Er is ook geen noodzaak meer voor Hongaarse notatie, een gewoonte waarbij identifiers beginnen met een letter die het type identificeert.
In tegenstelling tot C is het in Pascal mogelijk procedures meervoudig te nesten. Geneste functies hebben daarbij volledige toegang tot variabelen en parameters van de functie waar ze genest zijn. Oorspronkelijk had Pascal geen mechanismen voor gescheiden compilatie en de afhandeling van arrays van onbekende grootte; er zijn echter al tientallen jaren implementaties beschikbaar die deze functionaliteit wel bieden.
Vroege implementaties (met name de UCSD p-System-compiler, die gebaseerd was op de Zürich-P4-compiler, beide geschreven in Pascal zelf) vertaalden Pascalcode in een machineonafhankelijke P-Coderepresentatie. Deze tussenvorm werd vervolgens geïnterpreteerd door een programma dat specifiek was voor een computerarchitectuur. Het gevolg was dat alleen deze compacte interpreter aan de verschillende architecturen aangepast diende te worden.
In de jaren tachtig schreef Anders Hejlsberg de Blue Label Pascalcompiler voor de Nascom-2-computer. Hejlsberg ging later voor het bedrijf Borland werken en herschreef zijn compiler tot wat Turbo Pascal voor de IBM-pc zou worden. Deze nieuwe compiler lag voor 49 dollar in de winkel, veel minder dan de prijs die Hejlsberg oorspronkelijk vroeg voor de Blue Label-compiler.
De goedkope compiler van Borland heeft veel invloed gehad op de Pascalgemeenschap, die zich eind jaren tachtig hoofdzakelijk op de IBM-pc begon te concentreren. Veel pc-hobbyisten zochten een gestructureerde programmeertaal die BASIC kon vervangen en kwamen veelal bij Turbo Pascal terecht. Turbo Pascal vertaalde rechtstreeks naar de machinetaal van de Zilog Z80 of de Intel 8086, de enige architecturen die het ondersteunde en was daardoor veel sneller dan geïnterpreteerde systemen.
Super Pascal was een variant die niet-numerieke labels, een returnstatement en expressies als typenamen toevoegde.
In de jaren negentig werden compilers die flexibel op meerdere computerarchitecturen toegepast konden worden, dominanter. Dit maakte het mogelijk Pascal direct naar machinetaal te vertalen en tegelijk eenvoudig aan andere hardware aan te passen.
Met de introductie van versie 5.5 voegde Borland objectgeoriënteerd programmeren aan Pascal toe. Later echter besloot Borland dat het uitvoeriger objectgeoriënteerde mogelijkheden wilde en begon opnieuw in Delphi, waarbij men de kladstandaard Object Pascal, die door Apple was voorgesteld, implementeerde. (Object Pascal is overigens nooit een formele standaard geworden.) In de eerste versies van Delphi werd de geïmplementeerde taal nog gewoon Object Pascal genoemd, maar in latere versies werd hij hernoemd naar "programmeertaal Delphi". De belangrijkste wijzigingen met betrekking tot de oudere objectgeoriënteerde extensies waren een op referentie gebaseerd objectmodel en virtuele constructors, destructors en eigenschappen. Er zijn verscheidene compilers die dit dialect implementeren. De Linuxversie van Delphi en daarmee ook Pascal, is beschikbaar als Kylix.
Er zijn veel verschillende Pascalcompilers beschikbaar:
Hoewel erg populair (maar dan meer in de jaren tachtig en begin jaren negentig), werden vroege versies van Pascal breed bekritiseerd omdat zij ongeschikt zouden zijn om serieuze programma's mee te schrijven. Brian Kernighan, mede-auteur van de programmeertaal C, zette al in 1981 sterke bezwaren uiteen in zijn rapport.[1] Aan de andere kant werden enkele grote ontwikkelprojecten in de late jaren zeventig en vroege jaren tachtig, zoals voor de Apple Lisa en Apple Macintosh, in Pascal geschreven. Dit doordat bij de in de praktijk gebruikte dialecten alle problemen die Kernighan aanstipt al opgelost waren. In de decennia daarna is Pascal blijven doorevolueren en de meeste bezwaren zijn niet meer van toepassing op de huidige implementaties.
Het op Pascal gebaseerde Delphi is nog altijd de op een na (na Visual Studio) meest verkochte ontwikkelomgeving ter wereld.
Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.