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.