10 points par GN⁺ 2026-03-16 | 12 commentaires | Partager sur WhatsApp
  • 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

 
runableapp 2026-03-17

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 afficher paraisse plus intuitif que print. 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.

 
mhcoma 2026-03-16

En hangeul, donc... impossible d’arrêter le désir irrépressible de troller.

 
coremaker 2026-03-16

Cela me rappelle le projet Graine.

 
crawler 2026-03-17

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.

 
savvykang 2026-03-17

En pensant qu’on pourrait coder avec 비동기-대기 au lieu de async-await, c’est vrai que c’est assez confortable.

 
github88 2026-03-16

La polyvalence est pourtant essentielle pour un langage de programmation...

 
m00nlygreat 2026-03-16

C’est assez drôle de voir que les réactions sur Hacker News sont plutôt favorables haha

 
nottiger 2026-03-16

Waouh, c’est génial.

 
bichi 2026-03-16

Bonjour, matin puissant et vigoureux !

 
sea715 2026-03-16

Waouh

 
xguru 2026-03-16

Waouh, c’est sympa de voir ce genre de chose sur Hacker News. Merci, roi Sejong.

 
GN⁺ 2026-03-16
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

    • Merci pour ce retour. Je pense que « Nuri » comme « Yaksok » sont des langages raisonnables et bien conçus, mais pour l’instant je me concentre d’abord sur une version traduite depuis Rust afin que les utilisateurs anglophones puissent la découvrir. Cela me semble plus susceptible de créer une base d’utilisateurs plus large
    • Je ne connais presque aucun mot coréen, mais je me demande si « Yaksok » a éventuellement la même étymologie que le japonais 約束 (やくそく)
  • 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

    • Ces mnémotechniques sont vraiment utiles. Je vais aussi les ajouter au guide d’apprentissage du coréen que j’utilise (tolearnkorean.com)
      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
    • C’est un savoir approfondi que même les Coréens connaissent rarement bien. Je vais ajouter ce site aux références GitHub. Je suis heureux d’avoir ce genre de contributeur
    • J’ai ajouté ce lien directement dans la section « Beauty of Hangul » du README
  • 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

    • Je pense l’inverse. Même quand je ne maîtrisais pas bien l’anglais, j’ai appris la programmation en autodidacte. Au final, il n’y a que très peu de mots-clés, et ne pas savoir que « int » est l’abréviation de integer n’était absolument pas un problème
      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
    • En Inde aussi, l’anglais a été l’une des grandes raisons de la croissance du secteur IT. Des amis formés dans des langues régionales ont dû fournir deux fois plus d’efforts à l’université pour suivre des manuels en anglais. Il est regrettable que la barrière linguistique conduise à un gaspillage de talents
    • Mes amis non anglophones disent eux aussi que les mots-clés ne représentent même pas 1 % de la difficulté de la programmation. Les noms de variables ou de classes peuvent déjà être écrits en Unicode, donc il n’y a presque rien à traduire
    • Il est logique que l’anglais soit devenu la norme mondiale. Dans beaucoup de projets, l’usage de l’anglais est naturel
    • Le vrai problème, ce ne sont pas les mots-clés, mais le fait que les manuels, articles et documentations soient entièrement en anglais. Mémoriser quelques mots-clés prend à peine 30 minutes
  • 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

    • Créer et expérimenter n’est jamais stupide. L’auteur a conçu ce langage comme une démarche artistique ; le critiquer sous un angle politique ou commercial, c’est passer à côté de l’essentiel
    • Donc tu veux dire qu’il faudrait créer un nouveau langage de programmation en espéranto ?
  • L’approche consistant à simplement traduire les mots-clés est intéressante
    Comme dans l’exemple de code

    peonkeu tuseom(araei: mognok[jeongsu], tageuteu: jeongsu) -> mognok[jeongsu]:
    pendant debut < fin:
    

    é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

    • Il y avait eu une tentative de traduction de Python en chinois au début des années 2000
      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
    • Bonne remarque. « Han » utilise de vrais mots coréens (hamsu, manyak, etc.), mais si l’on emploie des translittérations comme « peonkeu » ou « araei » comme dans l’exemple, cela peut sembler peu naturel pour les coréanophones
    • Scratch est basé sur JSON, donc le passage d’une langue à l’autre est facile. Mais si la plupart des programmeurs conservent des mots-clés anglais, c’est parce que la documentation, les bibliothèques et les environnements collaboratifs restent tous centrés sur l’anglais
      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
    • Dans le cas du japonais, le changement de mode de saisie est contraignant, donc inefficace pour programmer. Le hangeul pourrait poser un problème similaire
    • L’exemple est amusant
  • 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 :-)

    • La vraie barrière, ce ne sont pas les mots-clés, mais le fait que la plupart de la documentation et des discussions soient uniquement en anglais
    • Pendant des décennies, l’usage de l’anglais a été rationnel. Merci pour le commentaire
  • 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