Pascal (γλώσσα προγραμματισμού)

Η γλώσσα **Pascal **δημιουργήθηκε στο Πανεπιστήμιο της Γενεύης από τον Νικλάους Βιρτ (Nicklaus Wirth). Πήρε το όνομά της προς τιμή του μαθηματικού και φιλοσόφου Μπλεζ Πασκάλ (Blaise Pascal). Είναι μία δομημένη γλώσσα με ιδιαίτερο χαρακτηριστικό *τη δυνατότητα ορισμού από τον προγραμματιστή δικών του δομών δεδομένων*. 

Ο Νικλάους Βιρτ συμμετείχε στις σχεδιαστικές ομάδες των γλωσσών ALGOL, Pascal, Modula, Modula-2 και Oberon. Η Pascal θεωρείται ως μία επιτυχημένη επέκταση της επιστημονικής γλώσσας προγραμματισμού ALGOL, που αναπτύχθηκε στην Ευρώπη τη δεκαετία του '60.

Η Pascal έχει όλα τα στοιχεία για την ανάπτυξη δομημένου προγραμματισμού. Χρησιμοποιήθηκε εκτεταμένα στα πανεπιστήμια ως εργαλείο για τα μαθήματα προγραμματισμού, και για τα μαθήματα δομών δεδομένων.

Η Pascal μπορεί να θεωρηθεί ως *γλώσσα γενικής χρήσης* (όχι μόνο επιστημονικών εφαρμογών, όχι μόνο εμπορικών εφαρμογών). Αρχικά δεν διέθετε εξελιγμένο σύστημα χειρισμού αρχείων, (και γι΄ αυτό δεν εκτόπισε την COBOL στις εμπορικές εφαρμογές), αλλά, όπως οι περισσότερες γλώσσες, πέρασε από πολλές εκδόσεις που κάθε μια βελτίωνε την προηγούμενη. Διάφορες εκδόσεις της Pascal είναι σήμερα σε χρήση.

Διάφορα λειτουργικά συστήματα, (όπως το *Macintosh* της *Apple*), είχαν μέρη τους γραμμένα σε Pascal. Το τυπογραφικό λογισμικό TEX, που δημιούργησε ο Ντόναλντ Κναθ (Donald E. Knuth), γράφτηκε σε μια διάλεκτο Pascal, την *WEB*. Η εταιρεία *Borland* έχει εκδώσει μία σειρά από ταχύτατους μεταφραστές Pascal με το όνομα *Τurbo Pascal*. Η τελευταία έκδοση της **Pascal** για τα Windows θεωρείται μία από τις καλύτερες εκδόσεις της στον χώρο των μικροϋπολογιστών.

## Ιστορία

### Προηγούμενες προσπάθειες

Μεγάλο μέρος της ιστορίας του σχεδιασμού γλωσσών υπολογιστών στη δεκαετία του 1960 ανάγεται στη γλώσσα ALGOL 60. Η ALGOL αναπτύχθηκε τη δεκαετία του 1950 με ρητό στόχο τη δυνατότητα σαφούς περιγραφής αλγορίθμων. Περιελάμβανε μια σειρά από χαρακτηριστικά για δομημένο προγραμματισμό που παραμένουν κοινά σε γλώσσες μέχρι σήμερα.

Λίγο μετά την εισαγωγή της, το 1962, ο Βιρτ (Wirth) άρχισε να εργάζεται στη διατριβή του με τον Χέλμουτ Βέμπερ πάνω στη γλώσσα προγραμματισμού του Όιλερ. Η Όιλερ βασίστηκε στο συντακτικό και σε πολλές έννοιες της ALGOL, αλλά δεν προήλθε από αυτήν. Ο κύριος σκοπός της ήταν να προσθέσει λίστες και δυναμικούς τύπους, επιτρέποντας τη χρήση της σε ρόλους παρόμοιους με τη Lisp. Η γλώσσα δημοσιεύθηκε το 1965.

Την εποχή εκείνη είχαν εντοπιστεί ορισμένα προβλήματα στην ALGOL, συμπεριλαμβανομένης της έλλειψης ενός τυποποιημένου συστήματος συμβολοσειρών. Η ομάδα που ήταν υπεύθυνη για τη συντήρηση της γλώσσας ξεκίνησε τη διαδικασία ALGOL X για τον εντοπισμό βελτιώσεων, εκδίδοντας πρόσκληση υποβολής προτάσεων. Ο Βιρτ και ο Τόνι Χόαρ υπέβαλαν ένα συντηρητικό σύνολο αλλαγών για την προσθήκη συμβολοσειρών και την εκκαθάριση κάποιου μέρους του συντακτικού. Οι αλλαγές αυτές κρίθηκαν πολύ μικρές για να χρησιμοποιηθούν ως το νέο πρότυπο της ALGOL, οπότε ο Wirth έγραψε έναν μεταγλωττιστή για τη γλώσσα, ο οποίος ονομάστηκε ALGOL W.

Η ώθηση για την ALGOL X οδήγησε στην επιλογή μιας πολύ πιο σύνθετης γλώσσας, της ALGOL 68. Η πολυπλοκότητα αυτής της γλώσσας οδήγησε σε σημαντικές δυσκολίες στην παραγωγή μεταγλωττιστών υψηλής απόδοσης και δεν χρησιμοποιήθηκε ευρέως στη βιομηχανία. Ως εκ τούτου, έδωσε τη θέση της σε πιο πρόσφατες γλώσσες.

### Pascal

Η Pascal επηρεάστηκε από τις προσπάθειες της ALGOL W, με σαφείς στόχους τη διδασκαλία του προγραμματισμού με δομημένο τρόπο και την ανάπτυξη λογισμικού συστήματος. Μια γενιά φοιτητών χρησιμοποίησε την Pascal ως εισαγωγική γλώσσα σε προπτυχιακά μαθήματα.

Μια από τις πρώτες επιτυχίες της γλώσσας ήταν η εισαγωγή της UCSD Pascal, μιας έκδοσης που έτρεχε σε ένα προσαρμοσμένο λειτουργικό σύστημα που μπορούσε να μεταφερθεί σε διαφορετικές πλατφόρμες. Μια βασική πλατφόρμα ήταν το Apple II, όπου γνώρισε ευρεία χρήση ως Apple Pascal. Αυτό οδήγησε στο να γίνει η Pascal η κύρια γλώσσα υψηλού επιπέδου που χρησιμοποιήθηκε για την ανάπτυξη στο Apple Lisa και αργότερα στο Macintosh. Μέρη του αρχικού λειτουργικού συστήματος Macintosh μεταφράστηκαν με το χέρι σε γλώσσα assembly του Motorola 68000 από τον πηγαίο κώδικα της Pascal.

Το σύστημα στοιχειοθεσίας TeX του Ντόναλντ Κνουθ γράφτηκε σε WEB, το αρχικό σύστημα εγγράμματου προγραμματισμού, βασισμένο στην DEC PDP-10 Pascal. Επιτυχημένες εμπορικές εφαρμογές όπως το Adobe Photoshop γράφτηκαν σε  Εργαστήριο προγραμματιστών Macintosh Pascal, ενώ εφαρμογές όπως το Total Commander, το Skype και το Macromedia Captivate γράφτηκαν σε Delphi (Object Pascal). Η Apollo Computer χρησιμοποίησε την Pascal ως γλώσσα προγραμματισμού συστημάτων για τα λειτουργικά της συστήματα από το 1980.

Παραλλαγές της γλώσσας Pascal έχουν επίσης χρησιμοποιηθεί για τα πάντα, από ερευνητικά έργα μέχρι παιχνίδια Η/Υ και ενσωματωμένα συστήματα. Υπάρχουν νεότεροι μεταγλωττιστές Pascal οι οποίοι χρησιμοποιούνται ευρέως.

### Διάλεκτοι
Το παράδειγμα του Wirth για έναν μεταγλωττιστή που σχεδιάστηκε για τη διάδοση της γλώσσας, το σύστημα Pascal-P, χρησιμοποίησε ένα υποσύνολο της γλώσσας που σχεδιάστηκε για να είναι το ελάχιστο υποσύνολο της γλώσσας που μπορεί να μεταγλωττιστεί. Η ιδέα ήταν να επιτραπεί η εκκίνηση του μεταγλωττιστή, ο οποίος στη συνέχεια θα επεκτεινόταν σε πλήρη κατάσταση γλώσσας Pascal. Αυτό έγινε με αρκετούς μεταγλωττιστές, με την αξιοσημείωτη εξαίρεση της UCSD Pascal, η οποία βασίστηκε στην Pascal-P2. Διατήρησε το καθεστώς ενός υποσυνόλου της γλώσσας με το σκεπτικό ότι θα έτρεχε καλύτερα στους νέους (τότε) μικροεπεξεργαστές με περιορισμένη μνήμη. Το UCSD μετέτρεψε επίσης τον διερμηνέα Pascal-P2 σε "μηχανή byte", και πάλι επειδή θα ήταν καλύτερα προσαρμοσμένος σε μικροεπεξεργαστές με προσανατολισμό byte.

