You are on page 1of 11

1η ΥΕ – Ιστορία των γλωσσών προγραμματισμού

Εισαγωγή
Στη σημερινή εποχή ο προγραμματισμός υπολογιστών είναι απαραίτητος, καθώς με αυτόν ελέγχονται τα
συστήματα για κάθε συσκευή που χρησιμοποιούμε και είναι η βάση της ψηφιακής εποχής. Οι γλώσσες
προγραμματισμού επιτρέπουν στους ανθρώπους να αλληλεπιδρούν με υπολογιστές και να τις κάνουν
να εκτελούν τις απαραίτητες λειτουργίες. Οι άνθρωποι και οι μηχανές επεξεργάζονται τις πληροφορίες
με διαφορετικό τρόπο και οι γλώσσες προγραμματισμού είναι το κλειδί για τη γεφύρωση του χάσματος
μεταξύ ανθρώπων και υπολογιστών. Υπάρχουν αρκετά καθημερινά παραδείγματα που το αποδεικνύουν.
Κάθε φορά που μας αρέσει μια ανάρτηση στα μέσα κοινωνικής δικτύωσης ή στέλνουμε ένα email ή
βάζουμε ξυπνητήρι στο τηλέφωνό μας, μια γλώσσα προγραμματισμού λειτουργεί στο παρασκήνιο
(background) για να εκτελεστούν αυτές οι ενέργειες.

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

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


Η πρώτη “γλώσσα προγραμματισμού” αναπτύχθηκε το 1843 όταν η Ada Lovelace και ο Charles Babbage
εργάστηκαν μαζί στην Analytical Engine, η οποία ήταν ένας πρωτόγονος μηχανικός υπολογιστής. Η
Lovelace μπόρεσε να διακρίνει τη σημασία των αριθμών, συνειδητοποιώντας ότι μπορούσαν να
αντιπροσωπεύουν κάτι περισσότερο από αριθμητικές τιμές των πραγμάτων. Ο Lovelace έγραψε έναν
αλγόριθμο για την Analytical Engine, το πρώτο πρόγραμμα για υπολογιστή, για τον υπολογισμό των
αριθμών Bernoulli.

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

Δεκαετίες 1930 & 1940


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

Το 1936 ο Άλαν Τούρινγκ (μαθηματικός, καθηγητής της λογικής, κρυπτογράφος και θεωρητικός βιολόγος)
εφηύρε την Μηχανή Turing (Turing Machine). Η μηχανή αυτή είναι ένα μαθηματικό μοντέλο
υπολογισμού που ορίζει μια αφηρημένη μηχανή που χειρίζεται σύμβολα σε μια λωρίδα ταινίας
σύμφωνα με έναν πίνακα κανόνων. Δεν θεωρείται τόσο ως τεχνολογία υπολογιστών, αλλά κυρίως σαν
μια υποθετική κατασκευή που αντιπροσωπεύει μια υπολογιστική μηχανή.
Εισαγωγή στον Προγραμματισμό με Python

Τη δεκαετία του 1930 ο μαθηματικός Alonzo Church, εισήγαγε τον λογισμό λάμδα (λ-calculus), ως μέρος
της έρευνας του στη θεμέλια βάση των μαθηματικών. Το λ-calculus είναι ένα γενικό μοντέλο
υπολογισμού που μπορεί να χρησιμοποιηθεί για την προσομοίωση οποιασδήποτε μηχανής Turing.

Κάπου μεταξύ 1944-45, ο Konrad Zuse ανέπτυξε την πρώτη «πραγματική» γλώσσα προγραμματισμού
που ονομάζεται Plankalkül (Plan Calculus). Η γλώσσα του Zuse, πρωτοεμφανίστηκε το 1948 και (μεταξύ
άλλων) επέτρεπε τη δημιουργία διαδικασιών (procedures), οι οποίες αποθήκευαν κομμάτια (chunks)
κώδικα που θα μπορούσαν να καλούνται ξανά και ξανά για να εκτελέσουν συχνές λειτουργίες - ρουτίνες.
Ήταν η πρώτη υψηλού επιπέδου γλώσσα προγραμματισμού που σχεδιάστηκε για έναν υπολογιστή.

To 1945 ο John von Neumann και ο Herman Goldstine, υλοποίησαν ένα διάγραμμα ροής (flowchart) για
να σχεδιάσουν προγράμματα υπολογιστών. Το flowchart είναι ένα κοινού τύπου διάγραμμα που
αναπαριστά έναν αλγόριθμο ή μια διαδικασία, δείχνοντας τα βήματα ως πλαίσια διαφόρων ειδών που
συνδέονται μεταξύ τους με βέλη. Αυτή η διαγραμματική παρουσίαση μπορεί να δώσει λύση βήμα προς
βήμα σε ένα πρόβλημα. Τα δεδομένα αναπαριστώνται σε πλαίσια και τα βέλη δείχνουν τη ροή των
δεδομένων. Χρησιμοποιούνται στην ανάλυση, το σχεδιασμό, την τεκμηρίωση ή τον έλεγχο μιας
διαδικασίας ή ενός προγράμματος σε διάφορα πεδία.

