URL: https://linuxfr.org/users/linkdd/journaux/letlang-et-si-on-redigeait-la-spec Title: [Letlang] Et si on rédigeait la spec ? Authors: David Delassus Date: 2022年05月06日T02:12:07+02:00 License: CC By-SA Tags: letlang, lep, spécification et langage_de_programmation Score: 15 Bonjour Nal, Aujourd'hui pas de code, mais de la doc ! En effet, il est grand temps de mettre mes idées sur papier pour les générations futures. Voici d'abord une petite table des matières de ma série d'articles sur ce projet : - [Encore un nouveau langage de programmation](https://linuxfr.org/users/linkdd/journaux/letlang-encore-un-nouveau-langage-de-programmation) - [Écrire un compilateur en Rust](https://linuxfr.org/users/linkdd/journaux/letlang-ecrire-un-compilateur-en-rust) - [Écrire un compilateur en Rust (partie 2)](https://linuxfr.org/users/linkdd/journaux/letlang-ecrire-un-compilateur-en-rust-partie-2) - [Faire la différence entre un nombre et une quantité](https://linuxfr.org/users/linkdd/journaux/letlang-faire-la-difference-entre-un-nombre-et-une-quantite) - [Écrire un compilateur en Rust (partie 3)](https://linuxfr.org/users/linkdd/journaux/letlang-ecrire-un-compilateur-en-rust-partie-3) # La documentation, c'est bien On dira ce qu'on veut de Python (c'est pas performant, le packaging il sens la merde, etc...), mais le choix qu'ils ont fait pour aborder la spécification du langage et de son écosystème est selon moi le meilleur qui soit : - pas de comité mystérieux qui sort une spec du 800 pages une fois tout les 5 ans (cc C++) - pas de process obscur qui refuse toute contribution et disparaît de la surface de la planète (cc Lua) Non, à la place, on a les **PEP**, **P**ython **E**nhancement **P**roposals : - chaque document décrit une fonctionnalité, un élément de syntaxe, une guideline, etc... - chaque document est indépendant des autres ("self contained" pour les intimes). - n'importe qui peut en soumettre un - le processus de discussion et de validation est clairement défini - on a une explication du "pourquoi" en plus du "comment" - on a souvent un historique des idées rejetées Bref, c'est rempli de transparence et de bonnes intentions. Que demande le peuple ? C'est pourquoi j'ai décidé de reprendre le concept sous forme de **LEP**, **L**etlang **E**nhancement **P**roposals (pour ceux qui vont me dire "meh ça sonne un peu comme la lèpre", je leur répondrais "trouve moi un meilleur nom et soumet une LEP par mail"). Cela me servira à mettre par écrit les différents aspects du langage, et me servira de base pour les évolutions futures. Il faut dire qu'aujourd'hui, la spec n'existe que dans ma tête et via quelques exemples de code par-ci par-là. Je dois t'avouer que pour avancer sur l'implémentation, c'est pas top. Au moment présent de l'heure du jour d'aujourd'hui, j'ai rédigé 4 LEPs : - [LEP-001: Language Target](https://letlang.dev/lep/001/) - Défini Rust comme étant la sortie de mon compilateur - [LEP-002: Import resolution](https://letlang.dev/lep/002/) - Défini le mécanisme d'import - [LEP-003: Statements](https://letlang.dev/lep/003/) - Parle de "statement" vs "expression" - [LEP-004: Type System](https://letlang.dev/lep/004/) - Défini le système de type du langage une bonne fois pour toute Dans les jours qui viendront, j'ajouterai : - LEP-005: Functions - Définira la structure d'une fonction, et comment le type checking sera implémenté - LEP-006: Side Effects - Définira le mécanisme de side effect et d'exceptions - LEP-007: SAT Solver - Ça sera un draft qui parlera du système d'équation intégré au langage, je reporte donc l'implémentation de cette fonctionnalité à plus tard Bien d'autres arriveront encore par la suite, mais au moins cela posera les bases. Une fois ceci fait, et que le "hello world" sera compilable, je rendrais enfin le dépôt **open source** (quid de la licence selon toi ? j'aimerais bien vos avis sur la question). En attendant, si tu souhaites quand même me filer un coup de pouce, tu es le bienvenu, je te donnerais un accès collaborateur au dépôt sur Github ;)

AltStyle によって変換されたページ (->オリジナル) /