Journal : Le langage L
Posté par Matthieu Lemerre () le 13 janvier 2007
Bonjour à tous,
Je suis en train d'écrire un langage de programmation sympathique, et j'aimerai avoir des opinions dessus.
Mon langage pourrait être décrit comme un mélange entre Lisp et C:
-Il hérite de la syntaxe de C, permet l'utilisation de pointeurs et de constructions bas niveau, il est type statiquement comme C. En fait, il s'interface extrêmement bien avec le C, ce qui est bien pratique.
- Il est extensible comme en Lisp, avec la définition de nouvelles macros permettant l'extension du langage, on peut le compiler interactivement, et il est plus base sur les expressions que les statements.
Il y a aussi des différences avec ces deux langages:
- il est typé fortement
- les macros peuvent utiliser les informations de typage
- La syntaxe aussi est extensible
Il existe des langages implémentant ces fonctionnalités independamment (quoique les deux dernières sont assez rarement rencontrées), mais leur combinaison en fait quelque chose de sympa.
Au niveau de l'avancement, tout ce qui est raconte dans la page web est vrai, mais le langage est pour le moins loin d'être fini: j'ai toujours pas de flottants par exemple (ce n'était pas l'important pour le moment), et bon il y a quasiment encore aucune librairie.
Voila, l'adresse de la page web du langage est http://www.nongnu.org/l-lang, la mailing liste est l-lang-devel at nongnu dot org, et si vous êtes interessés, n'hésitez pas à contribuer!
Je suis en train d'écrire un langage de programmation sympathique, et j'aimerai avoir des opinions dessus.
Mon langage pourrait être décrit comme un mélange entre Lisp et C:
-Il hérite de la syntaxe de C, permet l'utilisation de pointeurs et de constructions bas niveau, il est type statiquement comme C. En fait, il s'interface extrêmement bien avec le C, ce qui est bien pratique.
- Il est extensible comme en Lisp, avec la définition de nouvelles macros permettant l'extension du langage, on peut le compiler interactivement, et il est plus base sur les expressions que les statements.
Il y a aussi des différences avec ces deux langages:
- il est typé fortement
- les macros peuvent utiliser les informations de typage
- La syntaxe aussi est extensible
Il existe des langages implémentant ces fonctionnalités independamment (quoique les deux dernières sont assez rarement rencontrées), mais leur combinaison en fait quelque chose de sympa.
Au niveau de l'avancement, tout ce qui est raconte dans la page web est vrai, mais le langage est pour le moins loin d'être fini: j'ai toujours pas de flottants par exemple (ce n'était pas l'important pour le moment), et bon il y a quasiment encore aucune librairie.
Voila, l'adresse de la page web du langage est http://www.nongnu.org/l-lang, la mailing liste est l-lang-devel at nongnu dot org, et si vous êtes interessés, n'hésitez pas à contribuer!
> Lire le journal (31 commentaires, moyenne: 2,4).
Vous avez demandé le commentaire #794050.



Comme XP^WPerl6 ?
Dylan ? Perl6 ? Template Haskell ?Free Softwares Users Group Arlon (Sud Luxembourg, Belgique)
pertinent, e adj. Approprié ; qui se rapporte exactement à ce dont il est question.
[^]Re: Comme XP^WPerl6 ?
OCaml (avec camlp4) \o/
[^]Re: Comme XP^WPerl6 ?
J'ai dit rarement, pas jamais!
Pour Perl, je connaissais juste un module pour Perl5 qui reanalysais son code source, est-ce plus elabore sur Perl6?
Je ne connaissais pas Template Haskell ni savait que Dylan savait etendre sa syntaxe; en fait je n'etait au courant que de Camlp4. Je jetterai un oeil a tout ca, merci.
[^]Re: Comme XP^WPerl6 ?
Ou surtout, Scheme lui même; notement par le biais de Gambit et de la « Scheme infix syntax extension ».
Les gens qui n'utilisent pas Scheme sont condamnés à l'instancier... Respect ceci dit : j'en serais incapable.
Respect à RMS.
[^]Re: Comme XP^WPerl6 ?
Je ne suis pas d'accord: le SIX syntax extension est bien une extension a la syntaxe de Scheme, mais cette extension me semble predefinie. Il me semble impossible de rajouter des nouvelles grammaires dynamiquement, comme je le fais en L dans l'exemple du XML.
Et puis l'interet de L n'est pas que dans sa syntaxe extensible: l'usage de macros a la common Lisp dans un language type statiquement n'est pas si courant (pour reprendre l'exemple donne plus haut, il faudrait utiliser Ocaml + Camlp4 + MetaOCaml pour reproduire mon exemple de compilateur d'automates a partir d'expressions rationnelles), surtout dans un langage pas uniquement fonctionnel .
[^]Re: Comme XP^WPerl6 ?
Scheme est loin d'être uniquement fonctionel, et on peut bel et bien y définir des syntaxes nouvelles par les macros.
Respect à RMS.
[^]Re: Comme XP^WPerl6 ?
Exact, mais scheme n'est pas type statiquement (OK, il y a des extensions qui le font).
Et quand je parle de modification de syntaxe, je parle de syntaxe concrete, pas de syntaxe abstraite. Les macros lisp/scheme permettent de changer de syntaxe concrete, les modifications du reader lisp permettent de changer (dans une certaine mesure) de syntaxe concrete.
L permet de changer completement la syntaxe concrete ET la syntaxe abstraite.