Στην πολεμική προσπάθεια κατά το τελευταίο μέρος του Β' Παγκοσμίου Πολέμου, χρησιμοποιήθηκε ο
ηλεκτρομηχανικός υπολογιστής γενικής χρήσης, IBM Mark I. Ένα από τα πρώτα προγράμματα που
εκτελέστηκαν στο Mark I ξεκίνησε στις 29 Μαρτίου 1944 από τον John von Neumann.

Στα τέλη της δεκαετίας του 1940, εισήχθησαν οι γλώσσες προγραμματισμού Assembly και Shortcode (ή
Short-order code). Η γλώσσα Assembly ήταν ένας τύπος γλώσσας προγραμματισμού χαμηλού επιπέδου
που απλοποίησε τη γλώσσα του κώδικα μηχανής. Με άλλα λόγια, είναι συγκεκριμένες οδηγίες που είναι
απαραίτητες για τη λειτουργία ενός υπολογιστή. Η Shortcode (ή Short-order code), ήταν η πρώτη υψηλού
επιπέδου γλώσσα που προτάθηκε από τον John McCauley το 1949. Ωστόσο, ήταν ο William Schmitt που
την υλοποίησε για τον υπολογιστή BINAC την ίδια χρονιά και για το UNIVAC το 1950.

Δεκαετία του 1950


Το 1952, ο Alick Glennie δημιούργησε τον όρο Autocode που σημαίνει «μια οικογένεια γλωσσών
προγραμματισμού». Η Autocode αναπτύχθηκε για πρώτη φορά από τον Alick Glennie για τον υπολογιστή
Mark 1 στο Πανεπιστήμιο του Μάντσεστερ. Ήταν η πρώτη μεταγλωττιζόμενη γλώσσα προγραμματισμού
που χρησιμοποιήθηκε για τη μετάφραση του κώδικα μηχανής μέσω ενός ειδικού προγράμματος που
ονομάζεται μεταγλωττιστής (compiler).

Το 1953, ο John Backus δημιούργησε την FORmula TRANslation ή FORTRAN, η οποία θεωρείται η
παλαιότερη γλώσσα προγραμματισμού που χρησιμοποιείται σήμερα. Η γλώσσα FORTRAN
δημιουργήθηκε για υψηλού επιπέδου επιστημονικούς, μαθηματικούς και στατιστικούς υπολογισμούς.
Επίσης, εξακολουθεί να χρησιμοποιείται σήμερα σε μερικούς από τους πιο προηγμένους υπερ-
υπολογιστές του κόσμου.
Εισαγωγή στον Προγραμματισμό με Python

To 1958 δημιουργήθηκε η Αλγοριθμική Γλώσσα ή αλλιώς ALGOL από μια κοινή επιτροπή Αμερικανών και
Ευρωπαίων επιστημόνων πληροφορικής. Η ALGOL αποτέλεσε το σημείο εκκίνησης για την ανάπτυξη
ορισμένων από τις πιο σημαντικές γλώσσες προγραμματισμού, όπως οι Pascal, C, C++ και Java.

Την ίδια χρονιά, δημιουργήθηκε η List processor ή LISP από τον John McCarthy στο Τεχνολογικό
Ινστιτούτο της Μασαχουσέτης (MIT). Αρχικά προοριζόταν για την τεχνητή νοημοσύνη, ωστόσο, δεν
περιορίζεται εκεί, καθώς είναι μια από τις παλαιότερες γλώσσες προγραμματισμού που εξακολουθεί να
χρησιμοποιείται σήμερα και μπορεί να χρησιμοποιηθεί στη θέση της Ruby ή της Python. Εταιρείες όπως
η Acceleration, η Boeing και η Genworks εξακολουθούν να χρησιμοποιούν τη LISP.

Το 1959 η Δρ. Grace Murray Hopper ανέπτυξε την Common Business Oriented Language (COBOL). Η
COBOL, είναι η γλώσσα προγραμματισμού πίσω από πολλούς επεξεργαστές πιστωτικών καρτών, ΑΤΜ,
τηλεφωνικές κλήσεις, σήματα νοσοκομείων και συστήματα σημάτων κυκλοφορίας κ.α. Η γλώσσα αυτή,
σχεδιάστηκε, με τρόπο τέτοιο, ώστε να μπορεί να τρέχει σε όλους τους τύπους υπολογιστών.
Εξακολουθεί να χρησιμοποιείται μέχρι σήμερα κυρίως για τραπεζικά συστήματα και συστήματα
παιχνιδιών.

Δεκαετία του 1960 & 1970


Το 1964 εμφανίζεται η γλώσσα προγραμματισμού, Beginner’s All-Purpose Symbolic Instruction Code ή
BASIC. Η γλώσσα BASIC, αναπτύχθηκε από μια ομάδα φοιτητών στο Dartmouth College και γράφτηκε με
σκοπό να βοηθήσει μαθητές που δυσκολεύονταν στην κατανόηση των μαθηματικών και του
προγραμματισμού. Αναπτύχθηκε περαιτέρω από τους ιδρυτές της Microsoft, Bill Gates και Paul Allen και
έγινε το πρώτο εμπορικό προϊόν της εταιρείας.

