Εισαγωγή
Δεν θα μπορούσαμε να αφήσουμε ασχολίαστο το σκαρίφημα (doodle) της Google (στις 10/12/2012), που ήταν αφιερωμένο στην Augusta Ada Byron – για τα 197α έτη από τη γέννησή της. Θεωρούμε πως όσοι έλκονται από την τεχνολογία των υπολογιστών, καλό είναι να γνωρίζουν τις ιστορικές προσωπικότητες που συνέβαλλαν στην εξέλιξή της.
Ίσως δεν είναι γνωστό στους περισσότερους ότι ο πρώτος άνθρωπος που διατύπωσε αλγόριθμο και πρόγραμμα σχεδιασμένο να εφαρμοστεί σε συγκεκριμένο υπολογιστή ήταν γυναίκα. Η Κόμισα του Λάβλεϊς: Augusta Ada Byron (Αυγούστα Άντα Μπάιρον), γνωστή ως Ada Lovelace (Άντα Λάβλεϊς), θεωρείται η πρώτη προγραμματίστρια στην ιστορία της τεχνολογίας των υπολογιστικών μηχανών.
Σύντομο βιογραφικό
Η Augusta Ada Byron γεννήθηκε στο Λονδίνο, στις 10 Δεκεμβρίου 1815. Ήταν μαθηματικός και συγγραφέας. Το μοναδικό νόμιμο τέκνο του φιλέλληνα ποιητή Λόρδου Βύρωνα (ή Μπάιρον, Lord George Gordon Byron VI). Απεβίωσε στις 27 Νοεμβρίου του 1852, σε ηλικία 36 ετών από καρκίνο στη μήτρα.
Το 1833 μέσω μιας κοινής φίλης, της επιστήμονος Mary Somerville (Μαίρη Σόμερβιλ), γνώρισε τον Άγγλο μαθηματικό, φιλόσοφο, εφευρέτη και μηχανικό Charles Babbage (Τσάρλς Μπάμπατζ) και εντυπωσιάστηκε από τις καινοτόμες ιδέες του για ένα νέο είδος υπολογιστικών μηχανών.
Ο πρώτος μηχανικός υπολογιστής
Το 1837 ο Babbage (ο αποκαλούμενος «πατέρας του υπολογιστή»), ως διάδοχο της «μηχανής διαφορών» (1822), σχεδίασε την «αναλυτική μηχανή»: τον πρώτο προγραμματίσιμο μηχανικό υπολογιστή γενικής χρήσης – πρόγονο των σύγχρονων υπολογιστών. Όμως, δεν κατάφερε να δει τη μηχανή του να υλοποιείται, καθώς τροποποιούσε διαρκώς τα σχέδιά της μέχρι το θάνατό του το 1871.
Ωστόσο, η «αναλυτική μηχανή» έγινε η αιτία η Ada Lovelace να καταχωρηθεί μαζί με τον Babbage στη λίστα των πρωτοπόρων της επιστήμης των υπολογιστών, αφού ήταν από τους λίγους ανθρώπους που κατάλαβαν πλήρως το έργο του Babbage. Το απέδειξε περιγράφοντας εγγράφως, τόσο τη λειτουργία όσο και τον τρόπο προγραμματισμού της «αναλυτικής μηχανής».
Η μετάφραση της εργασίας του Menabrea
Ο νεαρός Ιταλός, μαθηματικός και μηχανικός, Luigi Menabrea (Λουϊτζι Μενάμπρεα) δημοσίευσε στην «Bibliothèque Universelle de Genève», το 1842, ένα άρθρο στα γαλλικά με τίτλο «Sketch of the Analytical Engine invented by Charles Babbage» (Σχεδίασμα της Αναλυτικής Μηχανής επινόημα του Charles Babbage). Το άρθρο βασιζόταν σε σημειώσεις που είχε κρατήσει ο ίδιος από μια σειρά διαλέξεων του Babbage στο Τορίνο της Ιταλίας, το έτος 1840.
(κάντε κλικ πάνω στις εικόνες για μεγέθυνση)
Η Ada μετέφρασε το κείμενο του Menabrea στα Αγγλικά και με προτροπή του Babbage προσέθεσε εφτά επεξηγηματικά σημειώματα (απαριθμημένα αλφαβητικά, από το A έως το G). Οι σημειώσεις χρειάστηκε ένα έτος για να γραφτούν και ήταν τριπλάσιες σε έκταση από το κυρίως κείμενο. Η μεταφρασμένη εργασία δημοσιεύτηκε το 1843 στο «The Ladies’ Diary» και στην επιστημονική έκδοση του Richard Taylor (Ρίτσαρντ Τέιλορ): «Scientific Memoirs» (τόμος 3ος, σελ. 666 – 731, Λονδίνο – 1843).
Τα σημειώματα τής μεταφράστριας έφεραν αντί του ονόματός της το αρκτικόλεξο «A.A.L» (Augusta Ada Lovelace), για να γνωρίζουν οι αναγνώστες ότι γράφτηκαν από το ίδιο πρόσωπο.
Επειδή ο ίδιος ο Babbage ποτέ δεν δημοσίευσε μια λεπτομερή περιγραφή της «Αναλυτικής Μηχανής», η σχολιασμένη μετάφραση στην αγγλική του κειμένου του Menabrea, που έγινε από την Ada, αποτελεί την περισσότερο επεξηγηματική και ολοκληρωμένη εργασία για ένα από τα πιο περίπλοκα και προχωρημένα εγχειρήματα του 19ου αιώνα.
Το πρώτο πρόγραμμα υπολογιστή
Η Ada στις σημειώσεις της έκανε ένα εννοιολογικό άλμα συγκρίνοντας την «αναλυτική μηχανή» με προηγούμενες υπολογιστικές μηχανές, επικέντρωνε στη δυνατότητά της να προγραμματιστεί για την επίλυση οποιονδήποτε πολυσύνθετων προβλημάτων: [η αναλυτική μηχανή] «…δύναται να επιδράσει και σε άλλα πράγματα εκτός από αριθμούς…». Ακολουθεί το κείμενό της αμετάφραστο:
«Again, it might act upon other things besides number, were objects found whose mutual fundamental relations could be expressed by those of the abstract science of operations, and which should be also susceptible of adaptations to the action of the operating notation and mechanism of the engine.»
(το 1ο πρόγραμμα υπολογιστή – κλικ για μεγέθυνση)
Όμως, ο λόγος για τον οποίο χαρακτηρίζεται ως η πρώτη προγραμματίστρια υπολογιστή είναι η σημείωση G (Note G). Εκεί περιέγραφε έναν αλγόριθμο για την «αναλυτική μηχανή» που υπολόγιζε αριθμούς Bernoulli (Μπερνούλι). Επιπλέον αναπαριστούσε τον αλγόριθμο σε ένα διάγραμμα πίνακα. Το εν λόγω διάγραμμα αποκαλείται ως ένα από τα πρώτα «προγράμματα υπολογιστή», που υπολόγιζε αριθμούς Μπερνούλι και γράφτηκε από την Ada Lovelace για την Αναλυτική Μηχανή του Charles Babbage.
Εν τούτοις, ποτέ δεν είδε το πρόγραμμά να υλοποιεί τους υπολογισμούς της αφού η Αναλυτική Μηχανή (βλ. παρακάτω εικόνα) δεν είχε κατασκευαστεί μέχρι το θάνατό της.
(κάντε κλικ πάνω στην εικόνα για μεγέθυνση)
Η μετάφραση της εργασίας του Menabrea με τα αναλυτικά σχόλια της Augusta Ada Lovelace αποτελεί «την πιο σημαντική μελέτη στην ιστορία της πληροφορικής πριν από τη σύγχρονη εποχή» (Bromley, «“Introduction” in Babbage» και Henry Prevost, «Babbage’s Calculating Engines», XV).
Η γλώσσα προγραμματισμού «Ada»
Το Υπουργείο Αμύνης των Η.Π.Α. αναγνωρίζοντας τη συνεισφορά της Ada Lovelace στην τεχνολογία των υπολογιστών ονόμασε «Ada» μία υψηλού επιπέδου γλώσσα προγραμματισμού υπολογιστών που δημιουργήθηκε για της ανάγκες του μέσα στα έτη 1977 έως 1983. Στις 10 Δεκεμβρίου 1980 (ημέρα γενεθλίων της Ada Lovelace) ενέκρινε το εγχειρίδιο αναφοράς της γλώσσας δίνοντας τον κωδικό MIL-STD-1815 στο Στρατιωτικό Πρότυπο των Η.Π.Α.
Η Ada είναι μια επιτυχημένη γλώσσα δομημένου και αντικειμενοστραφούς προγραμματισμού που χρησιμοποιείτε στις μέρες μας σε πλήθος εφαρμογών, ειδικά εκεί όπου η εξασφάλιση από κρίσιμα σφάλματα λογισμικού είναι απαραίτητη (π.χ. σε αεροδρόμια, σιδηροδρόμους, τράπεζες, στρατιωτικές εφαρμογές κ.α.).
Αν η Ada Lovelace ζούσε στην εποχή μας, ο καλύτερος χαιρετισμός για το τέλος αυτού του αφιερώματος θα ήταν μέσω ενός προγράμματος, που ο πηγαίος κώδικάς του θα ήταν γραμμένος, φυσικά, σε γλώσσα «Ada»…
with Ada.Text_IO; use Ada.Text_IO;
procedure HelloAda is
begin
Put_Line ("Hello, Augusta Ada Lovelace!");
end HelloAda;