- Un langage compilé à typage statique écrit avec des mots-clés en hangeul, qui génère des binaires natifs via LLVM IR
- Fournit à la fois un compilateur et un interpréteur implémentés en Rust, avec une CLI
hgl prenant en charge la compilation, l’exécution, le REPL et les fonctions LSP
- Tous les mots-clés sont en coréen, comme
함수, 만약, 반복, 변수, et les noms de variables comme de fonctions peuvent aussi être définis en hangeul
- Intègre des fonctions pratiques comme les entrées/sorties de fichiers, JSON, HTTP, expressions régulières, date/heure et appels système, et inclut 18 exemples
- Met en œuvre dans un langage de programmation la structure scientifique du hangeul et sa diffusion culturelle, attirant l’attention comme une nouvelle tentative de combiner apprentissage du coréen et code
Aperçu du langage Han
- Han est un langage compilé à typage statique écrit avec des mots-clés coréens, qui génère des binaires natifs via LLVM IR
- Inclut une toolchain de compilation et un interpréteur tree-walking écrits en Rust
- La commande
hgl permet de lancer l’interpréteur, compiler, utiliser le REPL et démarrer le serveur LSP
- Tous les mots-clés sont composés en hangeul, par exemple :
함수, 만약, 반복, 변수, 출력
- Le projet vise à implémenter en langage de programmation le système d’écriture scientifique du hangeul, avec pour objectif de marier beauté linguistique et précision technique
Principales fonctionnalités
- Prise en charge des mots-clés et identifiants en hangeul : noms de variables, de fonctions et de structures peuvent être écrits en hangeul
- Système de types statique : 5 types primitifs sont fournis,
정수, 실수, 문자열, 불, 없음
- Modes compilation et interprétation : LLVM IR → clang → génération de binaire ou exécution immédiate
- REPL et serveur LSP : exécution interactive et autocomplétion via
hgl repl et hgl lsp
- Fonctionnalités intégrées
- Tableaux, structures, closures, pattern matching, gestion des exceptions, génériques
- I/O de fichiers, JSON, HTTP, expressions régulières, date/heure, appels système
- Chaînes formatées, tables de hachage, fonctions mathématiques intégrées
- 18 programmes d’exemple inclus : Hello World, appel d’API HTTP, etc.
Installation et exécution
- Prérequis : Rust (1.70+), clang
- Procédure d’installation
- Une extension VS Code est fournie : coloration syntaxique et prise en charge LSP
- Commandes CLI
hgl interpret <file.hgl> — lancer l’interpréteur
hgl build <file.hgl> — compiler en binaire natif
hgl run <file.hgl> — compiler puis exécuter immédiatement
hgl repl — mode interactif
hgl lsp — lancer le serveur LSP
État actuel de l’implémentation
- Fonctionnalités entièrement opérationnelles
- Types de données, flux de contrôle, fonctions, chaînes, tableaux, tables de hachage, structures, gestion des erreurs, vérification des types
- JSON, HTTP, expressions régulières, date/heure, système, I/O de fichiers, fonctions mathématiques, modules, génériques
- Fonctionnalités partiellement implémentées
- Lors de
hgl build, la génération de code pour les closures ainsi que les méthodes sur chaînes et tableaux n’est pas terminée
- Fonctionnalités non implémentées
- Sécurité Null (pas de type
Option), traitement asynchrone/parallèle, garbage collection, optimisation de récursion terminale
Le hangeul et la programmation
- Le hangeul est un système d’écriture scientifique qui représente visuellement la structure phonologique, créé en 1443 par le roi Sejong
- Han reflète cette clarté structurelle du hangeul dans la syntaxe du code
- Plus de 16 millions de personnes apprennent le coréen dans le monde, et Han propose un moyen d’apprendre le hangeul à travers le code
- Exemples de mots-clés
함수(function), 만약(if), 반복(for), 반환(return), 변수(variable), 출력(print), etc.
Conception et architecture
- Pipeline de compilation basé sur Rust
- Lexer → Parser → AST → Interpreter / CodeGen → LLVM IR → clang → Binary
- Structure du projet
src/ — code principal du compilateur et de l’interpréteur
editors/vscode/ — extension VS Code
- Inclut aussi
examples/, spec/, tests/
- Raisons des choix de conception
- Génération d’IR textuel plutôt qu’usage de l’API C de LLVM pour simplifier la build
- L’interpréteur privilégie l’exécution rapide, le compilateur les performances
- Le pattern matching et la sûreté mémoire de Rust conviennent bien à l’implémentation du langage
Tests et licence
cargo test exécute 46 tests (41 unitaires, 5 d’intégration)
- Publié sous licence MIT
Portée culturelle
- Han est un langage expérimental qui combine la beauté du hangeul et la précision de la programmation
- Il propose aux apprenants du coréen comme aux développeurs une nouvelle approche qui brouille la frontière entre langue et code
12 commentaires
Merci, j’y ai trouvé des informations utiles. GeekNews, qui sélectionne les nouvelles essentielles, fait partie de mes visites quotidiennes avec plaisir. Étant moi-même en train de développer un langage de programmation en coréen, je vois très positivement la poursuite de ce type d’initiatives.
Après avoir vécu longtemps à l’étranger et observé l’évolution de la Corée, j’ai toujours trouvé regrettable l’intrusion excessive de l’anglais dans la vie quotidienne comme dans l’ensemble de l’industrie. Le jargon de Pangyo, les noms d’appartements obscurs, des menus difformes comme MSGR, ou encore les enseignes saturées d’anglais donnent l’impression de nuire à la vitalité propre de notre langue. Même si l’éducation précoce a réduit la barrière de l’anglais, l’intuitivité qu’offre la langue maternelle est irremplaçable. De la même manière qu’une enseigne en coréen saute immédiatement aux yeux à l’étranger, notre cerveau consomme le moins d’énergie lorsqu’il traite sa langue maternelle.
print("Hello, world!");
afficher "Bonjour !"
Lequel vous paraît le plus immédiatement parlant ?
L’IA fait tomber les barrières linguistiques, mais la recherche sur les langages de programmation en coréen consiste à supprimer cette « couche de traduction » inutile dans notre système de pensée afin de maximiser l’efficacité du cerveau. Il est tout naturel que
afficherparaisse plus intuitif queprint. Il sera sans doute difficile que cela devienne immédiatement dominant, pour des raisons de polyvalence ou de marché de l’emploi, mais j’espère qu’à l’avenir des langages coréens plus aboutis et plus variés viendront enrichir l’écosystème.En hangeul, donc... impossible d’arrêter le désir irrépressible de troller.
Cela me rappelle le projet Graine.
On dirait quelqu’un qui a longtemps travaillé dans la comptabilité plutôt que dans le développement, mais réussir à créer un compilateur et à dépasser les 100 étoiles sur GitHub…
On est vraiment entrés dans l’ère de l’IA.
En pensant qu’on pourrait coder avec
비동기-대기au lieu de async-await, c’est vrai que c’est assez confortable.La polyvalence est pourtant essentielle pour un langage de programmation...
C’est assez drôle de voir que les réactions sur Hacker News sont plutôt favorables haha
Waouh, c’est génial.
Bonjour, matin puissant et vigoureux !
Waouh
Waouh, c’est sympa de voir ce genre de chose sur Hacker News. Merci, roi Sejong.
Réactions sur Hacker News
Si les langages de programmation en coréen vous intéressent, je recommande le langage fonctionnel « Nuri »
Lien GitHub de Nuri
Il ne se contente pas de traduire des mots-clés : il peut réellement refléter la structure grammaticale coréenne dans le code
Par exemple, si l’on écrit « diviser 10 par 5 puis afficher », le résultat affiché est « 2 »
Il existe aussi un autre langage appelé « Yaksok ». L’exemple de code du jeu 2048 est entièrement écrit en coréen
Je trouve que c’est une idée vraiment géniale. Le hangeul est un système d’écriture conçu de manière logique, qu’on peut apprendre en un après-midi
Réponse StackExchange pour apprendre le hangeul
Le hangeul s’apprend vite, car il a à peu près autant de lettres que l’alphabet anglais, mais mémoriser le vocabulaire est un peu plus difficile. J’utilise donc Anki avec l’application d’apprentissage ludifiée que j’ai créée
En tant que locuteur natif du coréen, je voudrais partager brièvement mon avis
Les noms se traduisent naturellement, mais les verbes impératifs de l’anglais demandent de l’attention lorsqu’on les transpose en coréen. Par exemple, « find » peut devenir « chajda », « chajgi » ou « chajeum », mais selon le contexte cela peut sembler maladroit
Le pluriel pose aussi problème. L’anglais distingue clairement singulier et pluriel, alors que le coréen ne le fait pas. Marquer explicitement le pluriel, comme dans « daneo-deul », paraît souvent au contraire peu naturel
Plutôt qu’un simple remplacement de mots-clés, ce projet pourrait devenir bien plus puissant s’il tenait compte des différences structurelles entre l’anglais et le coréen
Quand j’étudiais l’informatique à l’université, j’avais le sentiment que le fait que les langages de programmation soient basés sur l’anglais constituait un gros avantage pour les anglophones
Mes amis étudiants étrangers, moins à l’aise en anglais, avaient plus de difficultés à apprendre. C’est pour cela que la blague disant que la programmation devrait compter comme crédit de langue étrangère me paraissait assez drôle
Le vrai défi, c’est d’apprendre la programmation elle-même. En revanche, le fait que les sujets avancés et la documentation ne soient disponibles qu’en anglais reste une barrière majeure pour les apprenants ESL
Je ne connais pas le coréen, mais grâce à ce fil j’ai beaucoup appris en linguistique
la conception phonologique du hangeul (lien),
les particularités du pluriel en coréen (lien),
le problème de compression des tokens entre les tokenizers de LLM et le coréen (lien),
ainsi que le rythme du clavier hangeul, où consonnes et voyelles sont séparées par la disposition des touches (lien), m’ont particulièrement intéressé
Je pense que ce genre d’initiative peut entraîner une fragmentation linguistique.
Si chacun crée des langages de programmation dans sa propre langue, la collaboration et le recrutement deviendront plus difficiles, et le partage technique aussi
Personnellement, je pense que si le monde entier utilisait une seule langue, il y aurait moins de guerres et de malentendus. La diversité culturelle diminuerait, certes, mais l’efficacité de la communication augmenterait
L’approche consistant à simplement traduire les mots-clés est intéressante
Comme dans l’exemple de code
écrire ainsi pourrait rendre le code plus concis. En revanche, on perd l’avantage de la distinction majuscules/minuscules
J’ai entendu dire que, quelle que soit la densité de la langue, la vitesse de traitement de l’information reste similaire
Article de blog associé
Mais cela n’a pas fonctionné. La plupart des environnements informatiques exigent déjà la saisie en alphabet latin, et mémoriser quelques mots-clés n’est pas difficile
Même à l’ère des LLM, la majorité des données d’entraînement étant du code en anglais, il est probable que le code anglais reste plus efficace
C’est un super projet. J’ai étudié dans une université coréenne il y a environ 190 ans (!) et, même si je n’ai plus qu’un coréen de base aujourd’hui, regarder les exemples de code me donne l’impression d’apprendre de nouveaux mots
J’aime vraiment ce projet. En regardant les exemples de code sans rien comprendre, j’en suis venu à ressentir ce qu’ont dû éprouver les développeurs non anglophones lorsqu’ils ont découvert pour la première fois des langages basés sur l’anglais
Lisp reste quand même le paradis des parenthèses :-)
Cela me rappelle l’Easy Programming Language de Chine
Lien Wikipédia d’EPL
Il y a une quinzaine d’années, beaucoup d’enfants chinois ont découvert la programmation avec ce langage