Το 1970 αναπτύχθηκε η γλώσσα προγραμματισμού Pascal από τον Γάλλο Niklaus Wirth προς τιμήν του
επίσης Γάλλου μαθηματικού Blaise Pascal. Αναπτύχθηκε ως εργαλείο εκμάθησης για προγραμματισμό
υπολογιστών και ήταν η κύρια γλώσσα που χρησιμοποιήθηκε για την ανάπτυξη λογισμικού στα πρώτα
χρόνια της Apple.

Το 1972 αναπτύχθηκαν οι γλώσσες προγραμματισμού Smalltalk, C και SQL.

Η Smalltalk αναπτύχθηκε από τους Alan Kay, Adele Goldberg και Dan Ingalls στο Ερευνητικό Κέντρο της
Xerox στο Palo Alto. Κύριο χαρακτηριστικό της γλώσσας Smalltalk ήταν το γεγονός ότι επέτρεπε στους
προγραμματιστές να αλλάζουν γρήγορα τον κώδικα, καθώς επίσης, εισήγαγε και πολλά χαρακτηριστικά
και σε άλλες γλώσσες προγραμματισμού που είναι διάσημες σήμερα όπως η Python, η Java και η Ruby.

Η γλώσσα C αναπτύχθηκε από τον Dennis Ritchie στα Bell Telephone Laboratories για χρήση με το
λειτουργικό σύστημα Unix. Ονομάστηκε C, επειδή βασίστηκε σε μια προηγούμενη γλώσσα που
ονομαζόταν «Β». Πολλές από τις τρέχουσες κορυφαίες γλώσσες είναι παράγωγα της C,
συμπεριλαμβανομένων των: C#, Java, JavaScript, Perl, PHP και Python. Επίσης, χρησιμοποιείται ακόμη
από τεράστιες εταιρείες όπως η Google, το Facebook και η Apple.

Η SQL αναπτύχθηκε για πρώτη φορά από τους ερευνητές της IBM Raymond Boyce και Donald
Chamberlain. Η SEQUEL (όπως αναφερόταν τότε), χρησιμοποιείται για την προβολή και την αλλαγή
πληροφοριών που είναι αποθηκευμένες σε βάσεις δεδομένων. Σήμερα, η ονομασία είναι ένα
Εισαγωγή στον Προγραμματισμό με Python

αρκτικόλεξο (SQL), το οποίο σημαίνει δομημένη γλώσσα ερωτημάτων (Structured Query Language).
Υπάρχουν πολλές μεγάλες εταιρείες που χρησιμοποιούν την SQL όπως η Microsoft και η Accenture.

Δεκαετία του 1980


Στις αρχές της δεκαετίας του 1980, μια ομάδα με επικεφαλής τον Jean Ichbiah της CUU Honeywell Bull
μέσω σύμβασης με το Υπουργείο Άμυνας των Ηνωμένων Πολιτειών, σχεδίασε την Ada. Η Ada είναι μια
δομημένη, με στατικό έλεγχο τύπων, επιτακτική, ευρέως φάσματος και αντικειμενοστραφής γλώσσα
προγραμματισμού υψηλού επιπέδου. Ήταν επέκταση άλλων δημοφιλών γλωσσών προγραμματισμού
εκείνη την εποχή, όπως η Pascal. Επίσης, χρησιμοποιείται για συστήματα διαχείρισης εναέριας
κυκλοφορίας σε χώρες όπως η Αυστραλία, το Βέλγιο και η Γερμανία.

Το 1983, η γλώσσα προγραμματισμού C τροποποιήθηκε και μετατράπηκε σε C++ από τον Bjarne
Stroustrup. Η C++ είναι μια αντικειμενοστραφής επέκταση της C με βελτιώσεις όπως κλάσεις, εικονικές
συναρτήσεις και templates. Περιλαμβάνεται στις 10 κορυφαίες γλώσσες προγραμματισμού από το 1986
και έλαβε το βραβείο Hall of Fame το 2003. Η C++ χρησιμοποιείται σε MS Office, Adobe Photoshop,
μηχανές παιχνιδιών και άλλα λογισμικά υψηλής απόδοσης.

Την ίδια χρονιά, αναπτύχθηκε η Objective-C από τους Brad Cox και Tom Love. Η Objective-C είναι η κύρια
γλώσσα προγραμματισμού που χρησιμοποιείται για τη δημιουργία λογισμικού για macOS και iOS, τα
λειτουργικά συστήματα της Apple.

Το 1987, δημιουργήθηκε από τον Larry Wall η Perl, η οποία είναι μια γενικής χρήσης, υψηλού επιπέδου
γλώσσα προγραμματισμού. Αρχικά, σχεδιάστηκε για επεξεργασία κειμένου, αλλά σήμερα
χρησιμοποιείται ευρέως για πολλούς σκοπούς όπως CGI, εφαρμογές βάσεων δεδομένων, διαχείριση
συστημάτων, δικτυακό προγραμματισμό και προγραμματισμό γραφικών.

Δεκαετία του 1990


