Παρασκευή 20 Μαρτίου 2009

Γλωσσοκεντρικός Προγραμματισμός (Language Oriented Programming): Η Πληροφορική ως Τέχνη του Ψηφιακού Λόγου

Δημοσιεύθηκε στο 1ο τεύχος του ενημερωτικού δελτίου
της Ένωσης Πληροφορικών Ελλάδας "Ο Πληροφορικός"


Ο όρος γλωσσοκεντρικός προγραμματισμός χρησιμοποιήθηκε για πρώτη φορά από τον Martin Ward το 1994[1] προκειμένου να χαρακτηρίσει μια προσέγγιση στην ανάπτυξη πολύπλοκων συστημάτων, η οποία ξεκινά από το ενδιάμεσο επίπεδο σχεδιασμού μιας γλώσσας ειδικού σκοπού (domain specific language) Γ και προχωρεί σε δύο παράλληλες κατευθύνσεις:
  • Την υλοποίηση της Γ μέσω μιας άλλης κατάλληλης γλώσσας γενικού σκοπού
  • Την υλοποίηση του (πολύπλοκου) συστήματος στη Γ
Με άλλους όρους, ο γλωσσοκεντρικός προγραμματισμός, βασίζεται στη θεώρηση ότι για να λυθεί υπολογιστικά ένα πολύπλοκο πρόβλημα, είναι συνήθως ευκολότερο να δημιουργηθεί η ειδική γλώσσα Γ (αν δεν υπάρχει ήδη) η οποία θα βασίζεται στις έννοιες πεδίου (domain concepts) που ταιριάζουν στη φύση του προβλήματος και με βάση την Γ να επιτευχθεί η επίλυση του προβλήματος. Η Γ ουσιαστικά τυποποιεί και οργανώνει την προϋπάρχουσα γνώση σε σχέση με το πεδίο του προβλήματος και προσφέρει ένα υψηλότερου επιπέδου εργαλείο βάσει του οποίου διευκολύνεται η εύρεση της (υπολογιστικής) λύσης, η οποία με τη σειρά της κωδικοποιείται σε “πρόγραμμα” στην ειδική γλώσσα που δημιουργήθηκε (ή επιλέχθηκε).

Η ιδέα δεν είναι καινούργια. Η δημιουργία νέων γλωσσών, κυρίως γενικού σκοπού, αποτελεί την καρδιά της δραστηριότητας των Πληροφορικών εδώ και δεκαετίες. Γλώσσες γενικού σκοπού έχει επικρατήσει να ονομάζουμε εκείνες οι οποίες αναφέρονται στο πεδίο του προγραμματισμού υπολογιστών. Ωστόσο, από πολύ νωρίς, η δημιουργία γλωσσών ειδικού σκοπού, πέραν του πεδίου του προγραμματισμού υπολογιστών, αποτέλεσε μια προσφιλή και ιδιαίτερα καρποφόρα δραστηριότητα των Πληροφορικών. Μια από τις δημοφιλέστερες και πληρέστερες είναι αυτή που ξεκίνησε να δημιουργεί στα τέλη της δεκαετίας του '70 ο Donald Knuth με την ονομασία TeX και η οποία έχει σήμερα διεθνή αποδοχή ως η πλέον αποτελεσματική για τη δημιουργία σοβαρών επιστημονικών βιβλίων και άρθρων. Είναι μια γλώσσα που εγκαινίασε το πεδίο της ψηφιακής τυπογραφίας και κατέστησε εφικτή τη δημιουργία καλαίσθητων επιστημονικών κειμένων μέσω υπολογιστή. Η ιδέα για τη δημιουργία της προέκυψε από την ανάγκη του Knuth να εξασφαλίσει την αισθητική ποιότητα του μνημειώδους έργου του “The Art of Computer Programming”[2]. Τελικά, όχι μόνο κατάφερε να δώσει στους αναγνώστες του βιβλία υψηλής αισθητικής, αλλά και να εφοδιάσει τους ομοτέχνους του επιστήμονες όλων των ειδικοτήτων με ένα ισχυρό εργαλείο, ένα “ψηφιακό τυπογραφείο”, που τους διευκολύνει στη δημοσιοποίηση των αποτελεσμάτων της επιστημονικής τους έρευνας. Αντίστοιχη είναι η ιστορία των “ψηφιακών γραφομηχανών” ή text editors όπως καθιερώθηκε να ονομάζονται, των “ψηφιακών λογιστικών βιβλίων” - spreadsheets κ.λ.π.

