- Eine statisch typisierte kompilierte Sprache, die mit koreanischen Schlüsselwörtern geschrieben wird und über LLVM IR native Binärdateien erzeugt
- Bietet sowohl einen in Rust implementierten Compiler als auch einen Interpreter und unterstützt mit der
hgl-CLI Build-, Ausführungs-, REPL- und LSP-Funktionen
- Alle Schlüsselwörter sind auf Koreanisch, etwa
함수, 만약, 반복, 변수; auch Variablen- und Funktionsnamen können auf Koreanisch definiert werden
- Enthält praktische Funktionen wie Datei-I/O, JSON, HTTP, reguläre Ausdrücke, Datum/Uhrzeit und Systemaufrufe sowie 18 Beispiele
- Setzt die wissenschaftliche Struktur und kulturelle Verbreitung von Hangeul als Programmiersprache um und gilt als neuer Ansatz, Koreanischlernen und Programmieren zu verbinden
Überblick über die Sprache Han
- Han ist eine statisch typisierte kompilierte Sprache mit koreanischen Schlüsselwörtern, die über LLVM IR native Binärdateien erzeugt
- Enthält eine in Rust geschriebene Compiler-Toolchain und einen Tree-Walking-Interpreter
- Mit dem Befehl
hgl lassen sich der Interpreter starten, Builds ausführen, eine REPL nutzen und ein LSP-Server betreiben
- Alle Schlüsselwörter bestehen aus Hangeul, z. B.
함수, 만약, 반복, 변수, 출력
- Ziel ist es, durch die Umsetzung des wissenschaftlichen Schriftsystems von Hangeul in einer Programmiersprache sprachliche Schönheit mit technischer Präzision zu verbinden
Hauptfunktionen
- Unterstützung für koreanische Schlüsselwörter und Bezeichner: Variablennamen, Funktionsnamen, Struct-Namen usw. können auf Koreanisch geschrieben werden
- Statisches Typsystem: bietet fünf Grundtypen:
정수, 실수, 문자열, 불, 없음
- Compiler- und Interpreter-Modus: LLVM IR → clang → Binärerzeugung oder direkte Ausführung
- REPL und LSP-Server: Interaktive Ausführung und Code-Vervollständigung mit
hgl repl und hgl lsp
- Integrierte Funktionen
- Arrays, Structs, Closures, Pattern Matching, Ausnahmebehandlung, Generics
- Datei-I/O, JSON, HTTP, reguläre Ausdrücke, Datum/Uhrzeit, Systemaufrufe
- Format-Strings, Hashmaps, eingebaute mathematische Funktionen
- Enthält 18 Beispielprogramme: Hello World, HTTP-API-Aufrufe usw.
Installation und Ausführung
- Voraussetzungen: Rust (1.70+), clang
- Installationsschritte
- Eine VS Code-Erweiterung ist verfügbar: Syntax-Highlighting und LSP-Unterstützung
- CLI-Befehle
hgl interpret <file.hgl> — Interpreter ausführen
hgl build <file.hgl> — native Binärdatei kompilieren
hgl run <file.hgl> — nach dem Kompilieren direkt ausführen
hgl repl — interaktiver Modus
hgl lsp — LSP-Server starten
Aktueller Implementierungsstand
- Vollständig funktionierende Features
- Datentypen, Kontrollfluss, Funktionen, Strings, Arrays, Hashmaps, Structs, Fehlerbehandlung, Typprüfung
- JSON, HTTP, reguläre Ausdrücke, Datum/Uhrzeit, System, Datei-I/O, mathematische Funktionen, Module, Generics
- Teilweise implementierte Features
- Bei
hgl build ist die Codegenerierung für Closures sowie String- und Array-Methoden noch unvollständig
- Nicht implementierte Features
- Null-Sicherheit (kein
Option-Typ), asynchrone/parallele Verarbeitung, Garbage Collection, Tail-Recursion-Optimierung
Hangeul und Programmierung
- Hangeul ist ein wissenschaftliches Schriftsystem, das phonologische Strukturen visuell darstellt, geschaffen 1443 von König Sejong
- Han spiegelt diese strukturelle Klarheit von Hangeul in der Codesyntax wider
- Weltweit lernen mehr als 16 Millionen Menschen Koreanisch; Han bietet ein Mittel, Hangeul über das Programmieren zu lernen
- Beispiel-Schlüsselwörter
함수 (function), 만약 (if), 반복 (for), 반환 (return), 변수 (variable), 출력 (print) usw.
Design und Struktur
- Compiler-Pipeline auf Rust-Basis
- Lexer → Parser → AST → Interpreter / CodeGen → LLVM IR → clang → Binary
- Projektstruktur
src/ — Kerncode für Compiler und Interpreter
editors/vscode/ — VS Code-Erweiterung
- Enthält außerdem
examples/, spec/, tests/
- Gründe für die Designentscheidungen
- Vereinfachter Build durch textbasierte IR-Erzeugung statt der LLVM-C-API
- Der Interpreter ist auf schnelle Ausführung ausgelegt, der Compiler auf Performance
- Rusts Pattern Matching und Speichersicherheit eignen sich gut für die Sprachimplementierung
Tests und Lizenz
- Mit
cargo test werden 46 Tests ausgeführt (41 Unit-Tests, 5 Integrationstests)
- Veröffentlicht unter der MIT-Lizenz
Kulturelle Bedeutung
- Han ist eine experimentelle Sprache, die die Schönheit von Hangeul und die Präzision des Programmierens verbindet
- Sie bietet Koreanischlernenden und Entwicklern gleichermaßen einen neuen Ansatz, die Grenzen zwischen Sprache und Code aufzubrechen
12 Kommentare
Dank dessen habe ich nützliche Informationen erhalten. GeekNews, das die wichtigsten Neuigkeiten für uns auswählt, ist für mich eine tägliche Freude beim Vorbeischauen. Auch ich entwickle derzeit eine koreanischsprachige Programmiersprache und sehe es daher sehr positiv, dass solche Versuche weitergeführt werden.
Als jemand, der lange im Ausland gelebt und die Veränderungen in Korea beobachtet hat, fand ich es immer bedauerlich, wie übermäßig Englisch in den Alltag und in die gesamte Industrie eingedrungen ist. Der Pangyo-Jargon, schwer verständliche Apartment-Namen, missgestaltete Menüs wie MSGR und mit Englisch übersäte Schilder wirken auf mich, als würden sie die Eigenständigkeit unserer Sprache schwächen. Selbst wenn die Hürde durch frühen Englischunterricht gesunken ist, bleibt die Intuitivität der Muttersprache unersetzlich. So wie einem im Ausland ein Schild auf Koreanisch sofort ins Auge springt, verbraucht unser Gehirn beim Verarbeiten der Muttersprache am wenigsten Energie.
print("Hello, world!");
Ausgabe "Hallo!"
Was wirkt auf euch eingängiger?
KI reißt zwar Sprachbarrieren ein, doch die Erforschung koreanischsprachiger Programmiersprachen ist eine Arbeit daran, in unserem Denksystem eine unnötige "Übersetzungsschicht" zu entfernen und so die Effizienz des Gehirns zu maximieren. Dass
Ausgabeintuitiver wirkt alsprint, ist nur natürlich. Wegen der Logik von Allgemeinverwendbarkeit und Arbeitsmarkt dürfte es zwar schwer sein, kurzfristig zum Mainstream zu werden, aber ich hoffe, dass in Zukunft ausgereiftere und vielfältigere koreanische Sprachen das Ökosystem bereichern werden.Auf Koreanisch also ... ich kann nicht aufhören, „Bammanghijil“ zu sagen.
Das erinnert mich an das Seed-Projekt.
Es scheint, als wäre die Person lange eher im Rechnungswesen als in der Entwicklung tätig gewesen, und trotzdem hat sie einen Compiler gebaut und auf GitHub über 100 Stars bekommen.. Wirklich, das Zeitalter der KI ist gekommen.
Wenn man daran denkt, statt
async-awaitmit asynchronem Warten zu programmieren, ist das schon ganz angenehm.Bei einer Programmiersprache ist doch gerade die Vielseitigkeit wichtig..
Es ist lustig, dass die Reaktionen auf Hacker News so wohlwollend sind, haha.
Wow, wie cool.
Hallo, kraftvoller und starker Morgen!
Wow
Wow, so etwas auf Hacker News zu sehen, ist auch schön. Danke, König Sejong.
Hacker-News-Kommentare
Wenn du dich für koreanische Programmiersprachen interessierst, empfehle ich die funktionale Sprache „Nuri“
Nuri GitHub-Link
Sie beschränkt sich nicht nur darauf, Schlüsselwörter zu übersetzen, sondern kann tatsächlich koreanische Grammatikstrukturen im Code abbilden
Wenn man zum Beispiel „10 objektmarkierer 5 durch teilen und ausgeben“ schreibt, wird als Ergebnis „2“ ausgegeben
Es gibt auch noch eine andere Sprache namens „Yaksok“. Der Beispielcode für das Spiel 2048 ist komplett auf Koreanisch geschrieben
Ich finde das eine wirklich tolle Idee. Hangul ist ein logisch entworfenes Schriftsystem, das man an einem halben Nachmittag lernen kann
StackExchange-Antwort zum Lernen von Hangul
Hangul lässt sich schnell lernen, weil die Anzahl der Buchstaben ähnlich wie im Englischen ist, aber das Auswendiglernen von Wörtern ist etwas schwieriger. Deshalb nutze ich Anki zusammen mit einer spielerischen Lern-App, die ich selbst entwickelt habe
Als koreanischer Muttersprachler möchte ich kurz meine Meinung teilen
Substantive lassen sich natürlich übersetzen, aber bei englischen Verben im Imperativ muss man bei der Übertragung ins Koreanische vorsichtig sein. Zum Beispiel kann „find“ zu „chatda“, „chatgi“ oder „chateum“ werden, aber je nach Kontext kann das unnatürlich wirken
Ein weiteres Problem ist der Plural. Im Englischen wird klar zwischen Singular und Plural unterschieden, im Koreanischen dagegen nicht. Wenn man den Plural wie in „Wörter-pluralmarker“ ausdrücklich markiert, wirkt das oft eher unnatürlich
Wenn man nicht nur Schlüsselwörter einfach ersetzt, sondern die strukturellen Unterschiede zwischen Englisch und Koreanisch berücksichtigt, könnte das ein viel leistungsfähigeres Projekt werden
Als ich im Studium Informatik gelernt habe, hatte ich das Gefühl, dass die englische Basis von Programmiersprachen für Englischsprachige ein großer Vorteil ist
Freunde unter den internationalen Studierenden hatten es schwerer zu lernen, weil ihnen Englisch nicht vertraut war. Deshalb war der Witz, Programmieren solle als Fremdsprachenkurs angerechnet werden, ziemlich treffend
Wirklich schwierig ist es, das Programmieren selbst zu lernen. Dass fortgeschrittene Themen oder Dokumentation nur auf Englisch verfügbar sind, ist allerdings eine große Hürde für ESL-Lernende
Ich kann kein Koreanisch, aber dank dieses Threads habe ich viele linguistische Einsichten gewonnen
Besonders interessant fand ich das phonologische Design von Hangul (Link),
die Besonderheiten des koreanischen Plurals (Link),
das Problem der Token-Kompression bei LLM-Tokenizern und Koreanisch (Link)
sowie den Rhythmus der Hangul-Tastatur, bei der Konsonanten und Vokale nach der Handaufteilung getrennt sind (Link)
Ich denke, solche Versuche könnten zu sprachlicher Fragmentierung führen.
Wenn jeder Programmiersprachen in seiner eigenen Sprache entwickelt, werden Zusammenarbeit und Einstellung schwieriger, und auch der Wissensaustausch leidet
Persönlich denke ich, dass es weniger Kriege und Missverständnisse gäbe, wenn die ganze Welt eine einzige Sprache verwenden würde. Natürlich würde kulturelle Vielfalt verloren gehen, aber die Effizienz der Kommunikation würde steigen
Der Ansatz, einfach nur Schlüsselwörter zu übersetzen, ist interessant
Wie im Beispielcode
So geschrieben könnte der Code kompakter werden. Allerdings geht der Vorteil der Groß-/Kleinschreibung verloren
Ich habe gehört, dass die Geschwindigkeit der Informationsverarbeitung unabhängig von der Sprachdichte ähnlich ist
Zugehöriger Blogbeitrag
Erfolgreich war das aber nicht. Die meisten Computerumgebungen setzen ohnehin lateinische Zeicheneingabe voraus, und sich ein paar Schlüsselwörter zu merken ist nicht schwer
Selbst im Zeitalter der LLMs dürfte englischer Code weiterhin effizienter sein, weil der Großteil der Trainingsdaten englischer Code ist
Tolles Projekt. Ich habe vor etwa 190 Jahren (!) an einer koreanischen Universität studiert und kann heute nur noch grundlegendes Koreanisch, aber beim Blick auf den Beispielcode fühlt es sich an, als würde ich neue Wörter lernen
Dieses Projekt gefällt mir wirklich sehr. Wenn ich mir die Codebeispiele anschaue und nichts verstehe, kann ich trotzdem nachempfinden, wie sich nicht englischsprachige Entwickler gefühlt haben müssen, als sie zum ersten Mal eine englischbasierte Sprache gesehen haben
Lisp bleibt allerdings weiterhin ein Paradies voller Klammern :-)
Das erinnert mich an Chinas Easy Programming Language
EPL-Wiki-Link
Vor etwa 15 Jahren haben viele Kinder in China mit dieser Sprache ihre ersten Programmiererfahrungen gemacht