Το 1990, εμφανίζεται η Haskell, μια γλώσσα προγραμματισμού γενικής χρήσης που πήρε το όνομά της
από τον Αμερικανό μαθηματικό Haskell Brooks Curry. Χρησιμοποιείται σε πολλαπλούς κλάδους,
ιδιαίτερα σε αυτούς που ασχολούνται με πολύπλοκους υπολογισμούς. Πολλές εταιρίες και οργανισμοί
χρησιμοποιούν τη γλώσσα Haskell για διαφορετικούς λόγους, αλλά κυρίως χρησιμοποιείται για τη
δημιουργία βιντεοπαιχνιδιών.

Το 1991, ο Guido Van Rossum υλοποιεί την γλώσσα προγραμματισμού Python και της δίνει αυτό το
όνομα από τον βρετανικό θίασο κωμωδίας «Monty Python». Η Python είναι μια γλώσσα
προγραμματισμού γενικής χρήσης, υψηλού επιπέδου που δημιουργήθηκε για να υποστηρίξει μια
ποικιλία από διαφορετικά στυλ προγραμματισμού και να είναι διασκεδαστική στη χρήση (ορισμένα από
τα μαθήματα, τα δείγματα και τις οδηγίες συχνά περιέχουν αναφορές Monty Python). Αποτελεί, μέχρι
σήμερα, μια από τις πιο δημοφιλείς γλώσσες προγραμματισμού στον κόσμο και χρησιμοποιείται από
εταιρείες όπως η Google, το Instagram, το Yahoo και το Spotify.

Την ίδια χρονιά, η Microsoft δημιούργησε τη γλώσσα προγραμματισμού Visual Basic, για να βοηθήσει
τους χρήστες να μεταφέρουν και να αποθέσουν (drag-and-drop) κομμάτια κώδικα μέσω μιας γραφικής
διεπαφής χρήστη (GUI). Πλέον, η γλώσσα δεν χρησιμοποιείται πολύ, ωστόσο η Microsoft έχει
Εισαγωγή στον Προγραμματισμό με Python

χρησιμοποιήσει τμήματα της Visual Basic σε ορισμένες από τις εφαρμογές της όπως το Word, το Excel
και την Access.

To 1993, o Yukihiro Matsumoto δημιούργησε την γλώσσα προγραμματισμού Ruby. Η Ruby είναι μια
διερμηνευόμενη (interpreted) υψηλού επιπέδου γλώσσα προγραμματισμού, η οποία επηρεάστηκε
μεταξύ άλλων από τις Perl, Ada, Lisp και Smalltalk. Οι κύριες χρήσεις της Ruby είναι για την ανάπτυξη
διαδικτυακών εφαρμογών και το Ruby on Rails (web framework). Το Twitter, η Hulu και η Groupon είναι
μερικά γνωστά παραδείγματα εταιρειών που χρησιμοποιούν τη Ruby.

Δύο χρόνια αργότερα, το 1995, εισήχθησαν οι γλώσσες προγραμματισμού Java, PHP και JavaScript.

Η Java είναι μια γλώσσα γενικής χρήσης, υψηλού επιπέδου που δημιουργήθηκε από τον James Gosling
για ένα διαδραστικό τηλεοπτικό έργο. Έχει λειτουργικότητα σε πολλαπλές πλατφόρμες και είναι σταθερά
μεταξύ των κορυφαίων των πιο δημοφιλών γλωσσών προγραμματισμού στον κόσμο. Η Java μπορεί να
βρεθεί παντού, από υπολογιστές μέχρι smartphones και παρκόμετρα.

Η PHP αναπτύχθηκε από τον Rasmus Lerdorf, παλαιότερα γνωστή ως «Personal Home Page» που τώρα
σημαίνει «Hypertext Preprocessor». Οι κύριες χρήσεις της περιλαμβάνουν τη δημιουργία και τη
συντήρηση δυναμικών ιστοσελίδων, καθώς και ανάπτυξη από την πλευρά του διακομιστή. Μερικές από
τις μεγαλύτερες εταιρείες από όλο τον κόσμο χρησιμοποιούν PHP, συμπεριλαμβανομένων των
Facebook, Wikipedia, Digg, WordPress και Joomla.

Η JavaScript δημιουργήθηκε από τον Brendan Eich. Αυτή η γλώσσα χρησιμοποιείται κυρίως για δυναμική
ανάπτυξη ιστού, έγγραφα PDF, προγράμματα περιήγησης ιστού και γραφικά στοιχεία επιφάνειας
εργασίας. Σχεδόν κάθε σημαντικός ιστότοπος χρησιμοποιεί JavaScript. Το Gmail, το Adobe Photoshop και
ο Mozilla Firefox περιλαμβάνουν μερικά γνωστά παραδείγματα.

Δεκαετία του 2000 μέχρι σήμερα


