Detailseite
Projekt Druckansicht

Theoretische Grundlagen und praktische Anwendungen von Go mit Generics

Fachliche Zuordnung Softwaretechnik und Programmiersprachen
Förderung Förderung seit 2025
Projektkennung Deutsche Forschungsgemeinschaft (DFG) - Projektnummer 550537604
 
Ausdrucksstarke Programmiersprachen sind wichtig, um hochwertige Software in kurzer Zeit zu erstellen. Ein wichtiges Feature ausdrucksstarker Sprachen sind Generics. Diese ermöglichen, denselben Code mit verschiedenen Typen zu verwenden und garantieren zur Kompilierzeit, dass die konkret verwendeten Typen alle Anforderungen des Codes erfüllen. Dieses Projekt untersucht die Erweiterung der Programmiersprache Go um Generics. Die Sprache Go ist in der Industrie weit verbreitet, besaß aber bis vor kurzem keine Generics. Das Hinzufügung von Generics zu Go ist eine Herausforderung, weil es zu Interaktionen mit bestehenden Go-Funktionalitäten wie Methodenüberladung, Interface-Typen und strukturellem Subtyping kommt. Alle bestehenden Vorschläge und die neueste Go 1.20 Version, die Generics unterstützen, haben verschiedene Einschränkungen. Diese Einschränkungen verhindern zufriedenstellende Lösungen für wichtige Software-Design- und Architektur-Probleme. Unser Projektziel ist ein verbessertes und erweitertes Design, eine vollständige Formalisierung und die Implementierung eines Compilers für Generics in Go. Diese neue Version soll über eine solide theoretische Grundlage verfügen. Außerdem wird sie intuitive und typsichere Lösungen für Design- und Architekturprobleme ermöglichen, für die es in der aktuellen Version von Generics in Go keine gute Lösung gibt. Schließlich wird die neue Version eine mit Go 1.20 vergleichbare Performance liefern. Bei der Umsetzung kommen etablierte Techniken wie die dictionary-passing Translation zum Einsatz, um das Überladen von Methoden aufzulösen. Eine step-indexed logical relation stellt die Korrektheit der Übersetzung sicher. Die technische Herausforderung wird sein, diese Techniken an Go anzupassen, denn dort gibt es strukturelles Subtyping und Interfaces mit rekursiven Abhängigkeiten.
DFG-Verfahren Sachbeihilfen
 
 

Zusatzinformationen

Textvergrößerung und Kontrastanpassung