Γλώσσα προγραμματισμού
Από τη Βικιπαίδεια, την ελεύθερη εγκυκλοπαίδεια
Γλώσσα προγραμματισμού είναι ένα είδος γλώσσας που χρησιμοποιούμε για να επικοινωνήσουμε με έναν υπολογιστή προκειμένου αυτός να εκτελέσει για μας κάποιον υπολογιστικό αλγόριθμο.
Μέσω μιας γλώσσας προγραμματισμού ο άνθρωπος επικοινωνεί με τη μηχανή (υπολογιστή). Ακριβώς η φύση του ενός από τους συμμετέχοντες στην ιδιότυπη αυτή επικοινωνία, που είναι μια μηχανή (σύστημα δεκάδες δισεκατομύρια φορές λιγότερο πολύπλοκο από τον ανθρώπινο εγκέφαλο), αποτελεί τον καθοριστικό παράγοντα των κυριότερων χαρακτηριστικών μιας γλώσσας προγραμματισμού και την καθιστά μονόδρομη. Έμεις επικοινωνούμε με την μηχανή και προσπαθούμε να την κάνουμε να πραγματοποιήσει κάποιους υπολογισμούς. Για αυτό και τις προτάσεις σε αυτή τη γλώσσα τις λέμε εντολές.
Μια ακολουθία εντολών αποτελεί ένα πρόγραμμα.
Λόγω του ότι η συγκεκριμένη μηχανή είναι υπολογιστής αυτό που μπορούμε να τη διατάξουμε να κάνει για μας είναι μόνο συμβολικούς υπολογισμούς.
Όπως και η γλώσσα που χρησιμοποιούμε έτσι και μια γλώσσα προγραμματισμού έχει τις λέξεις της, την ορθογραφία της και το συντακτικό της. Σε αντίθεση όμως με τις ανθρώπινες γλώσσες στις γλώσσες προγραμματισμού τίθονται πολύ αυστηροί περιορισμοί στη χρήση της. Το παραμικρό λάθος στην ορθογραφία ή στην σύνταξη μιας πρότασης-εντολής μιας λέξης μιας γλώσσας προγραμματισμού έχει σαν αποτέλεσμα να μην μπορεί ο υπολογιστής να καταλάβει τι θέλουμε να κάνει.
Πίνακας περιεχομένων |
[Επεξεργασία] Εναλλακτικός ορισμός
Εναλλακτικά, μπορούμε να ορίσουμε τη γλώσσα προγραμματισμού ως μια "λογική" αλληλουχία προκαθορισμένων αλγοριθμικών στοιχείων μεταβλητών και μη ("εντολές") με την χρήση της οποίας ο χρήστης ενός ηλεκτρονικού υπολογιστή μπορεί να επικοινωνήσει άμεσα με το υλικό του.
[Επεξεργασία] Χαρακτηριστικά των γλωσσών προγραμματισμού
Κάθε γλώσσα προγραμματισμού έχει το δικό της σύνολο τυπικών προδιαγραφών (ή κανόνων) που αφορούν το συντακτικό, το λεξιλόγιο και το νόημα της. Για τις περισσότερες γλώσσες που χρησιμοποιούνται ευρέως και έχουν χρησιμοποιηθεί για αρκετό χρονικό διάστημα, υπάρχουν ειδικοί οργανισμοί τυποποίησης οι οποίοι μέσα από τακτές συναντήσεις δημιουργούν, τροποποιούν ή επεκτείνουν τις τυπικές προδιαγραφές που διέπουν την χρήση μιας γλώσσας προγραμματισμού.
[Επεξεργασία] Κατηγοριοποίηση γλωσσών προγραμματισμού
Μπορούμε να κατηγοριοποιήσουμε τις γλώσσες προγραμματισμού με διάφορους τρόπους:
- Αν είναι πιό κοντά σε ανθρώπινη γλώσσα την λέμε υψηλού επιπέδου, αν είναι πιό κοντινή σε γλώσσα μηχανής την λέμε χαμηλού επιπέδου.
- Αν δεν έχει την πολυπλοκότητα μιάς εμπορικής γλώσσας την λέμε εκπαιδευτική γλώσσα, (όπως είναι η ΓΛΩΣΣΑ).
- Αν ο τρόπος γραφής των υποπρογραμμάτων είναι σαν ορισμός μιάς συνάρτησης, την λέμε συναρτησιακή, (όπως είναι η Pascal).
- Αν τα ενεργά προγράμματα περιέχουν και διαχειρίζονται τις οντότητες που ονομάζουμε αντικείμενα (όπως είναι μια φόρμα παρουσίασης δεδομένων, ένας πίνακας με διάφορες στήλες, ένα παράθυρο στην επιφάνεια εργασίας, κλπ.) την λέμε αντικειμενοστραφή (αγγλ. object oriented).
Ουσιαστικά ο ψηφιακός υπολογιστής μπορεί να χρησιμοποιήσει μόνο δυαδικούς αριθμούς και να εκτελέσει διαδοχικά εντολές, που του δίνονται κι αυτές με μορφή δυαδικού αριθμού. Τα προγράμματα που φτιάχνονται με τέτοιες εντολές λέμε πως φτιάχνονται σε γλώσσα μηχανής. Όταν, για παράδειγμα, θέλουμε να αυξήσουμε το περιεχόμενο κάποιου καταμετρητή Ν κατά 2, δίνουμε εντολές σε γλώσσα μηχανής, που μοιάζουν κάπως έτσι:
000001000000001100101011 001000000000000000010000 000010000000001100101011
Αυτές οι μεγάλες σειρές από 0 και 1 ήταν κουραστικές για τον άνθρωπο. (Φανταστείτε προγράμματα με χιλιάδες γραμμές). Θα βελτιωνόταν κάπως η κατάσταση, αν γράφονταν οι εντολές αυτές με οκταδικούς αριθμούς:
01001453 10000020 02001453
Έτσι οι εντολές διαβάζονταν λίγο πιο εύκολα, πάλι όμως δεν ήταν απλό να δει κανείς αμέσως ποιά δουλειά έκαναν αυτές οι εντολές. Επίσης, αν ήθελαν οι προγραμματιστές να κάνουν διορθώσεις, προσθήκες και διαγραφές εντολών σε πρόγραμμα γραμμένο σε γλώσσα μηχανής, αντιμετώπιζαν τεράστιες δυσκολίες σε μια διαδικασία πολύ ευάλωτη από λάθη. Επινοήθηκε λοιπόν μια συμβολική γλώσσα για τις εντολές που καταλάβαινε ο υπολογιστής και γράφτηκε ένα συμβολομεταφραστικό πρόγραμμα (assembler), που μετέτρεπε ένα πρόγραμμα συμβολικής γλώσσας σε ένα πρόγραμμα σε γλώσσα μηχανής.
Το προηγούμενο παράδειγμα θα έμοιαζε σε μια υποθετική συμβολική γλώσσα κάπως έτσι:
LDA N ;Ν ΕΙΝΑΙ Ο ΜΕΤΡΗΤΗΣ ADD +2 ;ΑΥΞΑΝΕΤΑΙ ΚΑΤΑ 2 STA N ;ΑΠΟΘΗΚΕΥΕΤΑΙ Η ΝΕΑ ΤΙΜΗ
όπου, εκτός από τις εντολές προγράμματος στο αριστερό μέρος, υπάρχουν και μερικά σχόλια επεξηγηματικά, (που ο συμβολομεταφραστής τα αγνοεί), που βοηθάνε πολύ στην φάση συντήρησης του προγράμματος.
Παρ’ όλα αυτά όμως, επειδή τα προγράμματα δεύτερης γενιάς (αυτά σε συμβολική γλώσσα) είχαν ακριβώς τόσες εντολές όσες είχαν και τα αντίστοιχα προγράμματα σε γλώσσα μηχανής, (ίσως μερικές δεκάδες χιλιάδες εντολές), η ανάπτυξη μεγάλων προγραμμάτων ήταν δύσκολη. Έτσι φτιάχτηκαν οι γλώσσες τρίτης γενιάς, όπως είναι η FORTRAN, όπου ενώ οι προγραμματιστές έδιναν μόνο μια εντολή, (το Ν να γίνει όσο ήταν συν 2),
Ν = Ν + 2
αναλάμβανε ένα πρόγραμμα - μεταφραστής (compiler) να την αναλύσει σε περισσότερες εντολές σε συμβολική γλώσσα (και σε γλώσσα μηχανής).
Εκτός από το ότι έτσι γράφονταν λιγότερες εντολές για το ίδιο πρόγραμμα, δημιουργήθηκαν και γλώσσες ανώτερου επίπεδου που έμοιαζαν περισσότερο με φυσική γλώσσα. Το ίδιο παράδειγμα σε γλώσσα COBOL θα μπορούσε να γραφτεί έτσι:
ADD 2 TO COUNTER–N .
(πρόσθεσε 2 στον καταμετρητή Ν), που το καταλαβαίνει οποιοσδήποτε ξέρει αγγλικά, όχι μόνο ο υπολογιστής.
Στην εκπαιδευτική γλώσσα προγραμματισμού ΓΛΩΣΣΑ, που διαθέτει τις εντελώς απαραίτητες εντολές για εξάσκηση στον προγραμματισμό, η εντολή εκχώρησης τιμής γράφεται έτσι:
Ν <- Ν + 2
και σημαίνει «κάνε τις πράξεις στην έκφραση στο δεξιό από το βελάκι μέρος και βάλε την προκύπτουσα τιμή στην μεταβλητή που βρίσκεται στο αριστερό μέρος».
[Επεξεργασία] Γλώσσες προγραμματισμού