Η UCSD Pascal αποτέλεσε τη βάση για πολλά συστήματα, συμπεριλαμβανομένης της Apple Pascal. Η Borland Pascal δεν στηρίχθηκε στη βάση κώδικα της UCSD, αλλά έφτασε κατά την περίοδο της δημοτικότητας της UCSD και υιοθέτησε πολλά από τα χαρακτηριστικά της. Έτσι ξεκίνησε η γενεαλογία που τελείωσε με την Delphi Pascal και την ελεύθερη έκδοσή της, την FPC.

Το πρότυπο ISO για την Pascal, ISO 7185, δημοσιεύθηκε το 1983 και έχει εφαρμοστεί και χρησιμοποιηθεί ευρέως σε κεντρικούς υπολογιστές, μίνι υπολογιστές και IBM και συμβατούς υπολογιστές από 16-bit έως 32-bit. Οι δύο πιο διαδεδομένες διάλεκτοι της Pascal προς το τέλος του 20ου αιώνα και μέχρι σήμερα είναι η τυποποιημένη έκδοση ISO 7185 και οι εκδόσεις Delphi/Turbo Pascal (εκ των οποίων οι δύο εκδόσεις της Borland είναι σε μεγάλο βαθμό συμβατές μεταξύ τους).

Η πηγή μεγάλου μέρους της πρώιμης ιστορίας της Pascal μπορεί να βρεθεί στα ενημερωτικά δελτία της ομάδας χρηστών της Pascal, στην ακόλουθη διεύθυνση

Ενημερωτικά δελτία της ομάδας χρηστών Pascal

## Γειά σου, κόσμε!
Τα προγράμματα σε γλώσσα Pascal έχουν πρώτη εντολή την

```pascal
Program όνομα
```
 που ακολουθείται από μια προαιρετική λίστα αναφορών σε εξωτερικά αρχεία, και μετά υπάρχει ένα *μπλοκ* εντολών, που αρχίζει με την εντολή 
```pascal
Begin
```
 και τελειώνει με την εντολή 
```pascal
End
```


Το σημείο στίξης `;` (semicolon, ελληνικό ερωτηματικό) είναι το διαχωριστικό των εντολών, και η τελεία `.` δείχνει το τέλος της προγραμματιστικής ενότητας (program module). Η Pascal δεν διακρίνει κεφαλαία ή πεζά γράμματα στο πηγαίο πρόγραμμα (έξω από τα νήματα (strings) χαρακτήρων).

Ακολουθεί το κλασικό παράδειγμα απλού προγράμματος που γράφει «Γειά σου, κόσμε!» (hello world!):

```pascal
program HelloWorld;
begin
   writeln('Γεια σου, κόσμε!');
end.
```


## Βιβλιογραφία
* Niklaus Wirth: *The Programming Language Pascal*. 35–63, Acta Informatica, Volume 1, 1971.
* C. A. R. Hoare: "Notes on data structuring". In O.-J. Dahl, E. W. Dijkstra and C. A. R. Hoare, editors, *Structured Programming*, pages 83–174. Academic Press, 1972.
* C. A. R. Hoare, Niklaus Wirth: *An Axiomatic Definition of the Programming Language Pascal*. 335–355, Acta Informatica, Volume 2, 1973.
* Kathleen Jensen and Niklaus Wirth: *[https://web.archive.org/web/20050314152247/http://www.cs.inf.ethz.ch/~wirth/books/Pascal/ Pascal – User Manual and Report]*. Springer-Verlag, 1974, 1985, 1991,  and .
* Niklaus Wirth: *[[:en:Algorithms + Data Structures = Programs|Algorithms + Data Structures = Programs]]*. Prentice-Hall, 1975, .
* Niklaus Wirth: *An assessment of the programming language Pascal*. 23–30 ACM SIGPLAN Notices Volume 10, Issue 6, June 1975.
* N. Wirth, and A. I. Wasserman, ed: *Programming Language Design*. IEEE Computer Society Press, 1980
* D. W. Barron (Ed.): *Pascal – The Language and its Implementation*. John Wiley 1981, 
* Peter Grogono: *Programming in Pascal*, Revised Edition, Addison-Wesley, 1980
* Richard S. Forsyth: *Pascal in Work and Play*, Chapman and Hall, 1982
* N. Wirth, M. Broy, ed, and E. Denert, ed: ''Pascal and its Successors'' in *Software Pioneers: Contributions to Software Engineering.* Springer-Verlag, 2002, 
* N. Wirth: ''Recollections about the Development of Pascal''. ACM SIGPLAN Notices, Volume 28, No 3, March 1993.

## Δείτε επίσης
* Delphi

## Εξωτερικοί σύνδεσμοι

* Η γλώσσα προγραμματισμού Pascal  
* 

## Παραπομπές


Pascal
Pascal
Κατηγορία:Επιστήμη υπολογιστών