Περίληψη
Η λέξη «παράδειγμα» χρησιμοποιείται στην Επιστήμη Υπολογιστών για να δηλώσει μία οικογένεια συμβολισμών με κοινό τρόπο περιγραφής υλοποιήσεων λογισμικού. Λόγω του ότι κάθε «παράδειγμα» ταιριάζει απόλυτα για την επίλυση ορισμένων μόνο προβλημάτων, ιδανικά η υλοποίηση ενός μεγάλου συστήματος θα έπρεπε να επιμερίζεται σε υποσυστήματα υλοποιημένα στο πιο ταιριαστό «παράδειγμα». Ο πολυπαραδειγματικός προγραμματισμός επιτρέπει στον προγραμματιστή την υλοποίηση ενός συστήματος με τη χρήση διαφορετικών «παραδειγμάτων». Η χρήση τεχνικών πολυπαραδειγματικού προγραμματισμού μπορεί να ελαττώσει το κόστος υλοποίησης και να οδηγήσει σε πιο αξιόπιστες και αποδοτικές εφαρμογές.Οι δυσκολίες του πολυπαραδειγματικού προγραμματισμού μπορούν να διακριθούν ανάμεσα στον προγραμματισμό εφαρμογών σε πολλαπλά παραδείγματα, το σχεδιασμό και την υλοποίηση ενός περιβάλλοντος πολυπαραδειγματικού προγραμματισμού και τη γεννήτρια για την υποστήριξη της δημιουργίας ενός τέτοιου περιβάλλοντος.Προτείνουμε τη χρήση αν ...
Η λέξη «παράδειγμα» χρησιμοποιείται στην Επιστήμη Υπολογιστών για να δηλώσει μία οικογένεια συμβολισμών με κοινό τρόπο περιγραφής υλοποιήσεων λογισμικού. Λόγω του ότι κάθε «παράδειγμα» ταιριάζει απόλυτα για την επίλυση ορισμένων μόνο προβλημάτων, ιδανικά η υλοποίηση ενός μεγάλου συστήματος θα έπρεπε να επιμερίζεται σε υποσυστήματα υλοποιημένα στο πιο ταιριαστό «παράδειγμα». Ο πολυπαραδειγματικός προγραμματισμός επιτρέπει στον προγραμματιστή την υλοποίηση ενός συστήματος με τη χρήση διαφορετικών «παραδειγμάτων». Η χρήση τεχνικών πολυπαραδειγματικού προγραμματισμού μπορεί να ελαττώσει το κόστος υλοποίησης και να οδηγήσει σε πιο αξιόπιστες και αποδοτικές εφαρμογές.Οι δυσκολίες του πολυπαραδειγματικού προγραμματισμού μπορούν να διακριθούν ανάμεσα στον προγραμματισμό εφαρμογών σε πολλαπλά παραδείγματα, το σχεδιασμό και την υλοποίηση ενός περιβάλλοντος πολυπαραδειγματικού προγραμματισμού και τη γεννήτρια για την υποστήριξη της δημιουργίας ενός τέτοιου περιβάλλοντος.Προτείνουμε τη χρήση αντικειμενοστρεφών αρχών σχεδιασμού για την απομόνωση των διαφορετικών «παραδειγμάτων» μέσα σε πολυπαραδειγματικές εφαρμογές και για την «αφαίρεση» κοινών χαρακτηριστικών ανάμεσα στα «παραδείγματα» αυτά. Οι τεχνικές αυτές μπορούν να χρησιμοποιηθούν για το σχεδιασμό μιας γεννήτριας για την υποστήριξη της δημιουργίας ενός περιβάλλοντος πολυπαραδειγματικού προγραμματισμού και την υλοποίηση ενός περιβάλλοντος που να υποστηρίζει προγραμματισμό σε πολλαπλά «παραδείγματα». Για να αποδείξουμε την αξία της προτεινόμενης μεθόδου περιγράφουμε το σχεδιασμό και υλοποίηση τριών προτύπων συστημάτων που αντιμετωπίζουν τις τρεις περιοχές δυσκολίας.Η εφαρμογή επίλυσης ολοκληρωμάτων είναι μια πολυπαραδειγματική εφαρμογή που επιλύει ολοκληρώματα με συμβολικό και αριθμητικό τρόπο. Η συμβολική επίλυση βασίζεται στο μηχανισμό οπισθοδρομικής διάκρισης (backtracking resolution) που υποστηρίζεται από υποσύστημα λογικού προγραμματισμού, η αριθμητική επίλυση βασίζεται σε λίστες απείρου μήκους υλοποιημένες σε υποσύστημα συναρτησιακού προγραμματισμού, η λεκτική ανάλυση χρησιμοποιεί το «παράδειγμα» των κανονικών εκφράσεων (regular expressions) και η συντακτική ανάλυση το «παράδειγμα» των γραμματικών BNF. Επιπλέον η απλοποίηση των συμβολικών εκφράσεων υλοποιείται σε ένα σύστημα επαναγραφής όρων (term rewrite system) και η εμφάνιση γραφικών παραστάσεων με την απευθείας σύνδεση με εργαλεία του συστήματος Unix.Η υλοποίηση της εφαρμογής επίλυσης ολοκληρωμάτων έγινε στο πολυπαραδειγματικό περιβάλλον προγραμματισμού Blueprint το οποίο αποτελεί ένα πρότυπο περιβάλλον υποστήριξης πολυπαραδειγματικού προγραμματισμού σε έξι διαφορετικά «παραδείγματα» σχεδιασμένο και υλοποιημένο με βάση τις αντικειμενοστρεφείς αρχές που αναφέραμε. Χρησιμοποιήσαμε πολλές διαφορετικές τεχνικές υλοποίησης για να αποδείξουμε το ευρύ πεδίο εφαρμογής των μεθόδων μας. Ορισμένα από τα «παραδείγματα» έχουν υλοποιηθεί ως μεταγλωττιστές (χρησιμοποιώντας όπου ήταν δυνατό υπάρχουσες υλοποιήσεις), και άλλα ως διερμηνευτές.Τέλος η υλοποίηση του περιβάλλοντος Blueprint έγινε με τη γεννήτρια για πολυπαραδειγματικά περιβάλλοντα MPSS. Η γεννήτρια αυτή επιτρέπει την περιγραφή των «παραδειγμάτων» ως κλάσεις αντικειμένων με τη χρήση αρχείων περιγραφής «παραδειγμάτων». Επιπλέον παρέχει ένα πολυπαραδειγματικό συνδετικό εκδότη (multiparadigm link editor) και κατάλληλα εργαλεία για την ενοποίηση υπαρχόντων μεταγλωττιστών σε περιβάλλοντα πολυπαραδειγματικού προγραμματισμού.
περισσότερα
Περίληψη σε άλλη γλώσσα
The word paradigm, is used in computer science to talk about a family of notations, that share a common way for describing program implementations. Since each paradigm is well suited for solving only a range of problems, ideally a large system should be subdivided into components, each of which should be implemented in the most appropriate paradigm. Multiparadigm programming, allows the programmer to implement a system, in a number of different paradigms. The use of multiparadigm programming techniques, could lower implementation costs, and result in more reliable and efficient applications.The difficulties that arise with multiparadigm programming can be separated into the areas of application development in multiple paradigms, design and implementation of multiparadigm environment, and generators for creating such environments.We propose the use of object-oriented design techniques as a method for encapsulating programming paradigms within multiparadigm applications, and for abstr ...
The word paradigm, is used in computer science to talk about a family of notations, that share a common way for describing program implementations. Since each paradigm is well suited for solving only a range of problems, ideally a large system should be subdivided into components, each of which should be implemented in the most appropriate paradigm. Multiparadigm programming, allows the programmer to implement a system, in a number of different paradigms. The use of multiparadigm programming techniques, could lower implementation costs, and result in more reliable and efficient applications.The difficulties that arise with multiparadigm programming can be separated into the areas of application development in multiple paradigms, design and implementation of multiparadigm environment, and generators for creating such environments.We propose the use of object-oriented design techniques as a method for encapsulating programming paradigms within multiparadigm applications, and for abstracting common characteristics across paradigms. These techniques can be used to design practical multiparadigm environment generators, and implement multiparadigm programming environments supporting a wide variety of paradigms.In order to demonstrate the validity of our approach, we describe the design and implementation of three prototypes: one in each problem area.The integrator is a multiparadigm application dealing with the numeric and symbolic evaluation of integrals. The symbolic evaluation is based on the backtracking resolution mechanism offered by the logic programming paradigm, and the numeric evaluation, on the infinite streams implemented in the functional paradigm. Additionally, lexical analysis of the input expressions is described using regular expressions, and the expression grammar is described using a BNF syntax. Finally, expression simplification uses a term rewrite system, and graphing of functions is done by directly interacting with Unix tools.Integrator is implemented in the blueprint multiparadigm programming environment, a prototype implementation of the six paradigms based on our object-oriented approach. Many different implementation techniques have been applied in order to demonstrate the wide applicability of our approach. Some of the paradigms are implemented as compilers (using existing implementations where possible), and others are implemented as interpreters.Finally, the implementation of blueprint is based on the MPSS multiparadigm environment generator. This, allows the description of paradigms as object classes using paradigm description files. Additionally, it provides a multiparadigm link editor, and support for incorporating existing compilers into multiparadigm programming environments.
περισσότερα