Το 2000, η Microsoft αναπτύσσει τη γλώσσα προγραμματισμού C-Sharp ή C#, με σκοπό να συνδυάσει
την υπολογιστική ικανότητα της C++ με την απλότητα της Visual Basic. Η C# έχει πολλές ομοιότητες με τη
Java, παρόλο που προέρχεται από τη C++ και τη Visual Basic. Η γλώσσα χρησιμοποιείται σε όλα σχεδόν
τα προϊόντα της Microsoft και εμφανίζεται κυρίως στην ανάπτυξη εφαρμογών για Desktop υπολογιστές.

Το 2003, δημιουργήθηκαν οι γλώσσες προγραμματισμού Scala και Groovy.

Η Scala, η οποία αναπτύχθηκε από τον Martin Odersky, συνδυάζει μαθηματικό συναρτησιακό
προγραμματισμό και οργανωμένο αντικειμενοστραφή προγραμματισμό. Η συμβατότητα της Scala με τη
Java την καθιστά χρήσιμη για την ανάπτυξη Android. Το LinkedIn, το Twitter, το Foursquare και το Netflix
είναι μερικά παραδείγματα από τις πολλές εταιρείες που χρησιμοποιούν τη Scala.

Προερχόμενη από τη Java, η Groovy αναπτύχθηκε από τους James Strachan και Bob McWhirter. Η
γλώσσα βελτιώνει την παραγωγικότητα λόγω της συνοπτικής και εύκολης εκμάθησής της. Μερικές
γνωστές εταιρείες που χρησιμοποιούν τη Groovy είναι τα Starbucks, Transferwise και Craftbase.

Το 2009, η Google κυκλοφόρησε τη γλώσσα προγραμματισμού Go, για την αντιμετώπιση προβλημάτων
που προκύπτουν στα μεγαλύτερα συστήματα λογισμικού. Λόγω της απλής και μοντέρνας δομής της, η
Εισαγωγή στον Προγραμματισμό με Python

Go έχει κερδίσει δημοτικότητα μεταξύ ορισμένων από τις μεγαλύτερες εταιρείες τεχνολογίας σε όλο τον
κόσμο, όπως η ίδια η Google, η Uber, το Twitch και το Dropbox.

Το 2014, η Apple ανέπτυξε τη γλώσσα προγραμματισμού Swift, για να αντικαταστήσει τις C, C++ και
Objective-C. Ο κύριος στόχος ήταν να δημιουργήσει μια νέα γλώσσα προγραμματισμού που να είναι
ευκολότερη και απλούστερη από τις προαναφερθείσες γλώσσες και να αφήνει μικρότερο περιθώριο για
σφάλματα. Η ευελιξία της Swift σημαίνει ότι μπορεί να χρησιμοποιηθεί για Desktop υπολογιστές, κινητές
συσκευές και cloud εφαρμογές.

Τύποι γλωσσών προγραμματισμού


Προγραμματιστικό παράδειγμα (programming paradigm) καλείται η ιδιαίτερη τεχνική και οι μέθοδοι με
τις οποίες ένα υπολογιστικό πρόβλημα και η αλγοριθμική λύση του, προσεγγίζονται στον
προγραμματισμό των υπολογιστών. Είναι δηλαδή ένα σύνολο εννοιών οι οποίες εκφράζουν έναν
συγκεκριμένο τρόπο σκέψης, και κατά συνέπεια έκφρασης της υλοποίησης, διαμορφώνοντας τον τρόπο
σχεδιασμού ενός προγράμματος.

Τα προγραμματιστικά παραδείγματα είναι ένας τρόπος ταξινόμησης των γλωσσών προγραμματισμού με


βάση τα χαρακτηριστικά τους. Μία γλώσσα μπορεί να ταξινομηθεί σε πολλά παραδείγματα. Μερικά από
αυτά ασχολούνται κυρίως με τις επιπτώσεις του μοντέλου εκτέλεσης της γλώσσας, όπως το να
επιτρέπονται παρενέργειες (side effects) ή εάν η σειρά των λειτουργιών ορίζεται από το μοντέλο της
εκτέλεσης. Άλλα παραδείγματα ασχολούνται κυρίως με τον τρόπο οργάνωσης του κώδικα, όπως η
ομαδοποίηση ενός κώδικα σε μονάδες (units) μαζί με την κατάσταση (state) που τροποποιείται από τον
κώδικα. Tέλος, υπάρχουν άλλα που ασχολούνται κυρίως με το ύφος της σύνταξης και της γραμματικής.

Υπάρχουν δύο βασικές προσεγγίσεις στον προγραμματισμό:

● Επιτακτικός προγραμματισμός (Imperative Programming): Είναι ένα από τα παλαιότερα


