Retour page d'accueil
UN LANGAGE A DÉCOUVRIR !
Retour page d'accueil
Retour page d'accueil

Tcl/Tk en bref

Tcl (Tool Command Language, prononcez "tickeul") est un langage interprété, disponible gratuitement (y compris si besoin les sources C) et qui fonctionne sous de très nombreux systèmes d'exploitation : Linux©, Unix© bien sûr, mais aussi Windows, Mac/Os ou encore l'IBM i (https://www.ibm.com/fr-fr/products/ibm-i). Tk (Toolkit, prononcez "ticket") est l'extension de Tcl pour la gestion graphique.
Tcl et Tk ont été conçus vers 1988 par John K. Ousterhout, de l'université de Berkeley et qui après avoir travaillé  chez Sun a créé sa startup : Scriptics est devenu ensuite Adjuba Solutions avant d'être racheté en octobre 2000 par Interwoven<. La dernière version de Tcl est la 8.6 (https://www.tcl.tk/.

Les avantages de Tcl/Tk sont très nombreux, en voici les principaux :

A remarquer que bien qu'étant interprété, Tcl est plutôt rapide, car depuis la version 8.0, il intègre un compilateur "à la volée".

Les livres consacré à Tcl/Tk sont essentiellement en langue anglaise : on peut citer notamment "Practical Programming in Tcl and Tk" (effectivement très pratique et très à jour) par Brent B. Welch (sa page perso avec des extraits de la 4è édition de son bouquin) ou encore "Tcl and the Tk toolkit" de John OUSTERHOUT, respectivement environ 65 Euros (ISBN 0130385603) et 45 Euros (ISBN 9788131734872). On peut trouver ces livres sur Amazon (publicité gratuite !).
En français il n'y a malheureusement pas grand chose... De plus, ceux de l'excellent éditeur O'Reilly sont malheureusement épuisés : "Tcl/Tk, précis et concis" (avril 2000 ISBN : 2-84177-106-7, 98 pages, 8 Euros). Un autre livre chez Eyrolles, également épuisé "Programmation Linux" https://www.eyrolles.com/Informatique/Livre/programmation-linux-9782212091298/ qui consacre aussi un gros chapître d'initiation à Tcl/Tk

Il est bien sûr possible d'écrire directement du Tcl/Tk avec n'importe quel éditeur de texte. Mais il existe aussi des éditeurs spécialisés Tcl très intéressants : voir en particulier Ased (écrit tout en Tcl !). Enfin, pour les rébarbatifs au mode caractère ;-) il existe également des éditeurs graphiques "à la Visual Basic" comme par exemple le générateur de code "Visual Tcl" (écrit lui-même en Tcl/Tk et donc utilisable sur tous les systèmes mentionnés ci-dessus !). Avec Visual Tcl, on clique et on sélectionne sur les objets graphiques que l'on souhaite mettre dans son programme et l'outil génère automatiquement le code source correspondant ! Visual Tcl peut relire n'importe quel source Tcl/Tk et sait également générer des "applets" pour vos pages HTML. Pour voir à quoi ressemble l'interface de Visual Tcl cliquer ici . On pourra télécharger cet outil intéressant sur http://vtcl.sourceforge.net/

Un exemple de programme ? En voici un petit de 4 lignes seulement ! :

wm title . "Vive Tcl/Tk !"
label .texte -relief groove -text "Hello World !" -width 30
button .ok -text "OK" -command {exit}
pack .texte .ok -side top

Dont voici le résultat sur différents plates-formes

Sous Windows   Sous Gnu/Linux avec KDE   Sous HP-UX avec CDE   Sous Mac (merci Gwen !)
demo windows    demo Linux    demo HPUX    demo Mac 

Etonnant non ? Et bien entendu ce code fonctionne sur tous les systèmes décrits ci-dessus !

Convaincu ? Alors téléchargez la dernière version de Tcl/Tk pour votre ordinateur préféré. A noter que si vous êtes sous Linux Tcl est sans doute déjà installé. Il vous faudra éventuellement installer Tk.


Tcl/Tk sur le Web

Tcl Developer Xchange!  http://www.tcl.tk : Le site de référence.

La page Wikipédia https://fr.wikipedia.org/wiki/Tool_Command_Language

Un petit cours d'initiation https://fr.wikibooks.org/wiki/Programmation_Tcl/Vos_premiers_pas_en_Tcl


Apprendre Tcl/Tk

Avant de se lancer dans la réalisation de programmes avec tout plein de fenêtres ;-) il faut tout d'abord apprendre la syntaxe du langage Tcl (Tk n'est qu'un sur ensemble de fonctions supplémentaires pour le graphique). Vous allez voir que c'est plutôt simple : en fait dans Tcl tout est chaîne de caractères et toutes les fonctions sont bâties de la même façon :

