Κεν Τόμσον

Ο Κένεθ Λέιν "Κεν" Τόμσον (αγγλικά: Kenneth Lane "Ken" Thompson, 4 Φεβρουαρίου 1943), συχνά αναφερόμενος ως ken στους κύκλους των χάκερ, είναι Αμερικανός πρωτοπόρος της επιστήμης των υπολογιστών. Έχοντας δουλέψει στα Εργαστήρια Μπελ (Bell Labs) το μεγαλύτερο μέρος της καριέρας του, ο Τόμσον σχεδίασε και υλοποίησε το αρχικό λειτουργικό σύστημα Unix. Επίσης, εφηύρε τη γλώσσα προγραμματισμού B, τον άμεσο πρόγονο της γλώσσας προγραμματισμού C και ήταν ένας από τους δημιουργούς και πρώτους προγραμματιστές του λειτουργικού συστήματος Plan 9. Από το 2006 και μετά, ο Τόμσον εργάστηκε στην Google, όπου συν-εφήυρε τη γλώσσα προγραμματισμού Go. Άλλες αξιοσημείωτες συνεισφορές του συμπεριλαμβάνουν την δουλειά του πάνω στις κανονικές εκφράσεις και στους πρώτους ηλεκτρονικούς επεξεργαστές κειμένου QED και ed, τον ορισμό της κωδικοποίησης UTF-8, το ηλεκτρονικό σκάκι που συμπεριλαμβάνει τη δημιουργία βάσεων πινάκων τελειωμένων παιχνιδιών (endgame tablebases) και τη δημιουργία της σκακιστικής μηχανής Belle.

 Ο Τόμσον γεννήθηκε στη Νέα Ορλεάνη. Όταν ερωτήθηκε πως έμαθε προγραμματισμό, ο Τόμσον απάντησε "Πάντα με γοήτευε η λογική και ακόμα και από το δημοτικό δούλευα σε αριθμητικά προβλήματα σε δυαδικό σύστημα, και σε πράγματα όπως αυτό. Απλά και μόνο επειδή με γοήτευε.". Ο Τόμσον έλαβε το πτυχίο του το 1965 και το μεταπτυχιακό του το 1966, και τα δύο στο τομέα των Ηλεκτρολόγων Μηχανικών και Επιστήμης των Υπολογιστών, από το πανεπιστήμιο Μπέρκλεϋ της Καλιφόρνια (University of California, Berkeley). Τη μεταπτυχιακή του εργασία επιτήρησε ο καθηγητής Έλγουιν Μπέρλεκαμπ (Elwyn Berlekamp).Ο Τόμσον προσελήφθη στα Εργαστήρια Μπελ το 1966. Τη δεκαετία του 1960 στα Εργαστήρια Μπελ, ο Τόμσον με τον Ντένις Ρίτσι (Dennis Ritchie) εργαστήκανε στο λειτουργικό σύστημα Multics. Γράφοντας το Multics, ο Τόμσον δημιούργησε τη γλώσσα προγραμματισμού Bon. Επίσης, δημιούργησε ένα βιντεοπαιχνίδι με το τίτλο Space Travel. Αργότερα, τα Εργαστήρια Μπελ αποσύρθηκαν από τη συμμετοχή στο Multics. Προκειμένου ο Τόμσον να παίζει το παιχνίδι του βρήκε ένα παλιό μηχάνημα PDP-7 και έγραψε εκ νέου το Space Travel σε αυτό. Τελικώς, από τα εργαλεία που ανέπτυξε προέκυψε ο λειτουργικό σύστημα Unix. Εργαζόμενη σε ένα PDP-7, μία ομάδα ερευνητών των Εργαστηρίων Μπελ, συμπεριλαμβανομένου και του Ραντ Κνάντεϊ (Rudd Cnaday), κάτω από τη καθοδήγηση του Τόμσον και του Ρίτσι, ανέπτυξαν ένα ιεραρχικό σύστημα αρχείων, την έννοια των διεργασιών του υπολογιστή και των αρχείων συσκευών, έναν διερμηνέα γραμμής εντολών και μερικά άλλα μικρά εργαλεία. Το 1970, ο Μπράιαν Κέρνιχαν (Brian Kernighan) πρότεινε το όνομα "Unix", ως ένα λογοπαίγνιο με αφορμή το όνομα "Multics". Μετά από αρχική εργασία στο Unix, ο Τόμσον αποφάσισε ότι το Unix χρειαζόταν μία γλώσσα προγραμματισμού και δημιούργησε την B, πρόγονο της C του Ρίτσι.Τη δεκαετία του 1960, ο Τόμσον ξεκίνησε επίσης να εργάζεται πάνω στις κανονικές εκφράσεις. Ο Τόμσον ανέπτυξε την έκδοση του κειμενογράφου QED για το λειτουργικό σύστημα CTSS, που συμπεριλάμβανε τη χρήση κανονικών εκφράσεων για αναζήτηση κείμενου. Το QED και ο μεταγενέστερος επεξεργαστής κειμένου του Τόμσον ed (ο προκαθορισμένος επεξεργαστής κειμένου στο Unix) συνεισέφεραν σημαντικά στη δημοφιλία των κανονικών εκφράσεων και τελικά αυτές καθιερώθηκαν στα περισσότερα προγράμματα επεξεργασίας κειμένου του Unix. Σχεδόν όλα τα προγράμματα που χρησιμοποιούν κανονικές εκφράσεις σήμερα χρησιμοποιούν κάποια εκδοχή της σημειογραφίας του Τόμσον. Επίσης, ο Τόμσον εφηύρε τον "αλγόριθμο κατασκευής Τόμσον" για τη μετατροπή κανονικών εκφράσεων σε μη ντετερμινιστικά πεπερασμένα αυτόματα, με σκοπό να κάνει το ταίριασμα εκφράσεων πιο γρήγορο. Κατά τη δεκαετία του 1970, ο Τόμσον και ο Ρίτσι συνεργάστηκαν πάνω στο λειτουργικό σύστημα Unix. Επηρέασαν τόσο το Research Unix που αργότερα ο Νταγκ Μακιλρόι (Doug McIlroy) έγραψε: "Τα ονόματα των Ρίτσι και Τόμσον μπορούν ασφαλώς να θεωρηθούν ότι συνδέονται με σχεδόν οτιδήποτε δεν αποδίδεται με άλλο τρόπο". Σε μία συνέντευξη το 2011, ο Τόμσον δήλωσε ότι οι πρώτες εκδόσεις του Unix είχαν γραφεί μόνο από αυτόν και ότι ο Ρίτσι αργότερα ξεκίνησε να διαδίδει το σύστημα και να βοηθάει στην ανάπτυξη του: Έκανα τις πρώτες δύο ή τρεις εκδόσεις του UNIX τελείως μόνος. Και ο Ντένις έγινε ευαγγελιστής. Ύστερα υπήρξε μία επανεγγραφή σε μία γλώσσα υψηλότερου επιπέδου που αργότερα θα ονομαζόταν C. Εκείνος εργάστηκε κυρίως στη γλώσσα και το σύστημα εισόδου/εξόδου και εγώ εργάστηκα σε όλο το υπόλοιπο λειτουργικό σύστημα. Αυτό ήταν για το PDP-11, το οποίο συμπτωματικά ήταν ευνοϊκό, επειδή αυτός ήταν ο υπολογιστής που χρησιμοποιήθηκε ευρέως από την ακαδημαϊκή κοινότητα.Η ανατροφοδότηση από την ανάπτυξη του Unix από το Τόμσον ήταν επίσης σημαντική για την ανάπτυξη της γλώσσας προγραμματισμού C. Αργότερα ο Τόμσον είπε ότι η γλώσσα C "ωρίμασε με κάθε επανεγγραφή του συστήματος και ως εκ τούτου έγινε ιδανική για να γράφεις συστήματα".Το 1975, o Τόμσον πήρε άδεια άνευ αποδοχών από τα Εργαστήρια Μπελ και πήγε πίσω στο πανεπιστήμιο του, το Μπέρκλεϋ. Εκεί, βοήθησε με την εγκατάσταση της 6ης έκδοσης του Unix σε ένα PDP-11/70. Αργότερα, το Μπέρκλεϊ θα συντηρούσε τη δικιά του αυτόνομη εκδοχή του Unix γνωστή και ως Berkeley Software Distribution (BSD).Μαζί με τον Τζόσεφ Κόντον (Joseph Condon), ο Τόμσον δημιούργησε το υλισμικό και λογισμικό για το Belle, έναν παγκόσμιο πρωταθλητή υπολογιστή σκακιού. Επίσης έγραψε προγράμματα για την πλήρη απαρίθμηση όλων των τελειωμένων παιχνιδιών σκακιού, γνωστά και ως endgame tablebases, για όλες τις τελικές καταστάσεις με 4,5 ή 6 πιόνια, επιτρέποντας σε κάποιο πρόγραμμα να επιλέγει τις "τέλειες" κινήσεις εφόσον το παιχνίδι έφτανε σε μία αποθηκευμένη κατάσταση. Αργότερα, με τη βοήθεια του ειδικού σε τελικές καταστάσεις σκακιού Τζον Ρόικροφτ (John Roycroft), ο Τόμσον διένειμε τα πρώτα του αποτελέσματα σε CD-ROM. Κατά τη δεκαετία του 1980, ο Τόμσον και ο Ρίτσι συνέχισαν να αναθεωρούν το Research Unix, το οποίο είχε υιοθετήσει το κώδικα του BSD για την 8η, 9η και 10η έκδοση του. Στα μέσα της δεκαετίας του 1980, στα Εργαστήρια Μπελ ξεκίνησαν να εργάζονται σε ένα νέο λειτουργικό σύστημα ως αντικαταστάτη του Unix. Ο Τόμσον ήταν συντελεστικός στο σχεδιασμό και υλοποίηση του Plan 9 από τα Εργαστήρια Μπελ, ένα νέο λειτουργικό σύστημα που χρησιμοποιούσε τις αρχές του Unix, αλλά τις εφάρμοζε περισσότερο ευρέως σε όλα τις μεγάλες συστημικές υποδομές. Μερικά προγράμματα που ήταν μέρος μεταγενέστερων εκδόσεων του Research Unix, όπως το mk και το rc, αργότερα επίσης ενσωματώθηκαν στο Plan 9. Ο Τόμσον δοκίμασε πρώιμες εκδόσεις της γλώσσας προγραμματισμού C++ του Μπιάρνε Στρούστρουπ (Bjarne Stroustrup) γράφοντας προγράμματα σε αυτή, αργότερα όμως αρνήθηκε να εργαστεί με αυτή λόγω συχνών ασυμβατοτήτων μεταξύ των εκδόσεων της. Το 2009 σε μία συνέντευξη, ο Τόμσον εξέφρασε μία αρνητική στάση απέναντι στην C++, δηλώνοντας "Κάνει πολλά πράγματα μερικώς καλά και είναι ένας σωρός σκουπιδιών από ιδέες που αποκλείονται αμοιβαία". Το 1992, ο Τόμσον ανέπτυξε τη κωδικοποίηση UTF-8 μαζί με το Ρομπ Πάικ (Rob Pike). Η κωδικοποίηση UTF-8 στη συνέχεια έγινε η κυρίαρχη κωδικοποίηση για το Παγκόσμιο Ιστό, μετρώντας περισσότερες από τις μισές σελίδες του συνόλου του ιστού.Τη δεκαετία του 1990, εργάστηκε στο λειτουργικό σύστημα Inferno, ένα άλλο ερευνητικό λειτουργικό σύστημα που βασίστηκε γύρο από μία μεταφέρσιμη εικονική μηχανή. Ο Τόμσον και ο Ρίτσι συνέχισαν τη συνεργασία τους στο Inferno, μαζί με άλλους ερευνητές από τα Εργαστήρια Μπελ. Στα τέλη της δεκαετίας του 2000, ο Τόμσον αποσύρθηκε από τα Εργαστήρια Μπελ. Εργάστηκε στην εταιρία Entrisphere ως συνεργάτης μέχρι το 2006 και τώρα εργάζεται στην Google ως διακεκριμένος μηχανικός. Η πιο πρόσφατη δουλειά του συμπεριλαμβάνει τη συν-δημιουργία της γλώσσας προγραμματισμού Go. Αναφερόμενος στον εαυτό του μαζί με τους υπόλοιπους αρχικούς συγγραφείς της, αναφέρει: Όταν οι τρεις μας [Τόμσον, Ρομπ Πάικ και Ρόμπερτ Γκρίσεμερ (Robert Griesemer)] ξεκινήσαμε, ήταν καθαρή έρευνα. Οι τρεις μας αποφασίσαμε ότι μισούμε τη C++ [γέλιο]... [Επιστρέφοντας στη Go] ξεκινήσαμε με την ιδέα ότι και οι τρεις μας έπρεπε να έχουμε λόγω σε κάθε χαρακτηριστικό της γλώσσας, ώστε να μην έμπαιναν περιττά σκουπίδια στη γλώσσα για κανένα λόγο. Σύμφωνα με μία συνέντευξη το 2009, ο Τόμσον πλέον χρησιμοποιεί ένα λειτουργικό σύστημα βασισμένο στο Linux. Το 1980, ο Τόμσον εκλέχτηκε από την Εθνική Ακαδημία Μηχανικών για το "σχεδιασμό του UNIX, ένα λειτουργικό σύστημα του οποίου η αποδοτικότητα, το εύρος, η δύναμη και το στυλ οδήγησαν την εξερεύνηση των μικροϋπολογιστών μίας γενιάς". Το 1983, ο Τόμσον και ο Ρίτσι από κοινού έλαβαν το βραβείο Τούρινγκ "για την ανάπτυξη της θεωρίας λειτουργικών συστημάτων γενικής χρήσης και συγκεκριμένα για την υλοποίηση του λειτουργικού συστήματος UNIX". Κατά την ομιλία της αποδοχής του με τίτλο "Reflections on Trusting Trust", παρουσίασε την επίθεση κερκόπορτας πλέον γνωστή ως το χακ του Τόμσον ή επίθεση της αξιόπιστης εμπιστοσύνης, η οποία θεωρείται ευρέως ως μία πολύ σημαντική και πρωτότυπη δουλειά πάνω στην ασφάλεια υπολογιστών. Το 1990, ο Τόμσον και ο Ντένις Ρίτσι δέχτηκαν το μετάλλιο IEEE Richard W. Hamming για "τη συν-δημιουργία του λειτουργικού συστήματος UNIX και την ανάπτυξη της γλώσσας προγραμματισμού C". Το 1997, ο Τόμσον και ο Ρίτσι έγιναν μέλη του Μουσείου Ιστορίας των Υπολογιστών για "τη συν-δημιουργία του UNIX και την ανάπτυξη της γλώσσας προγραμματισμού C". Στις 27 Απριλίου του 1999, ο Τόμσον και ο Ρίτσι από κοινού έλαβαν το Εθνικό Μετάλλιο Τεχνολογίας για το 1998 από τον πρόεδρο Μπιλ Κλίντον, για τη συν-δημιουργία του λειτουργικού συστήματος UNIX και την ανάπτυξη της γλώσσας προγραμματισμού C που οδήγησαν σε σημαντικές εξελίξεις στο υλικό και λογισμικό υπολογιστών, σε δικτυακά συστήματα, και ώθησαν την ανάπτυξη μιας ολόκληρης βιομηχανίας, ενισχύοντας την αμερικανική πρωτοκαθεδρία στην Εποχή της Πληροφορίας. Το 1999, το Ινστιτούτο Ηλεκτρολόγων και Ηλεκτρονικών Μηχανικών επέλεξε το Τόμσον να λάβει το πρώτο βραβείο Tsutomu Kanai για "το ρόλο του στη δημιουργία του λειτουργικού συστήματος UNIX, το οποίο για δεκαετίες υπήρξε πλατφόρμα κλειδί στο χώρο των κατανεμημένων συστημάτων". Το 2011, ο Τόμσον μαζί με το Ρίτσι, βραβεύτηκαν με το βραβείο της Ιαπωνίας για την Πληροφορική και τις Τηλεπικοινωνίες για την πρωτότυπη δουλειά τους πάνω στην ανάπτυξη του λειτουργικού συστήματος Unix.