προγραμματιστικά παραδείγματα και βασίζεται στην αρχιτεκτονική Von Neumann.
Επικεντρώνεται στον τρόπο εκτέλεσης, ενώ ορίζει τη ροή ελέγχου ως δηλώσεις που αλλάζουν
μια κατάσταση του προγράμματος. Αποτελείται από πολλές εντολές και μετά την εκτέλεση όλων
το αποτέλεσμα αποθηκεύεται. Χωρίζεται σε τέσσερις μεγάλες κατηγορίες:
o Διαδικαστικός προγραμματισμός (Procedural Programming): Καθορίζει τα βήματα που
πρέπει να κάνει ένα πρόγραμμα για να φτάσει στην επιθυμητή κατάσταση, δηλαδή
εκτελεί μια ακολουθία εντολών που οδηγούν σε ένα αποτέλεσμα.
o Αντικειμενοστραφής προγραμματισμός (Object-Oriented-Programming/OOP): Το
πρόγραμμα είναι γραμμένο ως μια συλλογή κλάσεων και αντικειμένων που
αλληλεπιδρούν. Η μικρότερη και βασική οντότητα είναι το αντικείμενο και κάθε είδους
υπολογισμός εκτελείται μόνο στα αντικείμενα. Περισσότερη έμφαση δίνεται στα
δεδομένα και όχι στη διαδικασία. Οργανώνει προγράμματα ως αντικείμενα: δομές
δεδομένων που αποτελούνται από πεδία δεδομένων και μεθόδους μαζί με τις
αλληλεπιδράσεις τους.
o Προγραμματισμός Περιγραφής Σεναρίων (Scripting Programming): Είναι συχνά
διαδικαστικός και μπορεί να περιλαμβάνει αντικειμενοστραφή στοιχεία. Τα σενάρια
Εισαγωγή στον Προγραμματισμό με Python

(scripts) είναι προγράμματα που εκτελούνται ανάλογα με τις ανάγκες που απαιτούνται
για την ολοκλήρωση κάποιων εργασιών όπως π.χ., η διόρθωση δεδομένων. Πολλές
φορές, ακόμη και για μια μόνο εκτέλεση.
o Προγραμματισμός Παράλληλης Επεξεργασίας (Parallel Processing Programming):
Παράλληλη επεξεργασία είναι η επεξεργασία των εντολών του προγράμματος με τη
διαίρεση τους σε πολλούς επεξεργαστές. Ένα σύστημα παράλληλης επεξεργασίας
επιτρέπει σε πολλούς επεξεργαστές να εκτελέσουν ένα πρόγραμμα σε λιγότερο χρόνο,
διαιρώντας το.
Πίνακας 1: Επιτακτικές (Imperative) Γλώσσες Προγραμματισμού

Προγραμματιστικό παράδειγμα Παραδείγματα ΓΠ


Διαδικαστικός (Procedural) C, C++, Java, PHP, Python, Ruby
Αντικειμενοστραφής (Object-Oriented) C++, C#, Java, Python, Ruby, JavaScript
Περιγραφής Σεναρίων (Scripting) JavaScript, PHP, Perl
Παράλληλης Επεξεργασίας (Parallel C, C++
processing)

● Δηλωτικός προγραμματισμός (Declarative programming): Επικεντρώνεται στο τι πρέπει να


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

o Λογικός προγραμματισμός (Logic programming): Μπορεί να χαρακτηριστεί ως


αφηρημένο μοντέλο υπολογισμού και βασίζεται σε μεγάλο βαθμό στην λογική.
Οποιοδήποτε πρόγραμμα γραμμένο σε μορφή συμβολικής λογικής, στο οποίο
δηλώνονται οι προδιαγραφές των επιθυμητών αποτελεσμάτων. Πιο συγκεκριμένα, το
πρόγραμμα εκφράζει γεγονότα, κανόνες και ερωτήματα (facts, rules, queries) σχετικά με
κάποιο τομέα προβλήματος (domain problem).

o Συναρτησιακός προγραμματισμός (Functional programming): Βασίζεται σε μαθηματικές


συναρτήσεις και αποφεύγει την χρήση «μεταβλητών» και εντολών ανάθεσης. Επίσης,
δεδομένα και προγράμματα έχουν την ίδια μορφή και η επανάληψη γίνεται με χρήση
αναδρομής.

o Επεξεργασίας Βάσης Δεδομένων (Database programming): Βασίζεται στα δεδομένα και


την κίνησή τους. Οι δηλώσεις προγράμματος ορίζονται από δεδομένα αντί να
κωδικοποιούν μια σειρά βημάτων. Ένα πρόγραμμα βάσης δεδομένων είναι η καρδιά
ενός συστήματος πληροφοριών επιχείρησης και παρέχει λειτουργίες δημιουργίας
αρχείων, εισαγωγής δεδομένων, ενημέρωσης, ερωτήματος (query) και αναφοράς.
Εφαρμόζεται σε ροές δομημένων δεδομένων, για φιλτράρισμα, μετασχηματισμό,
εξαγωγή στατιστικών στοιχείων ή κλήση άλλων προγραμμάτων.
Εισαγωγή στον Προγραμματισμό με Python

Πίνακας 2: Δηλωτικές (Declarative) Γλώσσες Προγραμματισμού

Προγραμματιστικό παράδειγμα Παραδείγματα ΓΠ


Λογικό (Logic) Prolog, VisiCalc, RPG
Συναρτησιακό (Functional) LISP, Python, Scala
Επεξεργασίας Βάσης Δεδομένων SQL

Διαφορές μεταξύ μεταγλωττιζόμενης και διερμηνευόμενης γλώσσας


Ο μεταγλωττιστής και ο διερμηνευτής είναι δύο διαφορετικοί τρόποι μετάφρασης ενός προγράμματος
από γλώσσα προγραμματισμού σε γλώσσα μηχανής.

