Η αρχιτεκτονική εξέλιξη: Από τα χαρτοταινίες στα full-screen τερματικά

Η ιστορία της πληροφορικής είναι γεμάτη από τεχνολογικές τομές, αλλά ελάχιστα εργαλεία έχουν επιβιώσει για πέντε δεκαετίες διατηρώντας την ίδια αρχιτεκτονική φιλοσοφία. Στα πρώτα χρόνια του computing, η αλληλεπίδραση με τα συστήματα γινόταν μέσω διάτρητων καρτών (punch cards) και εκτυπωτών τύπου teletype. Η έλευση των πρώτων τερματικών οθόνης (glass teletype terminals) επέτρεψε την ανάπτυξη του TECO και, αργότερα, του Control-R, το οποίο έφερε την επανάσταση προβάλλοντας τις αλλαγές απευθείας στην οθόνη.

Το κρίσιμο σημείο καμπής ήρθε το 1976, όταν ο Richard Stallman τροποποίησε τον πυρήνα του Control-R, διασφαλίζοντας ότι κάθε πλήκτρο εκτελούσε το δικό του macro κατά το πάτημα. Αυτή η προσέγγιση μετέτρεψε το εργαλείο σε ένα πλήρως προγραμματιζόμενο περιβάλλον, επιτρέποντας στους developers να προσαρμόζουν τη συμπεριφορά του editor στις ανάγκες τους σε επίπεδο runtime.

Η επίλυση ενός προβλήματος διαλειτουργικότητας

Καθώς κάθε hacker στο MIT AI Lab προσέθετε τις δικές του εντολές, δημιουργήθηκε σοβαρό ζόρι συντήρησης και ασυνέχειας. Ο Guy Steele ανέλαβε τον ρόλο του διαμεσολαβητή για τη δημιουργία ενός τυποποιημένου συνόλου εντολών (standard keybindings), αξιοποιώντας το Meta key των τότε πληκτρολογίων. Το αποτέλεσμα ονομάστηκε EMACS (Editing Macros). Παρά την τεχνική του πολυπλοκότητα, ο editor σχεδιάστηκε έτσι ώστε ακόμη και αρχάριοι χρήστες να μπορούν να επεξεργάζονται αρχεία μέσα σε λίγα λεπτά, ενώ οι έμπειροι μηχανικοί εκτιμούσαν την τεράστια ευελιξία του.

Η γέννηση του GNU Project και η κληρονομιά του

Η εμπορική αξιοποίηση του EMACS από εταιρείες όπως η Honeywell και από προγραμματιστές όπως ο James Gosling λειτούργησε ως καταλύτης για τον Stallman, ο οποίος αποφάσισε να ιδρύσει το GNU Project. Το GNU Emacs αποτέλεσε την πρώτη μεγάλη εφαρμογή αυτού του εγχειρήματος, θέτοντας τα θεμέλια για το οικοσύστημα του GNU/Linux. Ακόμη και σήμερα, μισό αιώνα μετά, η λογική και τα keybindings του EMACS συνεχίζουν να επηρεάζουν τα σύγχρονα ψηφιακά περιβάλλοντα ανάπτυξης και τα υποσυστήματα κειμένου δημοφιλών λειτουργικών συστημάτων.