Γλώσσες προγραμματισμού, οι πρωτοπόροι τους
Σύνταξη άρθρου: Ευθύμης Κυρίκος
Επιμέλεια άρθρου: Κωνσταντίνος Ουρανός
Κάθε υπολογιστική μηχανή βασίζεται στα φυσικά της κυκλώματα, ώστε να εκτελεί υπολογισμούς. Οι πρώτες υπολογιστικές μηχανές είχαν συγκεκριμένη διάταξη και εκτελούσαν συγκεκριμένες διεργασίες, όπως η διαφορική μηχανή του Μπάμπατζ (Babbage) όπου υπολόγιζε τους όρους των πολυωνύμων και τίποτα άλλο. Αργότερα ωστόσο, που κατασκευάστηκαν οι πρώτοι υπολογιστές γενικού σκοπού, έπρεπε να ενσωματώνουν έναν μηχανισμό για τον επαναπρογραματισμό τους, ώστε δύνανται να εκτελούν πολλές διεργασίες. Η διαδικασία αυτή στις πρώτες μηχανές γινόταν ηλεκτρικά ή μηχανικά, είτε αλλάζοντας συγκεκριμένα γρανάζια, είτε ηλεκτρικά τροποποιώντας τη συνδεσμολογία των κυκλωμάτων του υπολογιστή. Αργότερα εφευρέθηκαν οι πρώτες γλώσσες προγραμματισμού, μέσω των οποίων ο υπολογιστής δεχόταν ένα κείμενο από εντολές, κατάλληλα επεξεργασμένο, ώστε να μπορεί να το αποκωδικοποιήσει και μέσω αυτού του κειμένου προγραμματιζόταν να εκτελεί τις εντολές του. Η διαδικασία προγραμματισμού αυτή χρησιμοποιείται ως και σήμερα.
Ιστορικά στοιχεία των γλωσσών προγραμματισμού
Ο υπολογιστής γενικού σκοπού είναι μια μηχανή ικανή να εκτελέσει οποιοδήποτε πρόβλημα που μπορεί να μηχανοποιηθεί, αρκεί να του δοθούν οι κατάλληλες οδηγίες (πρόγραμμα). Ο πρώτος υπολογιστής γενικού σκοπού (ENIAC) προγραμματιζόταν αρχικά με διακόπτες και αλλαγές στα κυκλώματά του.
Ωστόσο, επειδή ο προγραμματισμός σε επίπεδο κυκλώματος ήταν ιδιαίτερα πολύπλοκος, πολύ γρήγορα δημιουργήθηκε η ανάγκη να βρεθεί ένας ευκολότερος και πιο κατανοητός για τον άνθρωπο τρόπος προγραμματισμού των υπολογιστών.
Το 1949 κατασκευάστηκε η πρώτη υπολογιστική μηχανή (Electronics Delay Storage Automatic Calculator), η οποία χρησιμοποιούσε εντολές σε μορφή κειμένου για τον προγραμματισμό της. Το σύνολο των εντολών αυτών αποτελούν μια γλώσσα που ονομάζεται Άσεμπλυ (Αssembly) και χρησιμοποιείται ακόμα και σήμερα. Η Άσεμπλυ (Assembly) είναι μια γλώσσα της οποίας κάθε εντολή αντιστοιχεί σε έναν δυαδικό κωδικό (αλληλουχία από 0 και 1), ώστε να μπορεί να τον καταλάβει ο επεξεργαστής του υπολογιστή. Έτσι και ο άνθρωπος μπορούσε να διαβάσει το αρχείο του κώδικα και να καταλάβει τη λειτουργία του προγράμματος.
Ωστόσο, η Άσεμπλυ είχε δύο σημαντικά προβλήματα. Ήταν αρκετά δύσκολη τόσο στην ανάγνωση κώδικα όσο και στην ανάπτυξη και, παράλληλα, ήταν διαφορετική για κάθε αρχιτεκτονική επεξεργαστή. Το τελευταίο, είχε το τεράστιο μειονέκτημα πως το ίδιο πρόγραμμα έπρεπε να αναπτυχθεί κάθε φορά από την αρχή καθώς η εντολές της γλώσσας «μιλούσαν» απευθείας στα κυκλώματα του εκάστοτε επεξεργαστή.
Το 1950 εμφανίστηκε ο πρώτος υπολογιστής (Mark 1), που για τον προγραμματισμό του χρησιμοποιούσε μια γλώσσα γενικού σκοπού (Autocode). Η Autocode δεν θεωρείται μία γλώσσα αλλά περισσότερο μια κατηγορία από παρόμοιες γλώσσες που έχουν κάποια κοινά χαρακτηριστικά. Ήταν η πρώτη γλώσσα που χρησιμοποιούσε μεταφραστή, δηλαδή για να λειτουργήσει έπρεπε ένα πρόγραμμα που ονομάζεται κομπίλερ (compiler) να διαβάσει το αρχείο της γλώσσας και να το μεταφράσει σε γλώσσα μηχανής. Αυτό έλυνε το πρόβλημα που είχε η Άσεμπλυ (Assembly) καθώς το πρόγραμμα μπορούσε να είναι ίδιο για κάθε υπολογιστή και να άλλαζε ο κομπίλερ (compiler), ο οποίος θα έπρεπε να είναι συμβατός κάθε φορά με τον υπολογιστή.
Από το 1957 άρχισαν να αναπτύσσονται οι πρώτες υψηλού επιπέδου γλώσσες, με πρώτη τη FORTRAN. Στη συνέχεια ακολούθησαν η Algol, COBOL, LISP, BASIC, PASCAL και C ως τις αρχές της δεκαετίας του 1970.
Πρωτοπόροι επιστήμονες
Αλ Χουαρίζμι (Al-Khwarizmi)
Πέρσης μαθηματικός και αστρονόμος που υπολογίζεται πως έζησε τον 9ο αιώνα. Η συμβολή του στον κλάδο των μαθηματικών ήταν πολύ σημαντική καθώς υπήρξε ο πρώτος που παρουσίασε μια συστηματική λύση για την επίλυση γραμμικών εξισώσεων και 2ου βαθμού εξισώσεων. Θεωρείται ως σήμερα ο πατέρας της άλγεβρας. Στον κλάδο της πληροφορικής συνέβαλε καθώς ήταν ο άνθρωπος που όρισε την έννοια του αλγόριθμου ως μια διαδικασία επίλυσης ενός μαθηματικού προβλήματος. Ωστόσο, ο αλγόριθμος με τη μοντέρνα του μορφή χρησιμοποιήθηκε από τον Ντέιβιντ Χίλμπερτ (David Hilbert) το 1928, όταν προσπάθησε να επιλύσει το πρόβλημα αποφάσεων*.
Κάθλιν Μπουθ (Kathleen Booth)
Η Κάθλιν Μπουθ γεννήθηκε στην Αγγλία το 1922 και εργάστηκε ως ερευνήτρια πάνω στον τομέα των εφαρμοσμένων μαθηματικών. Εργάστηκε στην ομάδα που κατασκεύασε τρεις διαφορετικές μηχανές την SEC (Simple Electronic Computer), ARC (Automatic Relay Calculator) και APEX. Η συμβολή της ήταν πολύ σημαντική τόσο σε αυτά τα έργα, αλλά και εν γένει στην επιστήμη των υπολογιστών καθώς ήταν ο πρώτος άνθρωπος που σχεδίασε τους assemblers για τα πρώτα συστήματα υπολογιστών και έγραψε την πρώτη γλώσσα assembly.
Περ Μπρινχ Χάνσεν (Per Brinch Hansen)
Δανός ηλεκτρολόγος μηχανικός που γεννήθηκε το 1938 στη Δανία και πέθανε το 2007 στη Νέα Υόρκη. Κατά τη διάρκεια της εργασίας του στην Ακαδημία των Τεχνικών Επιστημών της Δανίας κατασκεύασε για τις ανάγκες ενός έργου ένα πρόγραμμα που έλεγχε την αποθήκευση και ανάκτηση των αρχείων μέσα από έναν υπολογιστή (σύστημα αρχείων), το οποίο αργότερα διαπίστωσε πως αποτελούσε ένα μικρό αυτοτελές λειτουργικό σύστημα για τον υπολογιστή.
Αργότερα ολοκλήρωσε την εργασία του αναπτύσσοντας τον πυρήνα του λειτουργικού συστήματος RC 4000, ορίζοντας έτσι και τη γενικότερη αρχιτεκτονική βάσει της οποίας θα αναπτύσσονταν όλα τα λειτουργικά συστήματα. Επιπλέον, επινόησε την έννοια του ταυτόχρονου προγραμματισμού, στον οποίο οι υπολογισμοί ενός προγράμματος εκτελούνταν ταυτόχρονα από διαφορετικά «σημεία υπολογισμών», όπως για παράδειγμα από διαφορετικούς πυρήνες ή νήματα ενός επεξεργαστή, είτε από διαφορετικό υπολογιστή ενός κοινού δικτύου. Τέλος, εργάστηκε πάνω στην έννοια του κατανεμημένου προγραμματισμού σχεδιάζοντας ένα πρωτόκολλο επικοινωνίας αιτήματος – απάντησης μεταξύ των διεργασιών ενός λειτουργικού συστήματος.
Η συμβολή του Περ Μπρινχ Χάνσεν ήταν ιδιαίτερα σημαντική στο σύνολο της πληροφορικής καθώς η έρευνά του αποτελεί ακόμα και σήμερα έναν από τους βασικούς άξονες της αρχιτεκτονικής λογισμικού και λειτουργικών συστημάτων.
Έντγκαρ Κοντ (Edgar F. Codd)
Ο Έντγκαρ Κοντ γεννήθηκε το 1923 στην Αγγλία και πέθανε το 2003 στη Φλόριντα των Η.Π.Α. . Σπούδασε μαθηματικά και χημεία στο πανεπιστήμιο του Έξετερ (Exeter) και αργότερα δούλεψε ως μηχανικός στην IBM. Η συμβολή του στην επιστήμη των υπολογιστών υπήρξε ιδιαίτερα σημαντική καθώς ανακάλυψε το θεωρητικό μοντέλο των σχεσιακών βάσεων δεδομένων, που αποτελεί ως σήμερα τη βάση για την κατασκευή των βάσεων δεδομένων. Επιπλέον, με τη μελέτη του επηρέασε τη γενική θεωρία της διαχείρισης και αποθήκευσης δεδομένων στα σημερινά υπολογιστικά συστήματα.
Τζων Μπάκους (John Backus)
Ο Τζων Μπάκους γεννήθηκε το 1924 στη Φιλαδέλφεια των Η.Π.Α. και πέθανε το 2007 στο Όρεγκον. Ήταν Αμερικανός μαθηματικός, απόφοιτος του πανεπιστημίου Κολούμπια (Columbia). Από το 1950 εργάστηκε για λογαριασμό της ΙΒΜ πάνω στον υπολογιστή SSEC (Selective Sequence Electronic Calculator) για τον οποίο και ανέπτυξε ένα πρόγραμμα που υπολόγιζε θέσεις πάνω στο Φεγγάρι. Το 1953 ανέπτυξε τη γλώσσα προγραμματισμού Speedcoding, την πρώτη γλώσσα υψηλού επιπέδου της ΙΒΜ. Το 1954 ο Μπάκους δημιούργησε μια ομάδα με την οποία ανέπτυξε την πρώτη γλώσσα ευρείας χρήσεως, τη FORTRAN. Η FORTRAN ως γλώσσα έγινε ιδιαίτερα δημοφιλής στην επιστημονική κοινότητα καθώς ήταν αρκετά αποδοτική στους μαθηματικούς υπολογισμούς. Ακόμα και σήμερα πολλά προβλήματα μηχανικής, φυσικής και μαθηματικών επιλύονται χρησιμοποιώντας προγράμματα που αναπτύχθηκαν με τη FORTRAN.
Κεν Τόμσον (Ken Thompson) και Ντένις Ρίτσι (Dennis Ritchie)
Οι Κεν Τόμσον και Ντένις Ρίτσι είναι Αμερικανοί επιστήμονες που εργάστηκαν στα εργαστήρια Μπελ (Bell labs) όπου σχεδίασαν το λειτουργικό σύστημα Unix, ένα από τα πιο δημοφιλή λειτουργικά συστήματα της εποχής του, που αποτέλεσε ορόσημο για την τεχνολογία των λειτουργικών συστημάτων. Επιπλέον, ανέπτυξαν τη γλώσσα προγραμματισμού C μια γλώσσα γενικού σκοπού για τον προγραμματισμό και την ανάπτυξη λογισμικού για το λειτουργικό σύστημα Unix.
Η γλώσσα προγραμματισμού C αποτελεί ίσως τη σημαντικότερη γλώσσα ως σήμερα. Έχουν αναπτυχθεί κυριολεκτικά εκατομμύρια εφαρμογές χρησιμοποιώντας τη συγκεκριμένη γλώσσα. Η χρήση της είναι ιδιαίτερα ευρεία καθώς με τη γλώσσα C αναπτύσσεται λογισμικό ακόμα και σήμερα για τις περισσότερες συσκευές, κινητά τηλέφωνα, ηλεκτρονικές μικροσυσκευές, μόντεμ/ρούτερ ως και λογισμικό εγκεφάλων οχημάτων. Το βασικό πλεονέκτημα της συγκεκριμένης γλώσσας ήταν η αρκετά καλή διαχείριση του υλικού του υπολογιστή στον οποίο έτρεχε, γεγονός που την καθιστά ιδανική για τις περισσότερες υπολογιστικές μηχανές. Ακόμα και σήμερα ίσως να μην υπάρχει καμιά άλλη γλώσσα γενικού σκοπού που να είναι τόσο αποδοτική και γρήγορη όσο η C.
Μάργκαρετ Χάμιλτον (Margaret Hamilton)
Γεννήθηκε το 1936 στην Ιντιάνα των Η.Π.Α. και είναι μηχανικός και ερευνήτρια πάνω στην επιστήμη των υπολογιστών. Ήταν ένας από τους βασικούς μηχανικούς που σχεδίασαν το λογισμικό των υπολογιστών του προγράμματος Απόλλων (Apollo) με το οποίο πήγε ο άνθρωπος στο Φεγγάρι.
Κατά τη διάρκεια της φάσης ανάπτυξης του λογισμικού για το πρόγραμμα Απόλλων (Apollo) η Μάργκαρετ Χάμιλτον ήρθε αντιμέτωπη με μια σειρά από προβλήματα που προέκυπταν λόγω της φύσης του έργου. Αρχικά, οι επικοινωνία του κεντρικού υπολογιστή της NASA με την κάψουλα Apollo ήταν αργή καθώς υπήρχαν μεγάλες αποστάσεις, ενώ οι λειτουργίες που εκτελούσε ο υπολογιστής ήταν ζωτικής σημασίας για την αποστολή και τη ζωή των αστροναυτών. Έτσι, έπρεπε να κατασκευαστεί λογισμικό με μεγάλη ασφάλεια, χωρίς σφάλματα και να προβλέπεται η καθυστέρηση στην επικοινωνία μεταξύ Γης και Φεγγαριού. Η Χάμιλτον, για να λύσει αυτά τα προβλήματα, ανέπτυξε τις πρώτες τεχνικές ασύγχρονης εκτέλεσης προγράμματος μέσω των οποίων ο κώδικας εκτελούνταν από τον υπολογιστή όχι σειριακά, αλλά ανάλογα με τον χρόνο κατά τον οποίο ήταν διαθέσιμη η πληροφορία. Η συγκεκριμένες τεχνικές, εκσυχρονισμένες, χρησιμοποιούνται λίγο-πολύ ακόμα και σήμερα σε λογισμικό που εκτελείται κατανεμημένα μέσω δικτύων. Για την ασφάλεια του λογισμικού η Χάμιλτον ανέπτυξε ένα λογισμικό ελέγχου και διάγνωσης σφαλμάτων καθώς και έναν μηχανισμό που έδινε προτεραιότητα σε κάποιες διεργασίες έναντι άλλων.
Βιντ Σερφ (Vint Cerf)
Γεννήθηκε στην Κονέκτικατ των Η.Π.Α. το 1943 και αποφοίτησε με πτυχίο μαθηματικών από το Στάνφορτν. Αφού εργάστηκε για κάποια χρόνια στην ΙΒΜ ολοκλήρωσε τις σπουδές του στο UCLA. Κατά τη διάρκεια της διδακτορικής του διατριβής δούλεψε πάνω στην ανάπτυξη ενός πρωτοκόλλου επικοινωνίας μεταξύ δύο κόμβων, του ARPANet, ενός πρώιμου είδους WAN (Wide Area Network) στις Η.Π.Α. . Το πρωτόκολλο που ανέπτυξε ο Σερφ αποτέλεσε το πρώτο TCP/IP πρωτόκολλο, το οποίο και δημοσιεύτηκε το 1974.
Η συμβολή του Σερφ στην πληροφορική μέσω της δημιουργίας του TCP/IP πρωτοκόλλου ήταν τεράστια. Το TCP/IP ακόμα και σήμερα, σχεδόν 50 χρόνια μετά, είναι το πρωτόκολλο επικοινωνίας σχεδόν όλων των υπολογιστών στον κόσμο. Όλα τα δίκτυα των εταιρειών καθώς και το διαδίκτυο λειτουργούν βάσει αυτού του πρωτοκόλλου μεταφέροντας TCP/IP πακέτα για την πληροφορία.
Τιμ Μπέρνερς Λι (Tim Berners-Lee)
Γεννήθηκε το 1955 στο Λονδίνο και σπούδασε φυσική στο πανεπιστήμιο Κουίνς (Queen’s College) της Οξφόρδης. Το 1980, ενώ εργαζόταν στο CERN, πρότεινε την ιδέα της ανταλλαγής υπερκειμένου (hypertext) μέσω δικτύου, ώστε οι ερευνητές να μπορούν να ανταλλάσσουν δεδομένα και πληροφορίες. Από τότε, άρχισε να εργάζεται πάνω σε αυτήν την ιδέα ως και το 1989, όπου πλέον το CERN είχε γίνει ένας μεγάλος δικτυακός κόμβος υπολογιστών σε όλη την Ευρώπη.
Το 1989 ο Μπέρνερς Λι είχε την ιδέα να ενσωματώσει αρχεία υπερκειμένου και να τα στέλνει μέσω TCP πρωτοκόλλου. Το πλεονέκτημα αυτής της μεθόδου ήταν πως τα δεδομένα που αποστέλλονταν ήταν συγκεκριμένα, μορφοποιημένα και η δουλειά των ερευνητών γινόταν ευκολότερη σε σχέση με το παρελθόν. Τον Νοέμβριο του 1989 ο Μπέρνερς Λι εκτέλεσε επιτυχώς την πρώτη μετάδοση υπερκειμένου μέσω δικτύου υπολογιστών μέσω του πρωτοκόλλου HTTP (HyperText Transfer Protocol). Αυτή αποτελεί και την πρώτη μετάδοση πληροφορίας μέσω διαδικτύου στην Ιστορία. Σήμερα, ο Τιμ Μπέρνερς Λι είναι διευθυντής της Κοινοπραξίας του Παγκοσμίου Ιστού (W3C).
Επίλογος
Οι γλώσσες προγραμματισμού αποτελούν ένα πολύ σημαντικό πεδίο έρευνας στον κλάδο της επιστήμης των υπολογιστών σήμερα, τόσο σε θεωρητικό όσο και σε πρακτικό επίπεδο. Η εξέλιξη αυτή έχει ενδιαφέρον γιατί καθώς οι γλώσσες εξελίσσονται, το λογισμικό αναπτύσσεται γρηγορότερα, αποδοτικότερα και περισσότερο αξιόπιστα. Ταυτόχρονα, με δεδομένο το γεγονός πως η εξέλιξη του υλικού των υπολογιστών είναι μικρή, το βάρος της έρευνας πέφτει περισσότερο προς αυτή τη κατεύθυνση.
Γλωσσάρι
* Πρόβλημα αποφάσεων: Ένα πρόβλημα απόφασης είναι μια ερώτηση της οποίας ως αποδεκτή απάντηση επιλέγεται το «ΝΑΙ» ή το «ΟΧΙ». Στην Πληροφορική αυτό χρησιμεύει για να οριστεί το αποτέλεσμα μιας ενέργειας ως αληθές ή ψευδές κατά την εκτέλεση ενός αλγορίθμου. Αυτή η τεχνική χρησιμοποιείται σε όλα τα προγράμματα υπολογιστών.
Πηγές
- Kernighan Brian W. & Ritchie Dennis M. (1990). Η γλώσσα προγραμματισμού C.
- O’ Connor, John J.; Robertson, Edmund F. MacTutor History of Mathematics archive, University of St Andrews.
- Johnson Roger (2008). School of computer science and information systems: A short history , 50 years of Computing, UK: Birkbeck School of Computing.
- Haigh, Thomas (2003). «Per Brinch Hansen». IEEE Annals of the History of Computing
- Per Brinch Hansen (1973). Operating System Principles. ISBN 0-13-637843-9
- Date, C. J. (2001). The Database Relational Model: A Retrospective Review and Analysis: A Historical Account and Assessment of E. F. Codd’s Contribution to the Field of Database Technology. Addison Wesley Longman. ISBN 978-0-201–61294-3.
- «The NASA Heritage Of Creativity» (2003). Annual Report of the NASA Inventions & Contributions Board.
Ηλ. Ταχ.: [email protected]
Ευθύμης Κυρίκος
Κωνσταντίνος Αλεξόπουλος
Απόφοιτος του Τμήματος Πολτιικής Επιστήμης και Δημόσιας Διοίκησης, Ε.Κ.Π.Α.