Ένας μεταγλωττιστής παίρνει ολόκληρο το πρόγραμμα και το μετατρέπει σε αντικειμενικό κώδικα που
συνήθως αποθηκεύεται σε ένα αρχείο. Ο αντικειμενικός κώδικας αναφέρεται επίσης ως δυαδικός
κώδικας και μπορεί να εκτελεστεί απευθείας από το μηχάνημα μετά τη σύνδεση. Παραδείγματα
μεταγλωττιζόμενων γλωσσών προγραμματισμού είναι η C και η C++.

Ένας διερμηνευτής εκτελεί απευθείας εντολές γραμμένες σε γλώσσα προγραμματισμού χωρίς


προηγουμένως να τις μετατρέψει σε αντικειμενικό κώδικα ή κώδικα μηχανής. Παραδείγματα γλωσσών
διερμηνείας είναι η Perl, η Python και η Matlab.

Παρακάτω θα δούμε μερικά ενδιαφέροντα στοιχεία σχετικά με τους διερμηνευτές και τους
μεταγλωττιστές:

● Τόσο οι μεταγλωττιστές όσο και οι διερμηνευτές μετατρέπουν τον πηγαίο κώδικα (αρχεία
κειμένου) σε λεξικά αντικείμενα (tokens), μπορούν να δημιουργήσουν ένα δέντρο συντακτικής
ανάλυσης (parse tree) και να δημιουργήσουν άμεσες οδηγίες. Η βασική διαφορά είναι ότι ένα
σύστημα μεταγλωττιστή, που περιλαμβάνει έναν (ενσωματωμένο ή ξεχωριστό) σύνδεσμο,
δημιουργεί ένα αυτόνομο πρόγραμμα κώδικα μηχανής, ενώ ένα σύστημα διερμηνέα εκτελεί τις
ενέργειες που περιγράφονται από το πρόγραμμα υψηλού επιπέδου.
● Μόλις μεταγλωττιστεί ένα πρόγραμμα, ο πηγαίος κώδικας του δεν είναι χρήσιμος για την
εκτέλεση του κώδικα. Για διερμηνευόμενα προγράμματα, απαιτείται ο πηγαίος κώδικας για την
εκτέλεση του προγράμματος κάθε φορά.
● Γενικά, τα διερμηνευόμενα προγράμματα τρέχουν πιο αργά από τα μεταγλωττισμένα
προγράμματα.
● Τα προγράμματα Java πρώτα μεταγλωττίζονται σε μια ενδιάμεση μορφή και μετά
διερμηνεύονται από το διερμηνευτή.

Μεταγλωττιζόμενη γλώσσα:

Οι μεταγλωττιζόμενες γλώσσες μετατρέπονται απευθείας σε κώδικα μηχανής που μπορεί να εκτελέσει


ο επεξεργαστής. Ως αποτέλεσμα, τείνουν να είναι πιο γρήγορες και πιο αποτελεσματικές στην εκτέλεσή
τους από τις διερμηνευόμενες γλώσσες. Δίνουν επίσης στον προγραμματιστή περισσότερο έλεγχο σε
πτυχές υλικού, όπως διαχείριση μνήμης και χρήση CPU. Παραδείγματα μεταγλωττιζόμενων γλωσσών
είναι οι C, C++, Erlang, Haskell, Rust και Go.
Εισαγωγή στον Προγραμματισμό με Python

● Πλεονεκτήματα:
o Τα προγράμματα που μεταγλωττίζονται σε εγγενή κώδικα μηχανής τείνουν να είναι πιο
γρήγορα από τον διερμηνευόμενο κώδικα. Αυτό οφείλεται στο γεγονός ότι η διαδικασία
μετάφρασης κώδικα κατά το χρόνο εκτέλεσης αυξάνει το χρόνο της εκτέλεσης και μπορεί
να κάνει το πρόγραμμα να είναι πιο αργό συνολικά.
● Μειονεκτήματα:
o Απαιτείται επιπλέον χρόνος καθώς πρέπει να γίνει ολοκλήρωση του βήματος
μεταγλώττισης πριν από τη δοκιμή (testing)
o Εξάρτηση του παραγόμενου δυαδικού κώδικα από την πλατφόρμα που έγινε η
μεταγλώττιση

Διερμηνευόμενη γλώσσα:

Μια διερμηνευόμενη γλώσσα είναι μια γλώσσα προγραμματισμού που ερμηνεύεται γενικά, χωρίς να
μεταγλωττίζεται ένα πρόγραμμα σε εντολές μηχανής. Δηλαδή, οι εντολές δεν εκτελούνται απευθείας
από τη μηχανή-στόχο, αλλά αντίθετα διαβάζονται και εκτελούνται από κάποιο άλλο πρόγραμμα.
Παραδείγματα διερμηνευόμενων γλωσσών – JavaScript, Perl, Python, PHP, BASIC, κ.λπ.

