Programming paradigms as object classes
Authors: Σπινέλλης Διομήδης 
Published: March 2022

Η λέξη «παράδειγμα» χρησιμοποιείται στην Επιστήμη Υπολογιστών για να δηλώσει μία οικογένεια συμβολισμών με κοινό τρόπο περιγραφής υλοποιήσεων λογισμικού. Λόγω του ότι κάθε «παράδειγμα» ταιριάζει απόλυτα για την επίλυση ορισμένων μόνο προβλημάτων, ιδανικά η υλοποίηση ενός μεγάλου συστήματος θα έπρεπε να επιμερίζεται σε υποσυστήματα υλοποιημένα στο πιο ταιριαστό «παράδειγμα». Ο πολυπαραδειγματικός προγραμματισμός επιτρέπει στον προγραμματιστή την υλοποίηση ενός συστήματος με τη χρήση διαφορετικών «παραδειγμάτων». Η χρήση τεχνικών πολυπαραδειγματικού προγραμματισμού μπορεί να ελαττώσει το κόστος υλοποίησης και να οδηγήσει σε πιο αξιόπιστες και αποδοτικές εφαρμογές.Οι δυσκολίες του πολυπαραδειγματικού προγραμματισμού μπορούν να διακριθούν ανάμεσα στον προγραμματισμό εφαρμογών σε πολλαπλά παραδείγματα, το σχεδιασμό και την υλοποίηση ενός περιβάλλοντος πολυπαραδειγματικού προγραμματισμού και τη γεννήτρια για την υποστήριξη της δημιουργίας ενός τέτοιου περιβάλλοντος.Προτείνουμε τη χρήση αντικειμενοστρεφών αρχών σχεδιασμού για την απομόνωση των διαφορετικών «παραδειγμάτων» μέσα σε πολυπαραδειγματικές εφαρμογές και για την «αφαίρεση» κοινών χαρακτηριστικών ανάμεσα στα «παραδείγματα» αυτά. Οι τεχνικές αυτές μπορούν να χρησιμοποιηθούν για το σχεδιασμό μιας γεννήτριας για την υποστήριξη της δημιουργίας ενός περιβάλλοντος πολυπαραδειγματικού προγραμματισμού και την υλοποίηση ενός περιβάλλοντος που να υποστηρίζει προγραμματισμό σε πολλαπλά «παραδείγματα». Για να αποδείξουμε την αξία της προτεινόμενης μεθόδου περιγράφουμε το σχεδιασμό και υλοποίηση τριών προτύπων συστημάτων που αντιμετωπίζουν τις τρεις περιοχές δυσκολίας.Η εφαρμογή επίλυσης ολοκληρωμάτων είναι μια πολυπαραδειγματική εφαρμογή που επιλύει ολοκληρώματα με συμβολικό και αριθμητικό τρόπο. Η συμβολική επίλυση βασίζεται στο μηχανισμό οπισθοδρομικής διάκρισης (backtracking resolution) που υποστηρίζεται από υποσύστημα λογικού προγραμματισμού, η αριθμητική επίλυση βασίζεται σε λίστες απείρου μήκους υλοποιημένες σε υποσύστημα συναρτησιακού προγραμματισμού, η λεκτική ανάλυση χρησιμοποιεί το «παράδειγμα» των κανονικών εκφράσεων (regular expressions) και η συντακτική ανάλυση το «παράδειγμα» των γραμματικών BNF. Επιπλέον η απλοποίηση των συμβολικών εκφράσεων υλοποιείται σε ένα σύστημα επαναγραφής όρων (term rewrite system) και η εμφάνιση γραφικών παραστάσεων με την απευθείας σύνδεση με εργαλεία του συστήματος Unix.Η υλοποίηση της εφαρμογής επίλυσης ολοκληρωμάτων έγινε στο πολυπαραδειγματικό περιβάλλον προγραμματισμού Blueprint το οποίο αποτελεί ένα πρότυπο περιβάλλον υποστήριξης πολυπαραδειγματικού προγραμματισμού σε έξι διαφορετικά «παραδείγματα» σχεδιασμένο και υλοποιημένο με βάση τις αντικειμενοστρεφείς αρχές που αναφέραμε. Χρησιμοποιήσαμε πολλές διαφορετικές τεχνικές υλοποίησης για να αποδείξουμε το ευρύ πεδίο εφαρμογής των μεθόδων μας. Ορισμένα από τα «παραδείγματα» έχουν υλοποιηθεί ως μεταγλωττιστές (χρησιμοποιώντας όπου ήταν δυνατό υπάρχουσες υλοποιήσεις), και άλλα ως διερμηνευτές.Τέλος η υλοποίηση του περιβάλλοντος Blueprint έγινε με τη γεννήτρια για πολυπαραδειγματικά περιβάλλοντα MPSS. Η γεννήτρια αυτή επιτρέπει την περιγραφή των «παραδειγμάτων» ως κλάσεις αντικειμένων με τη χρήση αρχείων περιγραφής «παραδειγμάτων». Επιπλέον παρέχει ένα πολυπαραδειγματικό συνδετικό εκδότη (multiparadigm link editor) και κατάλληλα εργαλεία για την ενοποίηση υπαρχόντων μεταγλωττιστών σε περιβάλλοντα πολυπαραδειγματικού προγραμματισμού.