Εμπνεύστηκα να περιηγηθώ σε μερικά από τα δοκίμια του Edsger Dijkstra σήμερα και έπεσα πάνω στην ομιλία του με τίτλο «Υπό τη μαγεία του ονείρου του Leibniz» .
Είναι το είδος της προσωπικής ιστορίας που μου αρέσει να διαβάζω, η οποία δίνει την αίσθηση ενός ατόμου για τον κόσμο σε μια περίοδο αλλαγών. Ένα απόσπασμα που μου έκανε αμέσως εντύπωση ήταν η άποψή του για το πνεύμα της χώρας του μετά τον Β' Παγκόσμιο Πόλεμο:
Μια σημαντική παρενέργεια των δύσκολων καιρών ήταν η δημιουργία ενός πνευματικού κλίματος στο οποίο η διάκριση μεταξύ καθαρής και εφαρμοσμένης επιστήμης είχε εξαφανιστεί: από όλα τα πράγματα που μπορούσες να κάνεις, έκανες απλώς το πιο επείγον, και η ανάπτυξη κάποιας επειγόντως απαραίτητης θεωρίας ήταν συχνά το πιο πρακτικό πράγμα που μπορούσες να κάνεις. Ήταν προνόμιό μου να μεγαλώσω σε αυτό το πνευματικό κλίμα, και η πεποίθηση ότι αυτό που είναι θεωρητικά όμορφο τείνει να είναι εξαιρετικά χρήσιμο αποτελεί έκτοτε ένα στοιχείο της πίστης μου: στο σχεδιασμό εξελιγμένων ψηφιακών συστημάτων, η κομψότητα δεν είναι μια περιττή πολυτέλεια, αλλά ζήτημα ζωής και θανάτου, όντας ένας σημαντικός παράγοντας που καθορίζει μεταξύ επιτυχίας και αποτυχίας.
Η ιδέα της «επείγουσας ανάγκης θεωρίας» που καθοδηγείται από πρακτικές απαιτήσεις ταιριάζει με το πώς το μυαλό μου έχει περιπλανηθεί τα τελευταία πέντε χρόνια. Αλλά βρίσκω συναρπαστικό το πόσο λίγο αποδίδει στις εφαρμογές τη δημιουργία του κλίματος. Αντίθετα, επαινεί τις όμορφες θεωρίες για την πρακτικότητά τους, σαν να έχουν αντιστραφεί οι ρόλοι τους. Αφιερώνει το υπόλοιπο της ομιλίας του σε μεγάλο βαθμό υποτιμώντας τον κλάδο εκτός ακαδημαϊκού χώρου και ουσιαστικά αποκαλώντας τους περισσότερους φοιτητές και καθηγητές σε κάθε σύγχρονο πανεπιστήμιο ηλίθιους ανάξιους του δώρου της τριτοβάθμιας εκπαίδευσης. Αν ένιωθα γενναιόδωρος, θα έλεγα ότι η στάση του είναι μια λογική αντίδραση στο εκκρεμές της ιστορίας που απομακρύνεται από την αυστηρότητα και την ποιότητα για πολιτικούς λόγους.
Πιθανότατα είμαι επίσης προκατειλημμένος επειδή θεωρώ τον εαυτό μου κάποιον που πιθανότατα δεν θα είχε επιτραπεί να ενταχθεί στην αποκλειστική λέσχη των ελίτ ακαδημαϊκών που ήθελε να διατηρήσει. Παρ' όλα αυτά, απέκτησα αρκετή εκπαίδευση μέσα στο σύστημα που χλευάζει για να συνεισφέρω κάτι κομψό και χρήσιμο στον κλάδο του προγραμματισμού. Αν και από τον τρόπο που γράφει, πιθανότατα θα θεωρούσε το έργο μου «φλύαρο αντί για κοφτερό» και παρόμοιο με «άχρηστη επιστήμη».
Στην ομιλία του, ο Dijkstra συζητά το θέμα των γλωσσών προγραμματισμού, επαινώντας την ALGOL 60 για την κομψότητα και τις καινοτομίες της. Η ALGOL 60 εφηύρε πράγματα που θεωρούμε δεδομένα σήμερα, όπως το λεξιλογικό πεδίο εφαρμογής, έναν επίσημο λογικό τύπο, τους ορισμούς συναρτήσεων και τη σημειογραφία BNF.
Συνολικά, ο Dijkstra σκιαγραφεί μια εικόνα της παρακμής της κοινωνίας στην ηλιθιότητα. Ο προγραμματισμός παρασύρεται μαζί του, καθοδηγούμενος από τη διεφθαρμένη ιδέα ότι ο προγραμματισμός θα έπρεπε να είναι ευκολότερος για περισσότερους ανθρώπους. Η ειρωνεία ότι αυτό ακριβώς παρείχαν οι αγαπημένες του δυνατότητες της ALGOL 60, ειδικά στους απογόνους τους (δηλαδή, σε όλες τις σύγχρονες γλώσσες προγραμματισμού) φαίνεται να του διαφεύγει. Αντί να σχεδιάζει γλώσσες με νέους τρόπους για να κάνει ολόκληρες κατηγορίες σφαλμάτων μη αναπαραστάσιμες, ο Dijkstra θέτει την προσωπική πειθαρχία ως την κύρια προϋπόθεση και τη μοναδική λύση για την επιτυχία στον προγραμματισμό. Στην αφήγησή του, θα πρέπει να αποδεχτούμε ότι ο προγραμματισμός είναι εξαιρετικά δύσκολος και να γράψουμε μαθηματικές αποδείξεις για την ορθότητα του προγράμματος πριν προσπαθήσουμε να εφαρμόσουμε ένα πρόγραμμα. Προχωρώντας προς την άλλη κατεύθυνση, αυτό που αποκαλεί «δοκιμή και λάθος» και αυτό που θα μπορούσαμε σήμερα να ονομάσουμε «επαναληπτική ανάπτυξη» είναι διανοητικά χρεοκοπημένο.
Η ακαδημαϊκή κοινότητα έχει πληγεί, καθώς η μεθοδολογία προγραμματισμού δεν μπόρεσε να ακμάσει ως ερευνητικό θέμα σε έναν κόσμο στον οποίο θεωρούνταν άσχετη. Για πολλά πανεπιστήμια, αυτή ήταν μια μεγάλη απώλεια. Κατά καιρούς η κατάσταση μπορεί να βελτιώνεται, αλλά πρόκειται για μια αργή διαδικασία.
Από την δική μου οπτική γωνία, αυτό που στην πραγματικότητα έχει συμβεί είναι ότι η επέκταση του προγραμματισμού ως κλάδου, ακόμη και στον «μέσο προγραμματιστή», τον οποίο ο Ντάικστρα αποκαλεί «φανταστικούς ηλίθιους», είναι ο κύριος λόγος που το εκκρεμές επιστρέφει αυτή τη στιγμή στην αυστηρότητα. Το γεγονός ότι οι προγραμματιστές χρησιμοποιούν επανειλημμένα τα ίδια όπλα έχει γίνει το πρακτικό πρόβλημα που απαιτεί την ανάπτυξη μιας «επειγόντως απαραίτητης θεωρίας».
Η Rust είναι ένα καλό παράδειγμα αυτού. Από όσο μπορώ να καταλάβω, είναι η πρώτη σημαντική γλώσσα προγραμματισμού που σχεδιάστηκε για την ασφάλεια της μνήμης. Και ενώ η Rust είχε πολλές ιστορικές εμπνεύσεις , από όσο μπορώ να καταλάβω καμία δεν προσπάθησε καν να διασφαλίσει την ασφάλεια της μνήμης. Σημείωση: ενώ η συλλογή απορριμμάτων ήρθε με τα πρώτα LISP, πάντα σκέφτομαι τη συλλογή απορριμμάτων ως λεπτομέρεια υλοποίησης και όχι ως μέρος του σχεδιασμού της γλώσσας. Ίσως αυτό να είναι αφελές.
Αλλά πολύ πέρα από το Rust και ακόμη και τις πολλές άλλες σύγχρονες γλώσσες με ενδιαφέρουσα θεωρία, η δεκαετία του 2010 είδε μια άτακτη έκρηξη νέων εργαλείων λογισμικού και βιβλιοθηκών. Η επανεγγραφή, η βελτίωση και η ad hoc ανάπτυξη θεωριών έγιναν ο κανόνας, οδηγώντας τους ανθρώπους να ανακαλύψουν ξανά και να συνθέσουν παλιές και νέες ιδέες για να δημιουργήσουν μια πιο συνεκτική ιδεολογία λογισμικού. Θυμάμαι να μαθαίνω React και Redux το 2016 και να συνειδητοποιώ ότι η έλλειψη κατάστασης του React, η οποία καθοδηγείται από το μίασμα της παγκόσμιας διαχείρισης κατάστασης που χαρακτήριζε την ανάπτυξη frontend, οδήγησε το Redux να επανεφεύρει τη μονάδα. Παραδείγματα σαν κι αυτό αφθονούν.
Καθώς όλα αυτά τα λουλούδια άνθιζαν, η δεκαετία του 2020 ξημέρωσε με εξάντληση λόγω πολυπλοκότητας. Αυτό που βλέπω ως την αρχή μιας επιστροφής στην κομψότητα και την αυστηρότητα, με νέες θεωρίες να την υποστηρίζουν, δεν καθοδηγείται από την ηγεσία της ακαδημαϊκής καθαρότητας. Αντίθετα, είναι ένα μέσο για την αποτροπή του χάους που κατακλύζει μια κοινότητα όταν φτάνει στα όρια των αναλυτικών της δυνατοτήτων.
Με άλλα λόγια, ήμασταν τόσο μπερδεμένοι από τη ζούγκλα που μεγαλώσαμε που εφηύραμε γλώσσες όπως το Go, το οποίο, σύμφωνα με τα απόκρυφα λόγια των δημιουργών του, είναι «τόσο απλό που ούτε ένας μηχανικός της Google μπορεί να το κάνει θάλασσα». Αυτό το εκλαμβάνω ως ένδειξη τόσο ότι η Google είχε προσλάβει άπειρους νέους πτυχιούχους σαν τρελοί, όσο και ότι οι μηχανικοί της Google είναι από τα είδη των πανούργων καθάρματα που χρησιμοποιούν περίπλοκα γλωσσικά χαρακτηριστικά όπου δεν είναι απαραίτητα. Ενώ το καταστατικό του Go αποθαρρύνει ρητά την έρευνα για γλώσσες προγραμματισμού, η εντολή του για απλότητα την οδήγησε στο να σχεδιάσει νέες κομψές θεωρίες για τον έλεγχο εκδόσεων και να βελτιώσει προηγούμενες θεωρίες για τα γενόσημα.
Αυτό δεν θα μπορούσε να είχε συμβεί στον πύργο από ελεφαντόδοντο από ανθρώπους που, όπως το έθεσε κάπως αδέξια ο Ρομπ Πάικ, «μπορούν να εκτιμήσουν λαμπρές γλώσσες» (υπονοώντας ότι οι υπόλοιποι από εμάς δεν μπορούμε). Θα μπορούσε να είχε συμβεί μόνο στον εφιάλτη του Ντάικστρα. Έναν εφιάλτη γεμάτο «χοντρά, κίτρινα βιβλία με τίτλο 'Τέτοια για ανόητα'». Αυτό με επαναφέρει στη φιλοσοφία μου, την οποία ο Ντάικστρα πρέπει να είχε χάσει στα νιάτα του, ότι οι κατασκευαστές θεωριών χρειάζονται έναν κόσμο γεμάτο επείγοντα προβλήματα. Όταν το φράγμα σπάσει, οι δομικοί μηχανικοί ανταποκρίνονται με ανανεωμένο σκοπό. Όταν η ζούγκλα του παλαιού λογισμικού κοπεί και οι ίνες κομποστοποιηθούν, οι νέες θεωρίες και τα εργαλεία που φυτεύονται στην άργιλο προωθούν ολόκληρο το πεδίο. Με τον καιρό, το ίδιο αυτό άλμα προς τα εμπρός θα προσφέρει στην ανθρωπότητα μια νέα ζούγκλα, αγνώριστη από την πρώτη με τον ίδιο τρόπο που η ζούγκλα του προγραμματισμού με διάτρητες κάρτες είναι αγνώριστη στους συγχρόνους μου. Με απλά λόγια, η πρόοδος δεν μπορεί να υπάρξει στο κενό.
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου