Langages


h1 11/02/2005 03:09:00 PM

Ca me travaille ces temps-ci, l'idée d'un langage sûr et sexy... Pas question que je me lance dans l'implémentation d'un nouveau langage, mais je ne peux m'empêcher de considérer la chose. La mode en ce moment c'est les machines virtuelles, le bytecode. Du coup t'écris un compilo pour un bytecode abstrait, si possible pas trop compliqué, c'est portable, t'as pas à te taper le GC, potentiellement tu profites des fonctionnalités des autres langages de la plateforme, t'es content. Ya la JVM de Java, le CIL (.NET,mono) de Ecma, la machine virtuelle Parrot, le bytecode Caml.

En trainant un peu sur l'excellent blog Lambda the Ultimate je tombe sur Boo, une initiative qui me plait bien.. à première vue du moins. Il s'agit de faire un langage agréable type Python ou Ruby, mais typé statiquement. C'est en tout cas une bonne preuve que typage statique ne veut pas dire emmerdement du programmeur. Ca tourne sur la CIL. J'ai lu un peu sur la chose. L'avantage c'est que c'est foutrement beaucoup documenté. Mais c'est gros, pas élémentaire comme truc. Et surtout, le bytecode est typé. Donc pas super comme cible pour un langage statique. Ya un ebuild gentoo, je l'emergerai peut-être quand même.

Quelques précisions à propos de boo. L'inférence laisse beaucoup à désirer.

def f(x):
return (x-1)
f("hop")

Le code suivant, en mode interactif booish, provoque une erreur à l'exécution. Si on essaie de le compiler avec booc, on obtient une erreur statique, mais il s'agit de la défaite de l'inférence, qui ne cherche pas à spécialiser x et le considère comme un objet en général, puis s'indigne qu'on cherche à utiliser la soustraction. En gros il faut préciser x as int.

0 commentaires:

Un commentaire ?

< Accueil