Στις 20 Ιουλίου 1969, καθώς η σεληνιακή μονάδα, Eagle πλησίαζε την επιφάνεια της Σελήνης, οι υπολογιστές της άρχισαν να αναβοσβήνουν προειδοποιητικά μηνύματα. Για μια στιγμή, το Κέντρο Ελέγχου Αποστολής αμφιταλανεύτηκε για το αν πρέπει να γίνει η προσελήνωση ή όχι, αλλά αποφασίζοντας να εμπιστευθούνε το λογισμικό που αναπτύχθηκε από την επιστήμονα υπολογιστών Margaret Hamilton και την ομάδα της, είπαν στους αστροναύτες να προχωρήσουν. Το λογισμικό, το οποίο επέτρεπε στον υπολογιστή να αναγνωρίζει μηνύματα σφάλματος και να αγνοεί εργασίες χαμηλής προτεραιότητας, συνέχισε να καθοδηγεί τους αστροναύτες Neil Armstrong και Buzz Aldrin πάνω από την επιφάνεια της σελήνης στην προσγείωσή τους.
«Γρήγορα έγινε σαφές», είπε αργότερα, «ότι το λογισμικό όχι μόνο ενημέρωνε τους πάντες ότι υπήρχε πρόβλημα που σχετίζεται με το υλικό, αλλά ότι το λογισμικό το αντιστάθμιζε». Μετά από έρευνα που διεξάχθηκε, ανακαλύφθηκε ότι τελικά έφταιγε η λίστα ελέγχου των αστροναυτών, που τους έλεγε να ρυθμίσουν λανθασμένα τον διακόπτη υλικού του ραντάρ του ραντεβού. «Ευτυχώς, οι άνθρωποι στο Κέντρο Ελέγχου Αποστολής εμπιστεύτηκαν το λογισμικό μας», είπε η Hamilton. Και με καύσιμα μόνο για 30 δευτερόλεπτα ακόμη πτήσης, ο Νιλ Άρμστρονγκ δήλωσε: “Ο Αετός προσγειώθηκε”.
Αλλά ποιά ήταν η Μάργκαρετ Χάμιλτον; Ήταν η διευθύντρια του Τμήματος Μηχανικής Λογισμικού που ανέπτυξε το ενσωματωμένο λογισμικό πτήσης για το πρόγραμμα Apollo της NASA και η γυναίκα χάρη στην οποία το Apollo 11 κατάφερε να πραγματοποιήσει το ταξίδι του στην Σελήνη.
Η αυστηρή προσέγγισή της ήταν τόσο επιτυχημένη σε σημείο που δεν εμφανίστηκαν σφάλματα λογισμικού κατά τη διάρκεια των επανδρωμένων αποστολών Apollo. «Συμβολίζει αυτή τη γενιά αφανών γυναικών που βοήθησαν να σταλεί η ανθρωπότητα στο διάστημα», είπε ο πρόεδρος Μπαράκ Ομπάμα το 2016 όταν απένειμε στην Χάμιλτον το Προεδρικό Μετάλλιο της Ελευθερίας, το υψηλότερο πολιτικό βραβείο των Ηνωμένων Πολιτειών. Το 2017, ήταν μια από τις λίγες γυναίκες της Nasa που απαθανατίστηκαν ως φιγούρα Lego.
Σύμφωνα με τα λόγια της Μάργκαρετ Χάμιλτον:
Ο υπολογιστής (ή μάλλον το λογισμικό σε αυτόν) ήταν αρκετά έξυπνος ώστε να αναγνωρίσει ότι του ζητήθηκε να εκτελέσει περισσότερες εργασίες από ό,τι θα έπρεπε. Στη συνέχεια έστειλε συναγερμό, που σήμαινε στον αστροναύτη: “Είμαι υπερφορτωμένος με περισσότερες εργασίες από ό,τι θα έπρεπε να κάνω και αυτή τη στιγμή και θα κρατήσω μόνο τις πιο σημαντικές εργασίες”, δηλαδή αυτά που χρειάζονται για την προσγείωση… Στην πραγματικότητα, ο υπολογιστής ήταν προγραμματισμένος να κάνει περισσότερα από την αναγνώριση συνθηκών σφάλματος. Ένα πλήρες σύνολο προγραμμάτων αποκατάστασης ενσωματώθηκε στο λογισμικό. Η δράση του λογισμικού, σε αυτήν την περίπτωση, ήταν να εξαλείψει εργασίες χαμηλότερης προτεραιότητας και να αποκαταστήσει τις πιο σημαντικές… Εάν ο υπολογιστής δεν είχε αναγνωρίσει αυτό το πρόβλημα και δεν είχε προβεί σε ενέργειες αποκατάστασης, αμφιβάλλω αν το Apollo 11 θα ήταν η επιτυχής προσγείωση στο φεγγάρι που ζήσαμε.
Η Χάμιλτον περιέγραψε για το MIT News το 2009 τις συνεισφορές της στο λογισμικό Apollo — το οποίο προστέθηκε το 2016 στον ιστότοπο κοινής χρήσης κώδικα GitHub (δείτε εδώ τον πηγαίο κώδικα του Apollo Guidance Computer (AGC) για το Command Module και το Lunar Module στο Github):
“Από τη δική μου οπτική, η ίδια η εμπειρία του λογισμικού (η σχεδίασή του, η ανάπτυξή του, η εξέλιξή του, η παρακολούθηση της απόδοσης και η εκμάθηση από αυτήν για μελλοντικά συστήματα) ήταν τουλάχιστον εξίσου συναρπαστική με τα γεγονότα γύρω από την αποστολή. Δεν υπήρχε δεύτερη ευκαιρία. Το ξέραμε. Πήραμε τη δουλειά μας στα σοβαρά, πολλοί από εμάς ξεκινήσαμε αυτό το ταξίδι ενώ είμασταν ακόμα στα 20 μας. Η εξεύρεση λύσεων και νέων ιδεών ήταν μια περιπέτεια. Η αφοσίωση και η δέσμευση ήταν δεδομένες. Ο αμοιβαίος σεβασμός ήταν παντού. Επειδή το λογισμικό ήταν ένα μυστήριο, ένα μαύρο κουτί, η ανώτερη διοίκηση μας έδωσε απόλυτη ελευθερία και εμπιστοσύνη. Έπρεπε να βρούμε τρόπο και το κάναμε. Κοιτάζοντας πίσω, ήμασταν οι πιο τυχεροί άνθρωποι στον κόσμο. δεν υπήρχε άλλη επιλογή από το να είμαστε πρωτοπόροι”.
Οι αστροναύτες είχαν πρόσβαση μόνο σε 72 kilobyte μνήμης υπολογιστή (ένα κινητό τηλέφωνο 64 gigabyte σήμερα μεταφέρει σχεδόν ένα εκατομμύριο φορές περισσότερο χώρο αποθήκευσης). Οι προγραμματιστές έπρεπε να χρησιμοποιήσουν χάρτινες κάρτες διάτρησης (punch cards) για να τροφοδοτήσουν πληροφορίες σε υπολογιστές μεγέθους δωματίου χωρίς διεπαφή οθόνης.
Αξίζει να αναφερθεί ότι στη Μάργκαρετ Χάμιλτον μαζί με τους Anthony Oettinger και Barry Boehm αποδίδεται και ο όρος software engineering (“μηχανική λογισμικού”). Η δημιουργία κώδικα ήταν κάτι καινούργιο εκείνη την εποχή, και οι παραδοσιακοί μηχανικοί, που δούλευαν με το υλικό, έτειναν να το αντιμετωπίζουν σχετικά υποτιμητικά. Η Μάργκαρετ όμως συνήθιζε να λέει “έι, και εμείς είμαστε μηχανικοί” και τελικά σε μια συνάντηση του Apollo, ένας κορυφαίος ειδικός στο hardware συμφώνησε μαζί της, αναγνωρίζοντας ολόκληρο το πεδίο. Η Χάμιλτον περιγράφει λεπτομερώς πώς δημιούργησε τον όρο “μηχανική λογισμικού”:
Όταν πρωτοσκέφτηκα τον όρο, κανείς δεν τον είχε ξανακούσει, τουλάχιστον στον κόσμο μας. Αστειευόμασταν μ’ αυτό για πολύ καιρό. Τους άρεσε να αστειεύονται με τις ριζοσπαστικές μου ιδέες. Ήταν μια αξέχαστη μέρα όταν ένας από τους πιο σεβαστούς hardware γκουρού εξήγησε σε όλους σε μια συνάντηση ότι συμφώνησε μαζί μου πως η διαδικασία κατασκευής λογισμικού πρέπει επίσης να θεωρείται κλάδος μηχανικής, όπως ακριβώς και το hardware. Όχι λόγω μιας αυθαίρετης αποδοχής του νέου αυτού όρου, αλλά επειδή είχαμε κερδίσει απο μόνοι μας τη δική του αποδοχή καθώς και των υπολοίπων στην αίθουσα, ως μέλη ενός κλάδου της μηχανικής.
Οι καινοτομίες της Χάμιλτον δεν σταματούν στην δημιουργία του λογισμικού που βοήθησε να φτάσει ο άνθρωπος στη Σελήνη. Σύμφωνα με το Wired: “Η Χάμιλτον, μαζί με την άλλη πρώιμη πρωτοπόρο προγραμματισμού, την εφευρέτη της COBOL, Grace Hopper, αξίζουν επίσης τεράστια εύσημα που βοήθησαν να ανοίξει ο δρόμος σε περισσότερες γυναίκες να εισέλθουν και να επιτύχουν σε τομείς STEM όπως το λογισμικό.”
Πηγές: wikipedia, Logiscool, news.mit.edu, smithsonian.mag