A Dualities-Consolidating Framework to Support Systematic Programming Language Design

DSpace Repositorium (Manakin basiert)


Dateien:

Zitierfähiger Link (URI): http://hdl.handle.net/10900/132092
http://nbn-resolving.de/urn:nbn:de:bsz:21-dspace-1320929
http://dx.doi.org/10.15496/publikation-73448
Dokumentart: Dissertation
Erscheinungsdatum: 2022-09-27
Sprache: Englisch
Fakultät: 7 Mathematisch-Naturwissenschaftliche Fakultät
Fachbereich: Informatik
Gutachter: Ostermann, Klaus (Prof. Dr.)
Tag der mündl. Prüfung: 2021-07-13
DDC-Klassifikation: 004 - Informatik
Lizenz: http://tobias-lib.uni-tuebingen.de/doku/lic_mit_pod.php?la=de http://tobias-lib.uni-tuebingen.de/doku/lic_mit_pod.php?la=en
Gedruckte Kopie bestellen: Print-on-Demand
Zur Langanzeige

Inhaltszusammenfassung:

In der theoretischen Betrachtung von Programmiersprachen wird Dualität als zunehmend wichtig für die Verbesserung der Ökonomie betrachtet, da diese ermöglicht, die Theorie-Entwicklung für eines von zwei dualen Konzepten "umsonst" zu erhalten. Zwei vorherrschende Dualitäten sind die Extensibilitäts-Dualität, die im Zusammenhang mit dem Expression Problem steht, und die De Morgan-Dualität, die im Zusammenhang mit Auswertungsstrategien und Kontrollfluss steht; zum Beispiel bietet eine Sprache, die symmetrisch in Bezug auf die Extensibilitäts-Dualität ist, sowohl ein Konstrukt, das die einfache Hinzufügung von neuen Varianten ermöglicht, ähnlich dazu wie in gewissen Objekt-Orientierten Sprachen Klassen ein Interface implementieren, als auch ein duales Konstrukt, das die einfache Hinzufügung von neuen Operationen ermöglicht, wie in der Funktionalen Programmierung mit algebraischen Datentypen. Dieses theoretische Wissen muss wohl allerdings dem Praktiker noch besser zugänglich gemacht werden. Insbesondere profitiert die Entwicklung von Programmiersprachen noch nicht wirklich auf eine systematische Weise davon. Als Schritt auf dem Weg dahin, diese Situation zu verbessern, präsentiert diese Arbeit, auf diesen bisherigen Resultaten aufbauend, ein grundlegendes, im konzeptuellen Sinne recht ökonomisches System, in dem die Extensibilitäts-Dualität und die De Morgan-Dualität miteinander vereinigt sind. Insbesondere ist dieses System inhärent höchst symmetrisch in Bezug auf beide Dualitäten und deren Vereinigung ermöglicht auf recht natürliche Weise die Essenz der Extensibilitäts-Dualität herauszuarbeiten, was die Ökonomie auf der Meta-Ebene weiter verbessert. Wie dargestellt werden wird, kann dieses System als Framework dienen, in dem sich verschiedene Sprach-Features aus in der Praxis relevanten Programmiersprachen darstellen lassen (durch lokale syntaktische Abstraktionen, auch bekannt als Macros) und in dem man diese vergleichen kann, wie etwa algebraische Datentypen und Funktionstypen, wie man sie aus der Funktionalen Programmierung kennt, Klassen und Objekte, sowie Exception-Handling, in Verbindung mit den Auswertungsstrategien die von den jeweiligen Sprachen verwendet werden. Dies soll dem Zweck dienen, eine systematische Analyse von Programmiersprachen-Konzepten zu ermöglichen, welche bei der Entwicklung von kompakten Sprachen helfen kann, die symmetrisch in Bezug auf eine oder beide der erwähnten Dualitäten sind. Für die kurzfristigere Perspektive bietet es das System auch als Grundstein für die systematische Entwicklung von Tools an, welche automatisch Programme in verschiedenen Sprache semantisch vergleichen (und ineinander umwandeln), indem sie die Ergebnisse von deren Einbettung in das Framework analysieren.

Abstract:

In the theory of programming languages, duality is increasingly recognized as being important for improving economy, offering the theoretical development for one of two dual concepts "for free". Two prevalent dualities are the extensibility duality, related to the Expression Problem, and the De Morgan duality, related to evaluation strategies and control flow; for instance, a language which is symmetric with respect to the extensibility duality has both a facility which allows for easy extension with new variants, similar to how classes implement an interface in certain object-oriented languages, and a dual facility which allows for easy extension with new operations, as in functional programming with algebraic data types. However, this theoretical knowledge arguably has yet to be made more accessible to the practician. In particular, the design of programming languages does not yet really benefit from it in a systematic way. As a step to improve this situation, building on these prior results, the present work presents a prototype of a, in the conceptual sense rather economical, foundational system, in which the extensibility duality and the De Morgan duality are consolidated. In particular, the system is inherently highly symmetric with respect to both dualities and their consolidation quite naturally allows to carve out the essence of the extensibility duality, thereby further optimizing the meta-level economy. As will be demonstrated, this system can serve as a framework in which various language features known from practical programming languages can be recovered (by local syntactic abstractions, a.k.a. macros) and systematically compared, including algebraic data types and function types as known from functional programming, classes and objects, and exception handling, in combination with the evaluation strategies employed by the respective languages. This is intended to facilitate a systematic analysis of programming language concepts which may aid in the design of parsimonious languages which are symmetric with respect to one or both of the mentioned dualities. For the more short-term perspective, the system may also serve as a cornerstone for the systematic development of tools which automatically semantically compare (and convert between) programs in different languages by means of analyzing the results of embedding them into the framework.

Das Dokument erscheint in: