TCL : Mini FAQ Francophone

http://www.ensta.fr/~diam/tcl    (avec frames)

Modif le 20/05/2003
Réclamation : Maurice Diamantini

Une version texte pure sera postée régulièrement sur le forum francophone dédié à ce langage fr.comp.lang.tcl
(dès que j'aurai réinstallé mon Hevea :-)

 ^  Qu'est-ce que TCL et TK

Origine et évolution

TCL = Tool Command Language, (alias Top Cool Language) a été initialement développé pour UNIX a l'Université de Berkeley par le Dr. John Ousterhout et son équipe. Le langage est maintenant soutenu par la société ActiveState.
La version stable actuelle est Tcl/Tk 8.4.1.

Les principes qui ont dicté sa création par John Ousterhout sont que tout programme suffisamment important utilise au moins deux langages :

TCL a été conçu pour se substituer à cette deuxième catégorie de langage. C'est ce qui fait la particularité de TCL : ses utilisateurs viennent d'horizons très variés et utilisent ce langage avec des objectifs trés différents.

TK est la principale extension de TCL. Elle permet de développer des applications à fenêtrage indépendamment de la plateforme (Xwindows / Macintosh / Windows).

Le langage

TCL est un donc un langage de commande interprété (mais compilé à la volée), multiplatforme, puissant, concu pour être facilement étendu ou inclu dans une application (C, C++, ...).

TCL permet la définition de procédures, de variables globales, locales, ou dont la portée peut être accessible (de manière controlée) à des niveaux arbitraires. TCL permet le traitement des exceptions, la redéfinition (dynamique) des commandes, ...
Sa syntaxe est tirée à la fois du SHELL, du C et du LISP.
La puissance du langage sans extensions est suffisante pour permettre l'écriture d'application compléte (graphique ou non) sans aucun extension (serveur http, éditeur de texte ou de dessin, ...)

La syntaxe du langage quelque peu inhabituelle, est basée sur quelques règles trés simples :

La programmation orientée objet est supportée à travers plusieurs extensions, suivant les qualités recherchées XOtcl, itcl snit, stooop)
(17juillet03) Une mention toute particulière est à porter au package snit, car, outre qu'il est une extension écrite en TCL pur et désormais inclue dans la bibliothèque standard tcllib (comme stooop), snit respecte parfaitement le type de programmation TCL, et est basé sur la délégation plutot que sur l'héritage. Ceci permet en particulier "d'hériter" de "classes" écrites dans d'autres systèmes de programmation objet, voire non prévues initialement pour être étendues (tel que la commande tcl "string" ou toute commande tk telle que "button" ou "canvas") !.

(16oct02) Il existe egalement des compilateurs, mais un systéme particulièrement intéressant est CriTcl (voir ci dessous : TCL et le C))

(16oct02) Des outils existent pour rendre une application totalement autonome (ne nécessitant plus d'interpréteur extérieur) à partir de scripts ainsi que des compilateurs. Le système le plus intéressant et le plus prometteur et sans doute le systéme TclKit qui représente un environnement d'exécution monofichier. Celui-ci contient à la fois wish, les librairies tcl associées et quelques extensions. Cette application est capable d'interpréter directement un répertoire compressé appelé Starkit. Il est également possible de créer un fichier compressé, directement exécutable et contenant à la fois l'interpréteur et l'application : les starpack !

Utilisation

Le langage TCL peut être utilisé à deux niveaux :

Licence

Tcl est non seulement gratuit, mais peut être librement modifié et intégrer dans des applications commerciales.

 ^  TCL et les autres langages

D'une manière générale, TCL est parfaitement supporté par SWIG (http://www.swig.org/) qui permet la connection entre différent langages compilés et différents langages interprétés.

TCL et le langage C ou C++

TCL (écrit en C) a été conçu pour être intégré facilement à un programme C.

(16oct02) Cependant une extension récente (en tcl pur) permet d'intégrer directement du code C dans du TCL, et de réaliser une compilation à la volée lors de la première utilisation ! Ce système nécessite bien entendu de disposer d'un compilateur C sur sa plateforme (sauf si l'on souhaite distribuer la version précompilée).
Voir CritLib (http://www.equi4.com/critlib) et CritTcl (http://mini.net/tcl/critcl)

(29nov04) cpptcl (http://cpptcl.sourceforge.net/) est une extension permettant d'inclure facilement du C++ avec du tcl, Fonctione avec la meta-bibliothèque C++ boost (contenant, entre autre une bibliothèque de graphe)

TCL et le langage Java

Le projet tcljava (http://tcljava.sourceforge.net/docs/website/index.html)
est composé de deux parties indépendantes :
jacl
Interpréteur TCL écrit 100% en java.
tclblend
extension TCL permettant de mélanger facilement TCL Java et C. (Nécessite l'existence d'une machine virtuelle java et d'un interpréteur tcl natif.
Swank
implémentation le Tk en jacl, et exploitation des possibilités de Java.
http://www.onemoonscientific.com/swank
Aejaks
Simplifie la programmation Ajax grace à TCL, s'inspire librement de Tk pour certaine facilités. Les exemples fournis donne envie de refaire du HTML (;-)
http://aejaks.sourceforge.net/Aejaks_Home/index.html http://wiki.tcl.tk/swank
Combat
extension TCL permettant d'accéder à Corba au niveau script.
tclsoap
un moyen prometteur (non lié à java et plus simple que corba) de communiquer entre tcl et java (pas encore testé).

 ^  Résographie TCL/TK

En français

En anglais


 ^  Bibliographie TCL/TK

En français

En anglais

  • Faire un sélection commentée...

     ^  Retour ./