● Πλεονεκτήματα:
o Οι διερμηνευμένες γλώσσες τείνουν να είναι πιο ευέλικτες και συχνά προσφέρουν
δυνατότητες όπως δυναμικό έλεγχο τύπων και μικρότερο μέγεθος προγράμματος.
Επίσης, επειδή οι διερμηνείς εκτελούν οι ίδιοι τον κώδικα του προγράμματος πηγής, ο
ίδιος ο κώδικας είναι ανεξάρτητος από την πλατφόρμα.
● Μειονεκτήματα:
o Το πιο αξιοσημείωτο μειονέκτημα είναι η τυπική ταχύτητα εκτέλεσης σε σύγκριση με τις
μεταγλωττιζόμενες γλώσσες.

Εικόνα 1: Βήματα μεταγλωττιζόμενης (αριστερά) και διερμηνευόμενης γλώσσας (δεξιά)


Εισαγωγή στον Προγραμματισμό με Python

Ας δούμε, συγκεντρωτικά, τις κυριότερες διαφορές μεταξύ μεταγλωττιζόμενης και διερμηνευόμενης


γλώσσας στον παρακάτω πίνακα:
Πίνακας 3: Διαφορές μεταξύ μεταγλωττιζόμενης και διερμηνευόμενης γλώσσας

Α/Α Μεταγλωττιζόμενη γλώσσα Διερμηνευόμενη γλώσσα


1 Οι υλοποιήσεις της είναι, συνήθως, Οι υλοποιήσεις της εκτελούν εντολές άμεσα και
μεταγλωττιστές και όχι διερμηνείς. ελεύθερα, χωρίς προηγουμένως να
μεταγλωττίσουν ένα πρόγραμμα σε εντολές
γλώσσας μηχανής.
2 Μόλις το πρόγραμμα μεταγλωττιστεί, Οι εντολές δεν εκτελούνται απευθείας από το
εκφράζεται στις εντολές του μηχάνημα-στόχο.
μηχανήματος στόχου.
3 Υπάρχουν τουλάχιστον δύο βήματα από Υπάρχει μόνο ένα βήμα από τον πηγαίο κώδικα
τον πηγαίο κώδικα στην εκτέλεση. στην εκτέλεση.
4 Τα μεταγλωττιζόμενα προγράμματα Τα διερμηνευόμενα προγράμματα μπορούν να
εκτελούνται πιο γρήγορα από τα τροποποιηθούν, καθώς το πρόγραμμα εκτελείται.
διερμηνευόμενα.
5 Τα σφάλματα μεταγλώττισης Όλος ο εντοπισμός σφαλμάτων πραγματοποιείται
εμποδίζουν τη μεταγλώττιση του κατά το χρόνο εκτέλεσης.
κώδικα.
6 Ο κώδικας της μπορεί να εκτελεστεί Ένα πρόγραμμα γραμμένο σε διερμηνευόμενη
απευθείας από την CPU του γλώσσα δεν μεταγλωττίζεται, αλλά ερμηνεύεται
υπολογιστή. εντολή - εντολή.
7 Καλύτερη απόδοση. Σχετικά πιο αργή απόδοση.
8 Παραδείγματα: C, C++, C#, COBOL Παραδείγματα: JavaScript, Perl, Python, BASIC.

Συμπέρασμα
Η ιστορία των γλωσσών προγραμματισμού είναι συναρπαστική. Ποιος θα πίστευε ότι ένας αλγόριθμος
από τα μέσα του 19ου αιώνα θα άνοιγε το δρόμο για την κοινωνία που βασίζεται στην τεχνολογία που
ζούμε σήμερα. Από τους πρώιμους κώδικες μηχανών μέχρι τον εξελιγμένο αναγνώσιμο από τον άνθρωπο
κώδικα που τροφοδοτεί τις αγαπημένες μας τεχνολογίες σήμερα, οι γλώσσες προγραμματισμού έχουν
προχωρήσει πολύ. Είναι βέβαιο ότι ο προγραμματισμός υπολογιστών θα συνεχίσει να αναπτύσσεται
όπως έκανε τα τελευταία 150 χρόνια και είναι συναρπαστικό να δούμε τι φέρνει το μέλλον.
Εισαγωγή στον Προγραμματισμό με Python

Σύνδεσμοι
Ιστορία των Γλωσσών Προγραμματισμού

• https://cs.brown.edu/~adf/programming_languages.html
• https://devskiller.com/history-of-programming-languages/
• https://www.onlinecollegeplan.com/computer-programming-languages/
• https://www.computersciencedegreehub.com/brief-history-of-programming-languages/

Προγραμματιστικά Παραδείγματα

• https://www.geeksforgeeks.org/introduction-of-programming-paradigms/
• https://www.watelectronics.com/types-of-programming-languages-with-differences/
• https://www.freecodecamp.org/news/what-exactly-is-a-programming-paradigm/
• https://cs.lmu.edu/~ray/notes/paradigms/

Μεταγλωττιζόμενες και διερμηνευόμενες γλώσσες

• https://www.baeldung.com/cs/compiled-vs-interpreted-languages
• https://www.freecodecamp.org/news/compiled-versus-interpreted-languages/
• https://www.geeksforgeeks.org/difference-between-compiled-and-interpreted-language/

You might also like