Παρόμοιες επιτυχημένες περιπτώσεις υπάρχουν πολλές και νομίζω ότι είναι οικείες σε κάθε Πληροφορικό. Ήταν, λοιπόν, καιρός, η “λογική της Πληροφορικής” ως “τέχνης του ψηφιακού λόγου” να γίνει περισσότερο εμφανής, ώστε να μπορέσουμε να εστιάσουμε καλύτερα στον τρόπο με τον οποίο μπορούμε να προσφέρουμε τις υπηρεσίες μας στο κοινωνικό σύνολο: Η γλωσσοκεντρικότητα μας δίνει την ευκαιρία να αναδείξουμε την αληθινή φύση της εργασίας μας που δεν είναι άλλη από την συστηματοποίηση της συσσωρευμένης γνώσης ενός πεδίου με τη μορφή “υπολογιστικής γλώσσας”, ώστε να καταστεί δυνατή η εργασία των ειδικών του πεδίου (domain experts) με την χρήση της ψηφιακής τεχνολογίας. Η έννοια της γλώσσας εδώ δεν θα πρέπει να περιοριστεί στον παραδοσιακό “μαθηματικό” ορισμό του ζεύγους αλφάβητο-λέξεις, αλλά να νοηθεί ως ένα σύστημα συμβόλων (οπτικών, ηχητικών ...) που επιτρέπει τη δημιουργία “λογικών αναπαραστάσεων”, δηλαδή των δομών εκείνων που συγκροτούν την “εκφορά” του λόγου. Χωρίς ποτέ να ξεχνούμε ότι η ερμηνεία και η πρωτογενής δημιουργία των λογικών αυτών αναπαραστάσεων παραμένει καθαρά ανθρωπολογικό ζήτημα, οφείλουμε να επισημάνουμε το γεγονός ότι η ύπαρξη μίας τουλάχιστον “υπολογιστικής γλώσσας”, κατάλληλα σχεδιασμένης και υλοποιημένης, είναι η αναγκαία προϋπόθεση ώστε ένα πεδίο ανθρώπινης δραστηριότητας να μπει στην “ψηφιακή εποχή”. Έργο του Πληροφορικού είναι να βρει, αν είναι εφικτό, και να δώσει υπόσταση σε αυτή τη γλώσσα ή τις γλώσσες κατανοώντας και διαχωρίζοντας την υπολογιστική από την καθαρά δημιουργική-ανθρωπολογική διάσταση του εκάστοτε πεδίου. Το έργο αυτό έχει έντονα στοιχεία πρωτογενούς δημιουργίας και τοποθετεί τον Πληροφορικό ισότιμα πλάι στους άλλους δημιουργούς (επιστήμονες, μηχανικούς, καλλιτέχνες, εργάτες-μάστορες) από τους οποίους εμπνέεται και προς τους οποίους απευθύνει τα δημιουργήματά του. Αυτή η εγγενής εξωστρέφεια του έργου του αναδεικνύει και τη βαθιά κοινωνική διάσταση της υπόστασής του.

Δεν μπορεί, λοιπόν, κανείς παρά συμμεριστεί τον ενθουσιασμό των συναδέλφων ανά τον κόσμο που εργάζονται πάνω στις ιδέες του γλωσσοκεντρικού προγραμματισμού για να αναπτύξουν μεθοδολογίες και εργαλεία που θα καθιστούν εφικτή τη δημιουργία σύγχρονων πληροφοριακών συστημάτων με τη ρητή παραδοχή της γλωσσοκεντρικότητας. Η πίστη τους ότι αυτό είναι το “νέο παράδειγμα”, που θα αντικαταστήσει το κυρίαρχο οντοκεντρικό τα επόμενα χρόνια, είναι βάσιμη. Διότι, αυτό ήταν πάντα το “παράδειγμα της Πληροφορικής”, στενά συνυφασμένο με τη θεμελιώδη φύση της ως τέχνης του ψηφιακού λόγου.

Αναφορές

[1] M. Ward. Language Oriented Programming. Software - Concepts and Tools, 15, 147-161, 1994, http://www.dur.ac.uk/martin.ward/martin/papers/middle-out-t.pdf

[2] D. Knuth. Digital Typography. Commemorative lecture for the Kyoto Prize, Kyoto, 1996. Περιλαμβάνεται στο πρώτο κεφάλαιο του βιβλίου Digital Typography.

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