2 Punkte von GN⁺ 2024-11-02 | Noch keine Kommentare. | Auf WhatsApp teilen
  • Hazel ist eine webbasierte Live-Umgebung für funktionale Programmierung, die Typed Holes in den Mittelpunkt stellt und es ermöglicht, auch unvollständige Programme typzuprüfen, zu bearbeiten und auszuführen
  • Unvollständige Zustände wie Leerstellen, Typfehler oder Merge-Konflikte werden als Holes modelliert; zentral ist dabei, dass der Editor weniger Bereiche verliert, in denen die Semantik erhalten bleibt
  • Unvollständige Programme, die sich in Hazel erstellen lassen, sind statisch und dynamisch definiert und können unvollständige Typen sowie unvollständige Ausführungsergebnisse haben
  • Ziel der Implementierung ist eine funktionale Sprache der Elm/ML-Familie; genutzt wird sie als Grundlage für Programmierlehre, kollaboratives Editieren, das Lernen von Beweisen und Forschung zu AI-Codevervollständigung
  • Das Open-Source-Forschungsprojekt wird vom Future of Programming Lab der University of Michigan geleitet; ein Web-Build zum Ausprobieren und der Quellcode auf GitHub sind öffentlich verfügbar

Hazel: die Kernidee

  • Hazel ist eine Live-Umgebung für funktionale Programmierung, aufgebaut rund um Typed Holes
  • Auch mit unvollständigen Programmen kann weitergearbeitet werden
    • Typprüfung
    • Bearbeitung
    • Ausführung
  • Ziel ist eine Umgebung, die auch dann sinnvolles Feedback liefert, wenn der Code während des Editierens in einem fehlerhaften Zustand ist

Umgang mit unvollständigen Programmen

  • Im normalen Programmierprozess treten häufig Zustände auf, in denen der Programmtext formal unvollständig ist
    • Leerstellen
    • Typfehler
    • Merge-Konflikte
  • Herkömmliche Sprachdefinitionen geben solchen Strukturen keine formale Semantik, weshalb selbst das Verhalten bereits fertiger Teilstücke nur schwer als Live-Feedback behandelt werden kann
  • Editoren und Werkzeuge sind dadurch gezwungen, sich auf komplexe Heuristiken zu stützen, um Codevervollständigung, Typprüfung und Code-Navigation ohne Unterbrechung anzubieten
  • Hazel modelliert unvollständige Programme als Programme mit Holes
    • Holes stehen für fehlende Programmteile
    • Sie wirken wie eine Membran, die fehlerhafte Bereiche oder Konfliktbereiche in kollaborativen Umgebungen umschließt
  • Dieser Ansatz basiert auf contextual modal type theory und gradual type theory

Hazel-Umgebung und Ausführungsmodell

  • Hazel wird als webbasierte Programmierumgebung für eine funktionale Sprache implementiert, die Elm/ML ähnelt
  • Alle unvollständigen Programme, die sich mit Hazels Sprache für Editieraktionen erzeugen lassen, sind statisch und dynamisch definiert
    • Sie können unvollständige Typen haben
    • Bei der Ausführung können sie unvollständige Ergebnisse erzeugen
  • Dank dieser Eigenschaften dient Hazel als Plattform für zukünftige Programmierumgebungen und für Forschung zur Programmierlehre

Forschungsvision und Materialien

Aktuelle Forschung und Publikationen

Nutzung und Mitwirkung

Noch keine Kommentare.

Noch keine Kommentare.