cmd arg1 arg2 arg3 ...
Une commande Tcl est constituée de mots séparés par un espace. Le premier mot est la commande elle-même et les mots qui suivent sont les arguments de cette commande. Simple non ?
$france
Le signe ($) substitue la valeur d'une variable. Dans cet exemple, nous avons donc à faire avec la variable france.
[clock seconds]
Les crochets permettent l'exécution d'une commande imbriquée. On dit aussi qu'il y a substitution de commande. Par exemple, si l'on veut passer le résultat d'une commande en tant qu'argument à une autre commande on utilise cette syntaxe. Dans l'exemple, la commande entre [ ] donne l'heure en cours en secondes.
"Vive Tcl"
Les doubles guillemets permettent de grouper des mots comme s'ils ne composaient qu'un seul et même argument. A noter que le signe $ et les [ ] sont quand même interprétés s'ils sont situés à l'intérieur des guillemets.
{Vive Tcl}
Les accolades permettent aussi de grouper des mots pour n'en faire qu'un seul argument. Cependant dans ce cas rien de ce qui est à l'intérieur des accolades n'est interprété. En d'autres termes, s'il y a le mot $france à l'intérieur il ne sera pas considéré comme une variable.
\
Le backslash (\) est utilisé pour les caractères spéciaux. Par exemple, le signe \n génère une nouvelle ligne. Le backslah est également utilisé pour désactiver l'interprétation des signes Dollar ($), guillemets ("), accolades ({) ou crochets ( [ ).

Les variables
Les variables sont créées automatiquement par la commande set
Cette commande permet à la fois d'affecter une valeur à une variable ou d'en retourner le contenu.
Ainsi la ligne : set heure 19 créée la variable heure et y stocke la valeur 19.
La commande set heure par contre retourne le contenu de heure, soit la valeur 19.
Il n'est pas nécessaire comme dans d'autres langages de déclarer au préalable les variables. Les variables en Tcl/Tk n'ont pas non plus de type : toute variable peut contenir n'importe quel type. Pour utiliser une variable dans une commande il faut précéder son nom du caractère $ (c'est un caractère dit de substitution).
Ainsi puts "Il est actuellement $heure heures" affiche le résultat suivant : Il est actuellement 19 heures

Pour essayer les exemples qui suivent, il faut d'abord avoir télécharger puis installer Tcl sur votre ordinateur et votre OS préféré ! Puis vous pouvez lancer la commande tclsh. Sous Windows par exemple, cliquez sur tclshxx (xx étant le numéro de version, 82 pour la version 8.2) et vous verrez apparaître la console suivante dans une boîte DOS (taper exit pour sortir) :

console tclsh

Sous Unix ou Linux, seul l'affichage du signe % (pourcent) indique sur votre fenêtre terminal que vous êtes sous Tcl !

Après une phase d'apprentissage où il est intéressant de taper les commandes au fur et à mesure dans la console, vous pouvez par la suite saisir vos programmes dans un éditeur de texte (notepad.exe sous Windows par exemple) puis de le lancer (double-clic ou en tapant la commande source monpgm.tcl dans la console). Sous Windows il est important que l'extension soit bien ".tcl" afin que le lancement soit automatique via un double-clic. Sous Linux (ou Unix) il n'y a bien entendu pas ce problème. Par contre tclsh et wish sont parfois installés dans des répertoires qui changent selon les distributions (/opt ou /usr par exemple). Afin de s'affranchir de ce petit problème, il est ainsi particulièrement intéressant de faire commencer les scripts tcl ou tk par les lignes suivantes (l'exemple ci-dessous est valable pour wish, s'il s'agit d'un script tcl il suffit de remplacer "wish" par "tclsh") :

#!/bin/sh
# lignes 2 et 3 sont des commentaires pour tcl/tk mais ligne 3 est une commande pour le shell \
exec wish "$0" "$1" & exit 0

Arial">Voici donc quelques petits exemples à essayer :

Le programme Tcl qui suit permet d'afficher l'heure en cours. Il utilise 3 commandes Tcl : set, clock, et puts. La commande set permet d'affecter une valeur à une variable ( et du même coup de la déclarer !). La commande clock retourne l'heure en cours. La commande puts affiche le résultat à l'écran.

set secondes [clock seconds]
puts "Il est actuellement [clock format $secondes]"

On pourra remarquer que le signe $ ne doit pas être utilisé lors de l'assignation d'une variable. On utilise le $ uniquement si l'on veut obtenir la valeur d'une variable. Cette variable secondes n'est d'ailleurs même pas obligatoire. On peut en effet obtenir le résultat attendu en une seule commande :

puts "Il est actuellement [clock format [clock seconds]]"

A noter que dans la console vous pouvez aussi taper directement une commande de votre OS préféré : essayez un petit dir sur win9x ou un petit ls sous Linux par exemple !

Par contre, si vous voulez essayer le petit programme graphique aperçu plus haut, il faut lancer non pas tclsh mais... wish (qui est son pendant mais en mode graphique). Lorque vous appellerez wish, 2 fenêtres vont s'ouvrir : la première c'est la console (là ou vous tapez les commandes) et la seconde la fenêtre ou s'affiche le résultat (si votre commande est valide ;-) Attention en particulier au . (point) et aux espaces !). Toujours sous Windoze cela donne quelque chose comme ça :
Console de commande console wish
Fenêtre de résultat résultat wish

Enfin, pour finir sur un exemple un peu plus conséquent, un petit utilitaire de ma composition !

pgf
pgftk : un Petit Gestionnaire de Fichier....

Pour continuer votre apprentissage... Quelques liens pratiques en français :
http://www.linuxfocus.org/Francais/September1999/article110.html

Travaux pratiques (en anglais) : un programme très bien fait écrit lui-même tout en Tcl/Tk pour apprendre... Tcl/Tk :
https://wiki.tcl-lang.org/page/Tcl+Tutor


  Claude Mahé - http://www.uppp.free.fr  Un commentaire ? Email