Naar inhoud springen

Pascal (programmeertaal): verschil tussen versies

Uit Wikipedia, de vrije encyclopedie
Verwijderde inhoud Toegevoegde inhoud
Robbot (overleg | bijdragen)
k robot Erbij:ko,hu
Michiel1972 (overleg | bijdragen)
Regel 57: Regel 57:
Veel slecht geïnformeerde mensen hebben echter nog steeds het idee dat Pascal niet voor "serieus" programmeren geschikt is en realiseren zich niet dat het gebruik van de taal nog steeds veel voordelen met zich meebrengt. Dit stigma is het probleem dat Pascal heeft, veel meer dan eigenlijke deficiëntie.
Veel slecht geïnformeerde mensen hebben echter nog steeds het idee dat Pascal niet voor "serieus" programmeren geschikt is en realiseren zich niet dat het gebruik van de taal nog steeds veel voordelen met zich meebrengt. Dit stigma is het probleem dat Pascal heeft, veel meer dan eigenlijke deficiëntie.


{{bron|bronvermelding=
==Literatuur==
Pascal: ''User manual and report''<br>
*''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
}}
Kathleen Jensen and Niklaus Wirth<br>
Springer Verlag 1974, 1985, 1991<br>
ISBN 0-387-97649-3<br>
ISBN 0-540-97649-3<br>

Geeft een formele beschrijving van en introductie tot de taal.


[[Categorie:Programmeertaal|Pascal]]
[[Categorie:Programmeertaal|Pascal]]

Versie van 11 dec 2004 00:42

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 glorietijd in de jaren 70 en 80 van de 20e eeuw. 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.

Basisgrammatica

Een veelvoorkomend voorbeeld van de grammatica van een taal is het "Hello world" programma.

program hello_world;
begin
  writeln('Hello world!');
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 standaardverzameling 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 is 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 gedefinieerd moeten zijn voordat zij gebruikt kunnen worden. Toewijzingen tussen typen die niet uitwisselbaar met elkaar zijn worden verboden, tenzij zij door een expliciete 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 identificeert.

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.

Implementaties

Vroege aanpakken (met name de UCSD p-system compiler welke gebaseerd was op de Zürich P4 compiler, beide geschreven in Pascal zelf) vertaalden Pascal-code in een machine-onafhankelijke p-Code representatie. Deze tussenvorm werd vervolgens geïnterpreteerd door een programma dat specifiek was voor iedere computerarchitectuur. Het gevolg was dat alleen deze compacte interpreter aangepast diende te worden aan de verschillende architecturen.

In de jaren 80 schreef Anders Hejlsberg de Blue Label Pascal compiler voor de Nascom-2 computer. Anders Hejlberg 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 Pascal gemeenschap, welke zich tegen het eind van de jaren 80 hoofdzakelijk op de IBM-PC begon te concentreren. Veel PC-hobbyisten zochten een gestructureerde programmeertaal die BASIC konden vervangen, en kwamen veelal bij Turbo Pascal terecht. Turbo Pascal vertaalde rechtstreeks naar Intel 8086 machinetaal, de enige architectuur die het ondersteunde, en was daardoor veel sneller dan geïnterpreteerde systemen.

Super Pascal was een variant welke niet numerieke labels, een return commando en expressies als type-namen toevoegde.

In de jaren 90 werden compilers welke flexibel op meerdere computerarchitecturen gemikt konden worden dominanter. Dit maakte het mogelijk Pascal direct naar de processor-eigen machinetalen te vertalen en tegelijk makkelijk aan andere hardware aan te passen.

Met de introductie van versie 5.5 voegde Borland object georienteerd programmeren toe aan Pascal. Later echter besloot Borland dat het uitvoeriger object-geörienteerde mogelijkheden wilde en begon opnieuw in Delphi waarbij ze de kladstandaard Object Pascal die door Apple was voorgesteld implementeerden. (Object Pascal is overigens nooit een formele standaard geworden.) In de eerste versies van Delphi werd de geimplementeerde taal nog gewoon Object Pascal genoemd, maar in latere versies werd het hernoemd naar "programmeertaal Delphi". De belangrijkste wijzigingen met betrekking tot de oudere object geörienteerde extensies waren een referentie-gebaseerd objectmodel, virtuele constructor en destructors en eigenschappen. Er zijn verscheidene compilers die dit dialect implementeren: zie Programmeertaal Delphi. De Linux versie van Delphi en daarmee pascal is beschikbaar als Kylix

Algemeen beschikbare compilers

Er zijn verscheidene Pascal compilers algemeen beschikbaar:

  • P4 compiler, de basis voor veel Pascal-geïmplementeerd-in-Pascal compilers, inclusief het UCSD p-System.
  • Free Pascal is geschreven in Pascal (zodat het zichzelf kan compileren), en mikt op het aanbieden van een gemakkelijke en krachtige compiler welke in staat is bestaande programma's te compileren alsmede over moderne aantrekkelijke functies heeft om er nieuwe software in te schrijven. Wordt vrijelijk beschikbaar gesteld onder de GNU GPL licentie. Het kan Turbo Pascal code combineren met Delphi code en ondersteunt een hoop platformen en besturingssystemen.
  • Turbo Pascal was de dominante Pascal compiler voor PCs gedurende de jaren 80 en het begin van de jaren 90, vooral dankzij de krachtige taaluitbreidingen en extreem lagel compilatietijden. Tegenwoordig zijn oudere versies van Turbo Pascal (tot en met 5.5) gratis te downloaden vanaf Borland's website (registratie verplicht).
  • GNU Pascal Compiler (GPC) is een aanvulling op de GNU Compiler Collection (GCC) en is geschreven in C. Het wordt vrijelijk beschikbaar gesteld onder de GNU General Public License. De Borland/Turbo Pascal ondersteuning is daarentegen aan de beperkte kant.
  • Delphi is Borlands vlaggenschip RAD (Rapid Application Development) product. Het gebruikt de programmeertaal Delphi, afgeleid van Pascal, en dient om programma's te schrijven voor het Windows platform. De meest recente versie kan ook compileren voor het .NET platform.
  • Kylix is Borland's nieuwste telg in de Pascal famillie. Het is een variant van Delphi met ondersteuning voor het Linux besturingssysteem en een verbeterde objectbibliotheek. De compiler en ontwikkelomgeving zijn tegenwoordig gratis te downloaden van de Borland website. Delen van Kylix zouden oorspronkelijk open-bron worden, maar tot op heden is dit niet gebeurd.

Kritiek uit het verleden

Alhoewel erg populair (maar dan meer in de jaren 80 en begin jaren 90) 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 Why Pascal Is Not My Favorite Programming Language. Aan de andere kant werd het tegendeel bewezen, veel grote ontwikkelprojecten in de jaren 80, zoals voor de Apple Lisa en Macintosh maakten namelijk zwaar gebruik van Pascal. In de decennia daarna is Pascal blijven evolueren en de meeste van zijn punten zijn niet meer van toepassing op de huidige implementaties.

Veel slecht geïnformeerde mensen hebben echter nog steeds het idee dat Pascal niet voor "serieus" programmeren geschikt is en realiseren zich niet dat het gebruik van de taal nog steeds veel voordelen met zich meebrengt. Dit stigma is het probleem dat Pascal heeft, veel meer dan eigenlijke deficiëntie.

[bron?]