Μια από τις πιο παράξενες ιστορίες από τον κόσμο των πειραματικών και ανορθόδοξων γλωσσών προγραμματισμού (esolangs) αφορά την efghi, μια πειραματική, μη κειμενική γλώσσα που δημιουργήθηκε από τον Timwi το 2016.
Η efghij θα μπορούσε, χαριτολογώντας, να χαρακτηριστεί «κυριολεκτικά αντικειμενοστραφής» (object-oriented): όχι όμως με την τεχνική έννοια του αντικειμενοστραφούς προγραμματισμού —με κλάσεις, αντικείμενα, μεθόδους και κληρονομικότητα— αλλά επειδή ο «κώδικάς» της αποτελείται πράγματι από φυσικά αντικείμενα καθημερινής χρήσης.
Αντί λοιπόν να γράφει κανείς εντολές με γράμματα και σύμβολα σε μια οθόνη, στην efghij η προγραμματιστική λογική, οι μεταβλητές, οι πράξεις και οι δομές ελέγχου αναπαρίστανται με χωρικές διατάξεις πραγματικών αντικειμένων επάνω σε επιφάνειες όπως ένας δίσκος ή ένα ξύλο κοπής.
Η ίδια η ονομασία efghij αποτελεί λογοπαίγνιο και αναπτύσσεται ως everyday food, garden & home item jenga: μια χιουμοριστική αναφορά στο γεγονός ότι η γλώσσα χρησιμοποιεί αντικείμενα που μπορεί να βρει κανείς στην κουζίνα, στο γραφείο, στον κήπο ή γενικότερα μέσα στο σπίτι.
Ένα από τα χαρακτηριστικότερα παραδείγματα είναι ένα «πρόγραμμα» για τον υπολογισμό του παραγοντικού ενός αριθμού.
Η διάταξη μοιάζει περισσότερο με έναν παράξενο πάγκο κουζίνας παρά με πρόγραμμα υπολογιστή:
-Ένας δίσκος και ένα ξύλο κοπής λειτουργούν ως μπλοκ κώδικα.
-Ένα μανταλάκι ρούχων τοποθετημένο σε πιατέλα δηλώνει έναν βρόχο επανάληψης, αντίστοιχο με έναν βρόχο for.
-Ένα πιρούνι παριστάνει μια τοπική μεταβλητή, η οποία αρχικοποιείται με την τιμή 1.
-Ένα δοχείο σάλτσας με λαστιχάκι χρησιμοποιείται ώστε ο αριθμός των επαναλήψεων να καθορίζεται από το όρισμα της συνάρτησης.
- Ένα συρραπτικό δηλώνει την πράξη του πολλαπλασιασμού, ενώ ένα ποτήρι χρησιμοποιείται για την εκχώρηση της νέας τιμής στη μεταβλητή.
Ένα σφυρί μειώνει την τιμή της μεταβλητής κατά 1.
Τέλος, ένα ρολό χαρτιού υγείας δηλώνει την τιμή επιστροφής (return value), ολοκληρώνοντας έτσι τον υπολογισμό του παραγοντικού.
Η γλώσσα διαθέτει και άλλες εξίσου αλλόκοτες συμβάσεις. Για παράδειγμα, διαφορετικά καθημερινά αντικείμενα μπορούν να συμβολίζουν αριθμητικές πράξεις, λογικούς ελέγχους, συναρτήσεις ή μεταβλητές. Ακόμη και η χωρική θέση των αντικειμένων έχει σημασία, αφού η σειρά με την οποία «διαβάζονται» μπορεί να εξαρτάται από τον τρόπο με τον οποίο είναι τοποθετημένα πάνω στην επιφάνεια.
Το πιο απολαυστικό ίσως παράδειγμα είναι το αντίστοιχο πρόγραμμα **“Hello, world!”**.
Στις περισσότερες γλώσσες προγραμματισμού, ο αρχάριος γράφει μια εντολή που ζητά από τον υπολογιστή να εμφανίσει τη γνωστή φράση στην οθόνη. Στην efghij, όμως, το αντίστοιχο πρόγραμμα —γνωστό ως TNT PILLOW— είναι σχεδόν κωμικά κυριολεκτικό:
αποτελείται από ένα μαξιλάρι, επάνω στο οποίο τοποθετείται ένα κομμάτι χαρτί με γραμμένες τις λέξεις:
“Hello, world!”
Και αυτό, ουσιαστικά, είναι ολόκληρο το πρόγραμμα.
Υπάρχει όμως μια σημαντική διευκρίνιση. Η efghij δεν πρέπει να παρουσιάζεται σαν μια συμβατική γλώσσα προγραμματισμού που χρησιμοποιείται πρακτικά ή διαθέτει έναν καθιερωμένο compiler ή interpreter. Στην τεκμηρίωσή της καταγράφεται ως non-textual και unimplemented. Πρόκειται περισσότερο για έναν ευφυή και χιουμοριστικό σχεδιασμό μιας esoteric language, στον οποίο οι κανόνες του προγραμματισμού μεταφέρονται στον φυσικό κόσμο.
Αυτό ακριβώς είναι που την κάνει ενδιαφέρουσα.
Η efghij παίρνει μια από τις πιο αφηρημένες ανθρώπινες δραστηριότητες —τον προγραμματισμό— και τη μετατρέπει σε κάτι σχεδόν θεατρικό. Οι μεταβλητές γίνονται πιρούνια, οι πράξεις συρραπτικά, οι βρόχοι μανταλάκια και η εντολή επιστροφής ένα ρολό χαρτιού υγείας.
Δεν πρόκειται επομένως τόσο για μια «παράξενη μαθηματική γλώσσα», όσο για ένα ευφυές παιχνίδι πάνω στις έννοιες της σύνταξης, της σημασιολογίας και της αναπαράστασης στον προγραμματισμό.
Και ίσως εκεί κρύβεται το καλύτερο αστείο της efghij:
στις περισσότερες γλώσσες προγραμματισμού μιλάμε μεταφορικά για «αντικείμενα».
Στην efghij, τα αντικείμενα βρίσκονται πραγματικά πάνω στο τραπέζι.

Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου