XL (langage)

Un article de Wikipédia, l'encyclopédie libre.


XL est un langage de programmation extensible, basé sur la programmation par concepts, développé depuis 2000 par Christophe de Dinechin.

Pour le langage XML destiné à l'implémentation de services web, voir XL (XML langage).

[modifier] État du développement et historique

Le design de XL a commencé aux alentours de 1992, sous le nom LX (Langage eXpérimental). Le projet a été mis dans le domaine du logiciel libre en 2000, dans le cadre du projet "Mozart" qui visait à fournir des capacité de métaprogrammation multi-langage. Les premiers compilateurs étaient écrits en C++, mais cela rendait l'écriture d'extensions de compilateurs compliquée, car C++ ne permettait pas d'offrir le niveau d'abstraction voulu (par exemple un équivalent de translate. Les aspects multi-langage rendaient les arbres syntaxiques difficile à manipuler en respectant la sémantique de chaque langage.

Une réécriture complète du compilateur a commencé en 2003, abandonnant l'idée de support multi-langage qui avait montré ses limites, et focalisant sur la facilité d'écriture des extensions. L'arbre syntaxique a été réduit à sept types de noeud seulement pour représenter tous les programmes. Ce nouveau compilateur s'est auto-compilé en 2004 (bien qu'avec des capacités réduites et une dépendance à C++ dans le code généré). Depuis, tout le développement se fait en XL.

En 2007, le langage offre un grand nombre de fonctionalités avancées, mais manque encore d'une librairie fonctionnelle.

[modifier] Ancêtres

XL a été inspiré par un grand nombre d'autres langages. Dans l'ordre alphabétique :

  • Ada inspired some of large-scale program support, exception handling, tasking, and supportability aspects.
  • Basic notably in the more modern variants that dispense of line numbers and support structured programming, showed how simple the syntax of a programming language could be. Basic is one of the first modern languages to not mandate parentheses around subroutine calls.
  • C was used as the standard to expect in terms of runtime and machine-level support. XL will not require a virtual machine to run.
  • C++ and the Standard template library demonstrated the need for good support of generic types, including implicit instantiation of generics (which Ada lacks).
  • Fortran's continued performance lead over C and C++ for numerical-intensive applications helped identify which language constructs would prevent useful optimizations.
  • Java demonstrated the importance of a large, portable support library. Java containers also showed the limitations of an approach not based on generic programming. Interfacing with Java code remains an interesting challenge for XL.
  • Lisp extensibility was considered as a key factor in its survival and relevance to this day. Lisp was the first language to normalize object-oriented features, despite having been designed years before object-oriented ideas were invented.
  • Prolog demonstrated that alternative programming models are sometimes useful and highly productive. Every effort was made to ensure that a Prolog-style plug-in could be written for XL.
  • Visual Basic showed how the parse tree representation can be dissociated from its visual presentation. Few people edit VB Forms textually. It is expected that XL edit-time plug-ins will one day provide similar capabilities, by directly manipulating the parse tree.


[modifier] Lien externe

Autres langues