Generika für Go – die Sprache soll 2021 parametrisierte Typen erhalten

Parametrisierte Typen (Generics) fehlten bislang bei der Programmiersprache – ab Version 1.17 (Relase: August 2021) soll Go generisches Programmieren erlauben.

In Pocket speichern vorlesen Druckansicht 7 Kommentare lesen
Generika für Go – die Sprache soll ab 2021 parametrisierte Typen einführen
Lesezeit: 3 Min.
Von
  • Silke Hahn

Das Team hinter der Programmiersprache Go hat die Einführung von parametrisierten Typen (Generics) angekündigt – dabei handelt es sich offenbar um Funktionen und Typen, die zunächst undefiniert sind und erst nach der Implementierung Parameter annehmen. Generics sind wohl schon seit längerem ein Wunsch der Go-Community, ihr bisheriges Fehlen galt als größeres Manko der Programmiersprache.

Entwickler des Go-Projekts wollen nun offenbar Abhilfe schaffen und haben einen Designentwurf für Typparameter vorgelegt. Voraussichtlich mit dem Release von Version 1.17, das für August 2021 angesetzt ist, plant das Go-Projekt damit die Einführung zusätzlicher Variablen für Typen.

Generisches Programmieren ist aus dem Java-Ökosystem bekannt, wo seit Version 1.5 parametrisierte Typen möglich sind. Es soll die Darstellung von Strukturen und Funktionen in "generischer Form" erlauben, wobei konkrete Typen mit einer Art Platzhalter zunächst ausgeklammert bleiben. Diese werden erst bei der Verwendung von Klassen, Schnittstellen und Methoden durch konkrete Parameter ersetzt, also eindeutig parametrisiert. Die Idee dahinter ist offenbar auch bei Go, zusätzliche Typ-Variablen einzuführen.

Die neue Herangehensweise soll Entwicklern einige Programmieraufgaben massiv erleichtern – in der Community kursierten jedoch offenbar auch Bedenken, dass die Sprache dadurch komplizierter würde. In dem nun vorgelegten Entwurf für die neuen Typparamenter bieten die Entwickler des Go-Projekts eine einschneidende Lösung: Das bisherige Konzept der Contracts werde fallen gelassen zugunsten der parallel bereits existierenden Interface Types. Diese "Schnittstellentypen" sollen laut Entwurf dazu dienen, die neuen Typparamenter mit Bedingungen zu versehen. Zu diesem Zweck sollen Interface Types offenbar künftig ausnahmsweise auch Typenlisten enthalten dürfen – unter der Bedingung, dass sie mit diesen Listen ausschließlich Einschränkungen für Typparameter vornehmen.

Im Go Playground ist offenbar ein Übersetzungswerkzeug (Translation Tool) verfügbar, mit dem sich das neue Design mit den parametrisierten Typen ausprobieren lässt. Entwickler sollen so im Vorfeld ausloten können, ob für ihre Projekte der "Einsatz von Generika" im Code Sinn ergibt oder nicht.

Derzeit befindet sich die Einbettung der Generics noch im Anfangsstadium, heißt es im Blogeintrag zur Veröffentlichung des aktualisierten Designentwurfs. Die Entwickler haben darin eine direkte Compiler-Implementierung skizziert und einen Typ-Prüfer geschrieben, der Go-Code parsen und Fehlermeldungen auswerfen kann. Dieses Programm soll bereits parametrisierte Typen verwenden können, wie sie der Entwurf beschreibt. Der nächste logische Schritt zur Einführung der Generics in Go wäre ein formaler Vorschlag zur Sprachänderung.

Der Veröffentlichungszeitplan gilt als ambitioniert. Somit kann das Go-Projekt derzeit noch keine Gewähr bieten, dass die Generics auch tatsächlich im August 2021 Produktionsreife erlangen. Weitere Hinweise lassen sich dem Blogeintrag im Go-Projekt entnehmen. Die Entwickler haben einen Installationsguide veröffentlicht, mit dem Interessierte das experimentelle Tool wohl nachbauen können.

(sih)