<!doctype linuxdoc system>

<article>

<title>HOWTO Tcl et Tk sous Linux <em>(Linux Tcl and Tk HOWTO)</em></title>

<author>Luca Rossetti <htmlurl url="mailto:lukaros@tin.it" name="lukaros@tin.it">, 
traduit par Carine Bournez, <htmlurl url="mailto:cbournez@if.insa-lyon.fr" name="cbournez@if.insa-lyon.fr">
</author>

<date>v0.2, 07 November 1998</date>

<abstract>
Ce document décrit l'approche de Linux à Tcl, un langage de script.
C'est un langage interprété, facile à apprendre, qui utilise l'absence de typage
pour permettre un niveau de programmation plus élevé et le développement
rapide d'applications.
La boîte à outils Tk est un environnement de programmation pour créer des
interfaces graphiques (Graphical User Interfaces, GUI) sous le système X-Window.
Leurs fonctionnalités incluent la possibilité d'extension et l'inclusion dans  
une autre application, le développement rapide et la facilité d'utilisation.
Conjointement, Tcl et Tk apportent de grands bénéfices à la fois au développeur 
et à l'utilisateur.
Les interfaces basées sur Tk ont tendance à être plus personnalisables et 
dynamiques que celles construites avec une boîte à outils reposant sur du C ou C++.
Tk reproduit l'allure et les sensations de Motif. Un grand nombre d'applications
intéressantes sous X sont entièrement implémentées en Tk, sans aucune nouvelle commande
spécifique à l'application elle-même. 
</abstract>

<toc>
<sect>Introduction<label id="introduction">
<p>

Ceci est le Linux Tcl et Tk HOWTO. Il vise, en tant que référence pour Linux,
à couvrir tout ce qu'il est nécessaire de connaître concernant l'installation,
la configuration, ainsi qu'une introduction au développement sous Tcl et Tk.
Il présente d'abord un historique,  puis aborde les avantages et inconvénients
 de Tcl et Tk sous linux, et enfin des références à d'autres sources d'information
 sur une large étendue de sujets liés à ce langage de script simple mais puissant. 

Si vous avez déjà recompilé votre noyau Linux sous X en utilisant la commande 
<code>make xconfig
</code>

vous vous être certainement trouvé face à la puissance de ce 
langage de script.


Après l'exécution de la première étape de la recompilation du noyau, un script
appelé kconfig.tk est exécuté via wish (l'interpréteur Tcl). La fenêtre de 
configuration du noyau Linux apparaît. Au lieu de répondre à des  
questions en série, cet utilitaire de configuration basé sur X vous permet
d'utiliser des cases à cocher pour sélectionner les options du noyau que vous 
souhaitez activer.

Le système conserve les options de votre dernière configuration afin qu'à 
chaque nouvelle exécution vous n'ayiez à ajouter/supprimer quelques sélections
au lieu de reprendre tout l'ensemble des options.
De plus, vous pouvez parcourir l'ensemble (ou seulement une partie) des options
du noyau dans l'ordre que vous préférez. Après cette étape simplifiée, vous pouvez recompiler votre noyau, en suivant la manière traditionnelle. 


Il existe en fait un autre exemple bien connu. Avez-vous déjà utilisé
&laquo;~printtool~&raquo; ? (Printer Config Tool (C) Copyright 1994 by
<url url="http://www.redhat.com" name="Red Hat Software"> - author: Michael
 Callahan).
Si vous avez installé une distribution Red Hat, vous avez agréablement
réussi à l'utiliser pour mettre en place des services d'impression. Eh bien
l'interface de printtool est principalement un script Tcl/Tk.


Pour ceux qui ne connaissent pas Red Hat, laissez-moi vous dire comment vous
pouvez configurer facilement vos imprimantes, juste en remplissant quelques
champs de texte et en cochant quelques cases.

Le programme lui-même se charge de mettre en place les services en créant
le répertoire de spool, écrit le fichier /etc/printcap et le filtre de
l'imprimante, relance lpd et teste votre filtre avec des pages en ascii ou
en postscript. Il permet de manipuler les options de ghostscript (c'est-à-dire
choisir jusqu'à 8 pages par page en sortie et régler les marges), propose
une aide en ligne et plein d'autres caractéristiques.


Quelle est la différence avec une autre implémentation de service d'impression ?

Tout est réalisé en utilisant Tcl/Tk comme une &laquo;~colle~&raquo; entre applications
consolidées et en opérant avec les fichiers de configurations standards de
Linux, dans un mode fenêtré, visuel et interactif, sous X-Window. Aucune 
nouvelle commande spécifique à l'application n'a été écrite.


<sect1>But de ce document
<p>

Actuellement, le but de ce document est de fournir des références de départ
aux utilisateurs de Linux ; dans les versions futures, j'essaierai d'ajouter
un petit &laquo;~tutoriel de programmation~&raquo;.
J'insiste~: ce n'est pas (et ne veut pas remplacer) un manuel utilisateur
complet ni une référence pour le développement et la 
programmation en Tcl et Tk - c'est juste un point de départ pour les utilisateurs de Linux.

La conception que l'auteur se fait d'un manuel de référence coïncide avec
la définition des pages man et de nombreuses personnes apprennent Tcl/Tk à
partir de ces sources brutes d'information.
Ces fichiers font partie de la distribution du code source et sont installés
sur votre machine Linux. Vous pourrez accéder aux pages de manuel de Tcl/Tk 
par la commande man.

Beaucoup de tutoriels de programmation complets et structurés ont été écrits
dans le but de laisser l'utilisateur débutant trafiquer avec Tcl/Tk ; des tonnes
d'autres données sont disponibles sur Internet.  M'inspirant de la philosophie de 
Tcl/Tk, je ne vais pas réinventer la roue, mais essayer de cimenter cette
énorme masse d'information déjà disponible.

Je vous suggère de jeter un oeil aux autres documents cités dans 
<ref id="references" name="la section Références"> pour savoir où trouver 
des informations spécifiques à propos de Tcl/Tk.

<sect1>Ce qu'il faut savoir avant de poursuivre
<p>

Pour comprendre le B.A.BA de Tcl/Tk, vous n'avez pas besoin d'être un 
gourou de la programmation, la syntaxe des commandes est très simple. 
Basiquement, vous avez besoin de bien connaître~:
<itemize>
<item>des concepts simples de programmation ;
<item>l'utilisation de commandes et d'utilitaires très usuels d'unix ;
<item>l'accès à Internet ;
<item>l'utilisation de ftp.
</itemize>
<p>

<sect1>Nouvelles versions de ce document
<p>

Les versions plus récentes de ce document seront téléchargées sur le site ftp~:
<url url="ftp://sunsite.unc.edu/pub/Linux/docs/HOWTO/">
et seront disponibles sur tous les autres miroirs.

Les versions hypertexte et autres de ceci, ainsi que les autres HOWTOs de Linux
sont principalement disponibles à 
<url url="http://sunsite.unc.edu/LDP/">
 et <url url="http://www.linux-howto.com"> 
et sur beaucoup d'autres sites web miroirs.

(NDT~: En France, vous pouvez utiliser le site suivant pour le
        document original~:
        <url url="ftp://ftp.lip6.fr/pub/linux/sunsite/docs/HOWTO/"
             name="Miroir de Sunsite">
        ou, mieux, la version française~:

        <url url="ftp://ftp.lip6.fr/pub/linux/french/HOWTO/"
             name="Archive des HOWTO français sur LIP6">

        <url url="http://www.freenix.org/unix/linux/HOWTO/" name="Archive
 des HOWTO français chez Freenix">)

J'essaierai d'ajouter à 
<url url="http://space.tin.it/computer/tlqhr/" name="ma page Web"> la version
la plus récente en html et en sgml. La plupart des distributions de 
Linux sur CD-ROM incluent les HOWTOs, souvent dans un sous-répertoire de 
/usr/doc/ et vous pouvez également en acheter des copies imprimées chez 
certains distributeurs.
 
Parfois, les HOWTOs disponibles sur les CD-ROMs, sites ftp ou en copie 
imprimée ne sont plus d'actualité. Si la date y figurant est dépassée de plus 
de 6 mois, il existe probablement une version plus récente sur Internet.

Si vous faites une traduction de ce document dans une autre langue,
envoyez-moi un mot et j'en inclurai une référence ici.

<sect1>Historique des révisions
<p>
<itemize>
<item><bf>Version 0.1</bf>~: 28 Octobre 1998 - première version~;
<item><bf>Version 0.2</bf>~: 07 Novembre 1998 - profonds changements de
style et rajeunissement.
</itemize>

<sect1>Retours et commentaires
<p>

Je compte sur vous, lecteurs, pour rendre ce HOWTO utile. Si vous avez
des suggestions, corrections ou commentaires, s'il vous plaît
envoyez-les moi (<url url="mailto:lukaros@tin.it" name="Luca Rossetti">), 
et j'essaierai de les inclure dans la version suivante.

Si des liens mentionnés dans ce document venaient à être indisponibles ou
déplacés, merci de m'en informer tout de suite pour que je puisse mettre à jour
ou changer le lien.

J'ai la volonté de répondre aux questions d'ordre général à propos de Tcl/Tk
et de Linux du mieux que je peux. Avant tout, lisez s'il vous plaît toutes les
informations contenues dans ce HOWTO, et envoyez-moi un message détaillé sur 
le problème rencontré.

Si vous publiez ce document sur un CD-ROM ou sous forme papier, j'apprécierais
d'en avoir une copie. Envoyez-moi un e-mail et je vous donnerai mon adresse
postale.  

Dans plusieurs sections je mentionne des sociétés de publication ou des URLs
de sites commerciaux. Je ne travaille vraiment pas pour ces gens-là.

<sect1>Crédits
<p>

La plupart des informations de ce HOWTO proviennent du livre du 
Dr. Ousterhout~:
<url url="http://www.scriptics.com" name="Scriptics">  et de la  
<url url="http://www.tclfaq.wservice.com/tcl-faq/" name="FAQ de comp.lang.tcl">
de Larry W. Virden.

Je souhaiterais remercier le  
<url url="http://www.pluto.linux.it/" name="PLUTO">, Groupe Italien des 
Utilisateurs de Linux, et l'ensemble des volontaires de l'
<url url="http://www.pluto.linux.it/ildp/" name="ILDP"> (Italian Linux Documentation Project), spécialement Eugenia Franzoni et Giovanni Bortolozzo pour leurs
commentaires.

<sect1>Politique de diffusion
<p>

Ce document est Copyright 1998 par <url url="mailto:lukaros@tin.it" name="Luca Rossetti">.

Ce document est diffusé dans l'espoir qu'il soit utile au lecteur~: bien sûr il
est considéré sans garantie~; sans même la garantie sous-jacente de commercialisabilité ou d'adéquation à un but particulier. Ce HOWTO est une documentation
libre~; vous pouvez le redistribuer et/ou le modifier, selon les termes du
<url url="http://sunsite.unc.edu/LDP/LDP-COPYRIGHT.html" name="Copyright LDP">.
Veuillez lire le 
<url url="http://sunsite.unc.edu/LDP/LDP-Manifesto.html" name="Manifeste du LDP"> pour plus de détails.

 <sect>Histoire de Tcl/Tk
 <p>

 Tcl/Tk a été créé par le <url url="mailto:ouster@scriptics.com" name="Dr. John Ousterhout"> (prononcer &laquo;~Oh'-stir-howt~&raquo;) alors qu'il enseignait à l'université de
 Berkeley, en Californie. 
 En fait, il a commencé à l'implémenter à son retour à Berkeley au
 printemps 1988~; dès l'été, il était utilisé dans quelques applications internes, mais Tk
 n'existait pas encore. Lisez l'histoire de Tcl/Tk écrite par son auteur à
 <url url="http://www.scriptics.com/scripting/tclHistory.html">.

 <sect1>Chronologie
 <p>
 <itemize>
 <item><bf>1989~:</bf> premières diffusions externes de Tcl et début de l'implémentation de Tk~;
 <item><bf>1991~:</bf> première version de Tk~;
 <item><bf>1994~:</bf> le Dr. Ousterhout est employé par Sun Microsystems, Inc.~: il se distingue comme ingénieur et dirige le projet Tcl. 
<item><bf>Avril/Mai 1997~:</bf> Le groupe de recherche responsable chez Sun du développement de Tcl est déplacé dans une filiale de Sun appelée SunScript. Cependant les choses ont changé à nouveau rapidement. Vous pouvez lire les détails de cette évolution en choisissant "SunScript_story" à l'URL~:
<url url="http://starbase.neosoft.com/&percnt;7Eclaird/comp.lang.tcl/" name="SunScript-Story">~;
<item><bf>Août 1997~:</bf> un consortium Tcl est créé. Vous pouvez en lire davantage, notamment comment en faire partie, qui est actuellement dans le conseil d'administration, etc. en visitant  <url url="http://www.tclconsortium.org/" name="Tcl Consortium">~;
<item><bf>Février 1998~:</bf> le Dr. Ousterhout quitte Sun pour fonder 
<url url="http://www.scriptics.com/" name="Scriptics">, une entreprise dédiée
aux outils, applications et services d'écriture de scripts. Selon 
<url url=" http://www.scriptics.com/about/news/qa.html">, 
le coeur de Tcl/Tk reste libre, avec l'équipe de Sun
qui continue actuellement son travail sur Tcl/Tk 8.1. Après la prochaine
version, il est prévu que ce travail sur la base de Tcl/Tk migre de Sun à
Scriptics, et que l'équipe de Sun se concentre davantage sur les extensions
et applications de Tcl.
<item><bf>23 Avril 1998~:</bf> L'<url url="http://www.acm.org/" name="ACM">
(Association for Computing Machinery) décerne le prix du logiciel 1997 
(Software System Award) à John Ousterhout et Scriptics (
<url url="http://www.acm.org/awards/">). Cette
récompense est attribuée à une institution ou une personne reconnue pour
avoir développé un logiciel qui a eu une influence durable, remarquée 
par des contributions à des concepts ou par un plébiscite commercial, ou les deux.
</itemize>


<sect>Qu'est-ce que Tcl/Tk ?
<p>
<sect1>Qu'est-ce que Tcl ?
<p>
Tcl (prononcer &laquo;~tickeul~&raquo;) est l'acronyme de "Tool Command Language" 
(langage de commandes-outils). Tcl est en fait divisé en deux parties~: un langage et
une bibliothèque.

Tcl est un langage de programmation simple, dont le but est de passer des 
commandes à des programmes interactifs tels que des éditeurs de texte,
des débogueurs et des interpréteurs shell. Il possède une syntaxe
simple et il est lui-même programmable : les utilisateurs de Tcl
peuvent en effet écrire des procédures pour
créer des commandes plus puissantes que celles que fournies par l'ensemble 
pré-construit.

D'autre part, Tcl est un paquetage bibliothèque intégrable dans des applications. La bibliothèque Tcl est constituée d'un analyseur syntaxique du langage Tcl,
de routines implémentant les commandes pré-définies de Tcl, et de procédures
permettant à chaque application d'ajouter à Tcl des commandes additionnelles qui
lui sont spécifiques. Le programme applicatif génère des commandes Tcl et les
passe à l'analyseur syntaxique de Tcl pour l'exécution.

Les commandes peuvent être générées en lisant des caractères sur une source 
en entrée ou bien en associant des chaînes de caractères avec des éléments de
l'interface utilisateur de l'application, comme des boutons, des entrées de menus, 
ou d'autres widgets (NdT~: widget = Window Gadget, élément de fenêtre). Lorsque la
bibliothèque Tcl reçoit une commande, elle analyse les champs qui la composent
et exécute directement les commandes pré-définies.

Pour les commandes implémentées par l'application, Tcl rappelle l'application
pour exécuter les commandes. Dans bien des cas, les commandes lanceront des appels récursifs à l'interpréteur Tcl en passant des chaînes optionnelles à exécuter (en fait les procédures et commandes de bouclage conditionnel fonctionnent toutes de cette manière). Un programme d'application peut tirer de nombreux avantages de l'utilisation de Tcl comme langage de commande~:
<itemize>
<item> Tcl fournit une syntaxe standard~: une fois que les utilisateurs connaissent Tcl, ils seront capables de passer facilement des commandes à n'importe quelle application basée sur Tcl.
<item> Tcl parvient à une bonne &laquo;~programmabilité~&raquo;. Tout ce qu'une application
nécessite est l'implémentation de quelques commandes spécifiques de bas niveau. Tcl fournit de nombreuses commandes utilitaires et une interface générique de 
programmation pour construire des procédures de commande complexes. En
utilisant Tcl, les applications ne nécessitent pas de réimplémentation
de ces caractéristiques.
<item> Les extensions à Tcl, telles que la boîte à outils Tk, fournissent des
mécanismes pour la communication entre applications, en envoyant des
commandes Tcl dans un sens et dans l'autre. La structure commune du
langage Tcl rend plus aisée la communication entre applications.
</itemize>

Il est important de noter que Tcl a été conçu en pensant que le programmeur devrait 
en fait utiliser deux langages ou plus lorsqu'il construit un système logiciel de 
taille conséquente~: un pour manipuler des structures de données internes complexes,
et là où la performance est cruciale, et un autre, comme Tcl, pour écrire de très 
courts scripts qui assemblent les autres morceaux, en fournissant des
possibilités d'extensions à l'utilisateur.

Pour celui qui écrit des scripts Tcl, la facilité d'apprentissage, de
programmation et d'assemblage, sont plus importantes que les
performances ou les possibilités de structures de données complexes et d'algorithmes.

Tcl a été construit pour être aisément inclus dans un langage de plus
bas niveau lorsqu'on rencontre des tâches pour lesquelles un langage de plus bas niveau est plus adéquat. Ainsi, les fonctionnalités de base peuvent rester petites et chacun a seulement besoin d'ajouter les morceaux qu'il veut ou doit avoir.

Une réponse à la question &laquo;~Qu'est-ce que Tcl ?~raquo; se trouve à
<url url="http://www.NeoSoft.com/tcl/whatistcl.html">.
  
<sect1>Qu'est-ce que Tk ?
<p>

Tk (prononcer "Tiii-kay") est une extension de Tcl qui apporte au programmeur une interface avec le système de fenêtrage X11. Il est à noter que Tk a été compilé avec succès sous X11 R4, X11 R5, X11 R6, ainsi que les environnements NeWS/X11 de Sun.

De nombreux utilisateurs rencontreront Tcl/Tk à travers la commande "wish".
Wish est un shell de fenêtrage simple qui permet à l'utilisateur d'écrire des applications Tcl/Tk dans un environnement de prototypage.

Jusqu'à présent, Tcl/Tk ne supporte pas de fontes pour les langues japonaise, chinoise, coréenne,...

<sect1>Extensions
<p>

Comme Tcl est facile à étendre, beaucoup essaient de partager des extensions, 
notamment le populaire itcl, <url url="http://www.tcltk.com/itcl/" name="[incr Tcl]">, ObjectTcl, TclX,  <url url="http://tix.mne.com/" name="Tix ">, et <url url="http://www.tcltk.com/blt/" name="BLT">.

Ces extensions nécessitent bien évidemment un interpréteur Tcl étendu. De plus,
de nombreuses applications Tcl libres nécessitent une extension particulière de Tcl pour fonctionner.

Une des extensions les plus populaires est certainement 
<url url="http://expect.nist.gov" name="Expect">.
Elle permet d'avoir une interface sympathique pour la plupart des commandes
UNIX basiques en ligne, telles que ftp, telnet, rlogin, passwd, fsck, etc.

Une liste complète des extensions de Tcl/Tk peut être trouvée à l'URL
<url url="http://www.scriptics.com/resource/software/extensions/">.

<sect1>Plates-formes supportées
<p>

Cette section contient des informations à propos de Tcl 8.0 et Tk 8.0, versions
les plus récentes de Tcl/Tk. Elles sont sorties le 18 août 1998 et le patch
le plus récent (8.0.3) date du 3 septembre 1998.

Quand vous télédéchargez Tcl et Tk, vous récupérez deux programmes, wish et
tclsh, les bibliothèques supportant les scripts, et la documentation en ligne.
Ces programmes supportent des plates-formes génériques de développement d'applications en Tcl. Wish inclut la boîte à outils pour interface graphique utilisateur Tk. Les paquetages sont prêts à être utilisés après l'installation.

Tcl 8.0 et Tk 8.0 fonctionnent sur la plupart des versions des systèmes d'exploitation suivants~:

<itemize>
<item>Windows 95
<item>Windows NT
<item>Solaris et SunOS
<item>Linux
<item>HP-UX
<item>SGI
<item>IRIX
<item>Digital Unix
<item>AIX
<item>SCO Unix
<item>La plupart des autres systèmes d'exploitation voisins d'UNIX pour Macintosh 
(68K et Power Mac)
<item>Des versions pré-compilées sont disponibles pour diverses distributions de Linux.
</itemize>


<sect>Installation et prise en main de Tcl et Tk
<p>
Les distributions récentes incluent Tcl et Tk. Des paquetages rpm et deb de
binaires pré-compilés sont disponibles pour les distributions Red Hat, SuSE et
Debian (ce qui facilite l'installation).

Une installation standard d'une distribution récente inclura Tcl/Tk puisque
c'est un prérequis de nombreux utilitaires de configuration qui tournent
principalement sous X.

Tcl et Tk sont distribués librement sur Internet sous forme de code source. Il
n'y a pas de restrictions quant à leur utilisation, ni de licence ou droits
à payer (voir la section <ref id="license" name="termes de la licence"> pour
information complète).

Encore plus de scripts et d'extensions Tcl/Tk sont disponibles librement également.

<sect1>Télédéchargement des distributions de base
<p>

La base de Tcl/Tk se constitue des bibliothèques Tcl et Tk, plus les applications wish et tclsh, la documentation associée, des bibliothèques de scripts et des applications de démonstration. Le site FTP primaire pour ces données est <url url="ftp://ftp.scriptics.com/pub/tcl/">.

Le site primaire en HTTP est <url url="http://www.scriptics.com/software/download.html">.

<sect1>Installation
<p>

A moins qu'elle ne soit déjà disponible en paquetages propriétaires pour votre
distribution, vous souhaiterez télédécharger le version code source. Vous aurez besoin des sources de Tcl comme de Tk. 
La procédure suivante se réfère à ce second cas~:

Choisissez entre le format tar et le format tar gzippé.

Fichiers Tar compressés

Sources de Tcl (tcl8.0.3.tar.Z)~: fichier tar compressé (environ 2.4 Mo). 
Sources de Tk (tk8.0.3.tar.Z)~: fichier tar compressé (environ 3.3 Mo).

Fichiers Tar gzippés

Sources de Tcl (tcl8.0.3.tar.gz)~: fichier tar gzippé (environ 1.5 Mo). 
Sources de Tk (tk8.0.3.tar.gz)~: fichier tar gzippé (environ 2.1 Mo).

Quand vous récupérez ces fichiers, vous obtenez un fichier compressé tar
avec un nom comme tcl8.0.3.tar.gz ou tcl8.0.3.tar.Z. Ces fichiers sont identiques, sauf par la technique de compression (les fichiers .gz sont généralement plus petits que les .Z).

Pour décompresser la distribution, lancez des commandes shell comme celles-ci, 
selon la version que vous avez récupérée~:

<code>gunzip -c tcl8.0.3.tar.gz
</code>
ou
<code>tar xf - zcat tcl8.0.3.tar.Z
</code>
ou
<code>tar xf - unzip tcl80.3.zip
</code>

Chacune de ces commandes crée un répertoire appelé tcl8.0.3, qui contient les sources pour toutes les plates-formes, la documentation, et les bibliothèques de script pour Tcl 8.0. Pour compiler et installer la distribution, suivez les instructions du fichier README dans le répertoire de la distribution. Assurez-vous de
compiler Tcl avant Tk, puisque Tk dépend d'informations de Tcl.

<sect1>L'archive de contributions
<p>

Il existe beaucoup d'autres paquetages libres pour Tcl et Tk, incluant
des scripts écrits en Tcl et également des extensions écrites en C ou
C++. Ces paquetages comprennent des applications de bases de données et d'accès réseau, un constructeur d'interfaces graphiques utilisateur, le programme expect, des widgets Tk supplémentaires, et des dizaines d'autres choses.

Le site primaire pour l'archive Tcl/Tk est <url url="ftp://ftp.neosoft.com/pub/tcl">.

<sect1>Sites miroirs
<p>

Plusieurs autres sites dans le monde sont des miroirs de tout ou partie des données du site de base et de l'archive de contributions~; vous trouverez peut-être
plus pratique de prendre des données sur un miroir plus proche de vous.

Le fichier ftp "0_mirror" à <url url="ftp://ftp.scriptics.com/pub/tcl/"> 
donne une liste de miroirs dans votre pays.

<sect1>Quelles versions utiliser ?
<p>

Référez-vous toujours à la dernière version recommandée dans la section &laquo;~Tcl/Tk
Core~&raquo; de <url url="http://www.scriptics.com/software/download.html" name="Scriptics Software Central page">.

A l'heure où j'écris, les versions recommandées sont les dernières (Tcl 8.0.3 et Tk 8.0.3), qui sont sorties en septembre 1998. Tcl 8.0 contient un nouveau
compilateur de pseudo-code qui accélère l'exécution d'un facteur 2 à 10.
Il fournit aussi des contextes de dénomination (namespaces), des entrées/sorties binaires et plusieurs nouvelles caractéristiques.

Tk 8.0 est la première version qui fournit l'allure et les impressions
naturelles sur les Macintoshes et les PCs. Tk 8.0 supporte également
l'encapsulation d'applications et propose un nouveau mécanisme de
fonte portable. Tcl 8.0 et Tk 8.0 offrent tous deux des
fonctionnalités supplémentaires au modèle de sécurité Safe-Tcl.

<sect1>Où adresser des rapports de problèmes, bugs, ou améliorations
<p>

Utilisez <url url="news:comp.lang.tcl"> pour les communications publiques.

(NdT~: le forum en langue française équivalent est <url url="news:fr.comp.lang.tcl">).

Une alternative consiste à envoyer problèmes, suggestions, idées nouvelles, etc. 
directement à l'auteur. Un email à <url url="mailto:ouster@scriptics.com" name="John Ousterhout"> permet de le contacter.

Lorsque vous rendez compte de problèmes ou de bugs, veillez à mentionner tous les détails nécessaires à un diagnostic correct. Basiquement, vous devez décrire votre matériel, votre système d'exploitation et la version de Tcl/Tk utilisée, préciser si vous avez fait des modifications ou des ajouts, et donner, si possible, soit un petit bout de code, soit une URL vers du code mettant en évidence le problème.

Si vous avez du logiciel dont vous pensez que la communauté pourrait tirer parti (que ce soit un programme, une fonction, une extension, ou un simple exemple),
ou si vous avez un document, un article de journal ou de magazine, une thèse, un projet, ou même une annonce commerciale, faites-le savoir aux personnes susceptibles d'être intéressées. 

Il y a des responsables de FAQ pour tous ces domaines, ainsi qu'un forum Usenet
<url url="news:comp.lang.tcl.announce" name="comp.lang.tcl.announce"> que vous pouvez utiliser.

Cela vaut toujours la peine de soumettre vos contributions directement sur le site ftp afin que davantage de personnes puisse dans le futur profiter de votre expérience.

Pour poster sur le forum <url url="news:comp.lang.tcl.announce" name="comp.lang.tcl.announce">, envoyez un email détaillé à <url url="mailto:tcl-announce@mitchell.org" name="tcl-announce">. N'hésitez pas à renvoyer les gens vers votre propre site ftp ou WWW si vous en avez un.

<sect>Un tout petit peu de programmation
<p>

Comme Tcl est un langage interprété, pour exécuter un programme Tcl (qu'on appelle également un script) vous passez normalement le fichier à l'interpréteur Tcl,
wish, par exemple~:
<code>wish hello.tcl
</code>

Vous pouvez aussi utiliser wish en mode interactif et lui donner des commandes à l'invite. 

Il existe un autre interpréteur de Tcl en standard, tclsh, qui comprend seulement le langage Tcl. Tclsh n'a aucune commande de l'interface utilisateur de Tk, donc il n'est pas possible de créer des programmes graphiques avec tclsh.

Certaines applications Tcl libres étendent le langage en ajoutant de nouvelles commandes écrites sous la forme de fonctions C. Dans ce cas, vous devez compiler l'application au lieu de passer seulement son code Tcl à l'interpréteur wish. 
Ce programme applicatif compilé est véritablement, du point de vue de Tcl, une nouvelle version de l'interpréteur wish, avec les nouvelles commandes en C liées dedans. Bien sûr, le programme peut être bien plus qu'un simple interpréteur Tcl. (Note~: vous pouvez aussi utiliser la capacité de chargement automatique de Tcl sur les systèmes qui la supportent).
<sect1>Programme-minute en Tcl
<p>

Tcl a une structure simple. Chaque ligne commence par une nouvelle commande,
par exemple button et un certain nombre d'arguments. Chaque commande est
implémentée comme si c'était une fonction C, qui prend en charge tous les arguments.

Voici un exemple très bateau, le célèbre Hello World écrit en Tcl/Tk~:
<code>&num; Ceci est un commentaire
button .b -text "Hello World" -command exit
pack .b
</code>

Dans cet exemple, vous devez taper les commandes de manière interactive dans tclsh ou wish.

Vous pouvez aussi placer les commandes dans des fichiers de script et les appeler tout comme des scripts shell. Pour reprendre l'exemple précédent, le programme Hello World s'écrirait~:
<code>&num;! /usr/local/bin wish -f
button .b -text "Hello World" -command exit
pack .b
</code>

Mettez ce texte dans un fichier appelé Hello et assurez-vous que wish est installé dans /usr/local/bin (si ce n'est pas le cas, corrigez le chemin d'accès).

Rendez le fichier Hello exécutable, par un~:
<code>chmod 775 Hello
</code>

et lancez-le sous X.

Vous allez voir un bouton marqué Hello World dans une fenêtre~: cliquer dessus ferme la fenêtre. 
<sect>Langage de script~: avantages et inconvénients
<p>

Afin de comprendre l'importance de Tcl/Tk et son futur, je vous recommande la
visite de <url url="http://www.scriptics.com/people/john.ousterhout/"> par <url url="mailto:ouster@scriptics.com" name="John K. Ousterhout ">.
Vous y trouverez des choses à lire sur l'importance des scripts (écrits dans des langages tels que Tcl) et une comparaison avec la programmation système (dans des langages comme le C et le Java).

Pour une lecture à propos des comparaisons, voyez <ref id="prosandcons" name="the comparison discussion">.

Voici un résumé des principaux avantages et inconvénients de Tcl/Tk.
<sect1>Reproches les plus courants à propos de Tcl
<p>
<sect2>Tcl est interprété
<p>

Les données sont traitées de manière primaire comme des chaînes de caractère, 
les programmes écrits en Tcl sont lents. 
Tcl 8.0 essaie de pallier ceci en compilant à un certain degré ainsi qu'en
autorisant différents types de variables.
<sect2>Plusieurs caractéristiques ne sont pas intuitives
<p>

Les commentaires sont des commandes plutôt que de vrais commentaires, les nombres commençant par 0 sont en octal, l'utilisation correcte des guillemets, etc.
Ces aspects sont abordés dans les diverses FAQs.
<sect1>Principaux avantages de Tcl
<p>
<sect2>C'est un langage de script de haut niveau
<p>

Vous avez besoin de beaucoup moins de code pour faire le travail, surtout en comparaison avec des applications Motif ou Win32. En général, le nombre de lignes de code (Line Of Code, LOC) d'un projet logiciel est l'indice de complexité le plus important.

<sect2>Tcl est libre
<p>

Vouz pouvez vous procurer les sources gratuitement sur Internet par la page
Download de Scriptics ou par le site FTP pour Tcl.
<url url="http://www.scriptics.com/software/download.html" name="Le site de base du logiciel"> inclut la version code source, ainsi que des versions binaires pour plates-formes Windows et Macintosh~; ou bien vous pouvez trouver Tcl sur un bon nombre de CD-ROMs pour un coût réduit.

Une lecture à propos de la base libre de Tcl et Tk~:
<url url="http://www.scriptics.com/about/news/qa.html" name="www.scriptics.com/about/news/qa.html"> .
<sect2>Il fonctionne sur de nombreuses plates-formes
<p>

Il existe des versions pour UNIX (Linux... bien sûr), Windows et Macintosh. Exceptées quelques différences entre plates-formes, vos scripts Tcl fonctionneront de la même manière sur tous les systèmes.
<sect2>Il est interprété
<p>

Vous pouvez exécuter directement votre code sans compilation ni édition de liens (même si quelques compilateurs de Tcl sont disponibles).
<sect2>Il est extensible
<p>

Il est aisé d'ajouter vos propres commandes pour étendre le langage Tcl. Vous pouvez les écrire en C ou en Tcl.
<sect2>Il est encapsulable dans vos applications
<p>

L'interpréteur Tcl est purement et simplement un ensemble de fonctions C que vous appelez dans votre code. Cela signifie que vous pouvez utiliser Tcl comme langage applicatif, tout comme un langage de macro pour un tableur.

<sect2>Tcl/Tk est compatible An 2000
<p>

Lisez ce que le créateur de la base Tcl et Tk dit à ce sujet~:
<url url="http://www.scriptics.com/Y2K.html" name="www.scriptics.com/Y2K.html">
.

<sect>Programmes les plus célèbres utilisant Tcl/Tk
<p>

A part les deux implémentations décrites dans <ref id="introduction" name="l'Introduction">, de nombreuses applications sont écrites en Tcl/Tk ou une combinaison de Tcl et de C. Une liste complète de ces implémentations figure à la
<url url="http://www.tclfaq.wservice.com/tcl-faq/part4.html" name="partie 4">
de la Foire Aux Questions sur Tcl/Tk (FAQ). Je vous suggère de visiter 
<url url="http://www.scriptics.com/resource/software/" name="Scriptics' Software Central">.

Un autre bon point de départ est <url url="http://www.NeoSoft.com/tcl/">.

Une des meilleures applications Tcl tournant sous Linux s'appelle <url url="http://people.mainz.netsurf.de/&tilde;bolik/tkdesk/" name="TkDesk">. C'est un gestionnaire de fenêtres et un lanceur d'applications qui fonctionne très bien.

Si vous êtes développeur en Tcl/Tk, n'hésitez pas à 
<url url="mailto:lukaros@tin.it" name="m'envoyer">
une URL (et une description de votre travail) que je puisse ajouter ici.


<sect>Références<label id="references">
<p>

Pour de nombreuses raisons, les gens préfèrent souvent avoir un manuel papier comme référence ou aiment être aidés en ligne par d'autres personnes connectées.

Vous pouvez trouver dans cette section une sélection de livres de référence, de tutoriels, de sites www et forums Usenet.
<sect1>Livres
<p>

Beaucoup de livres concernant Tcl/Tk ont été écrits et vont être publiés.
Je ne vais pas essayer de tous les répertorier (<bf>un autre howto n'y suffirait pas</bf> :) ). Vous trouverez davantage d'informations et des notes complémentaires à~:
<itemize>
<item>
<htmlurl url="http://www.tclconsortium.org/books/index.vet" name="www.tclconsortium.org/books/index.vet">
<item>
<htmlurl url="http://www.amazon.com/exec/obidos/subst/categories/computer-programming/tcl-tk-article/002-8989352-4516417" name="www.amazon.com/exec/obidos/subst/categories/computer-programming/tcl-tk-article/002-8989352-4516417">
<item>Page~: tcl_books.html à l'URL
<htmlurl url="http://starbase.neosoft.com/&percnt;7Eclaird/comp.lang.tcl/" name="starbase-neosoft-tcl-books">
</itemize>

Je vais essayer ici de résumer en quelques lignes les livres que je connais à ce sujet, qui sont tous d'un niveau basique à moyen. Là encore, les gens qui connaissent le sujet ont suffisamment d'informations pour savoir où trouver des livres d'un niveau plus avancé.

<sect2>The Tcl and Tk Toolkit
<p>

Auteur~:
<url url="mailto:ouster@scriptics.com" name="John K. Ousterhout ">

Information sur le WWW à propos de l'ouvrage~:
<htmlurl url="http://cseng.aw.com/bookdetail.qry?ISBN=0&percnt;2D201&percnt;2D63337&percnt;2DX&amp;ptype=0" name="cseng.aw.com/bookdetail.qry?ISBN=0&percnt;2D201&percnt;2D63337&percnt;2DX&amp;ptype=0">

Exemples du livre~:
<url url="ftp://ftp.scriptics.com/pub/tcl/doc/book.examples.Z">

Compléments au livre~:
<url url="http://www.scriptics.com/doc/tk4.0.ps">

Cet ouvrage couvre à l'origine Tcl 7.3 et Tk 3.6.

<sect2>Practical Programming in Tcl and Tk, deuxième édition
<p>
Auteur~:
<url url="mailto:welch@acm.org" name="Brent Welch">

Information sur le WWW à propos de l'ouvrage~:
<url url="http://www.beedub.com/book/">

Table des matières~:
<url url="http://www.beedub.com/book/">

Publicité du livre à la section_50000.html de l'URL
<url url="http://www.borders.com/sections/">

Cette édition révisée décrit Tcl/Tk 8.0 tel qu'il était dans sa période beta.
Les ajouts par rapport à la première édition concernent les sockets, les paquetages, les contextes (namespaces), et une longue section décrivant les changements dans Tcl 7.4, 7.5, 7.6 et 8.0 (et Tk également), Safe Tk, et le Plugin.

<sect2>Tcl and Tk Reference Manual
<p>

Editeurs~:
<url url="mailto:marc@redhat.com" name="Marc Ewing">, Erik Troan

Information sur le WWW à propos de l'ouvrage~:
<url url="http://www.lsl.com/catalog/books/tcltk/">

<sect2>The Visual TCL Handbook, 1/e
<p>

Auteur~:
<url url="mailto:david@inforef.com" name="David Young">

Information sur le WWW à propos de l'ouvrage~:
<url url="http://www.amazon.com/exec/obidos/ASIN/013461674X/qid%3D932034805/002-8225427-0056632">

Un guide complet sur Visual TCL. Ce livre mène le lecteur des concepts de 
base du développement d'interfaces graphiques utilisateur jusqu'à des
développements d'applications significatifs. Le livre se concentre sur
les extensions TCLX et VT, évoquant beaucoup de sujets fondamentaux
pour TCL. VT est une interface graphique basée sur Motif, incompatible
avec Tk. L'intégralité du langage TCL est documentée dans une section
Commands séparée. Il inclut un CD-ROM avec les versions SGI, Solaris,
HP-UX, AIX et Unixware de Visual Tcl.

<sect2>Running Linux
<p>

Auteur~: Matt Welsh et Lar Kaufman

Information sur le WWW à propos de l'ouvrage~:
<url url="http://www.ora.com/catalog/runux2/noframes.html">

(NdT~:
La version française de cet ouvrage est intitulée "Le Système Linux",
aux éditions O'Reilly. Cette adaptation française de René Cougnenc a
été révisée, pour la deuxième édition, par Manuel et Nat Makarévitch. Voir 
<url url="http://www.editions-oreilly.fr/sysad/runux2.html">.

La 3ème édition originale doit sortir en août 1999. Voir 
<url url="http://www.ora.com/catalog/runux3/noframes.html">. Il faudra attendre un peu pour la version française).

C'est un livre de base vraiment bien écrit. Il contient un chapitre sur la 
programmation en Tcl/Tk (ainsi que Perl, C, C++).

<sect2>Tcl/Tk for Dummies (Pour les Nuls)
<p>

Auteur~: Timothy Webster, with Alex Francis

Information sur le WWW à propos de l'ouvrage~:
<url url="http://www.dummies.com/">

Un autre livre dans la série des livres de programmation. Celui-ci se concentre
sur le plugin Tcl comme environnement de programmation.

<sect2>Interactive Web Applications With Tcl/Tk
<p>

Auteurs~: Michael Doyle, Hattie Schroeder

Information sur le WWW à propos de l'ouvrage~:
<url url=" http://www.eolas.com/tcl/">

C'est un livre d'apprentissage par l'exemple, pour les personnes qui savent un
peu programmer sans être experts. Il couvre le développement d'applets
comme applications autonomes et des applications serveurs simples. Il
est fourni avec la boîte à outils Spynergy, qui ajoute diverses
procédures en pur Tcl/Tk pour le traitement distribué, la récupération
d'URL, la génération de HTML, la gestion de bases de données et la
gestion transparente de fichiers quelle que soit la plate-forme, un
éditeur de Tcl, Ed, et un environnement de test, un outil de
conversion d'image, une démonstration des fonctionnalités de Tk, une
version client/serveur d'une application rolodex, un serveur web en
Tcl pur, une application de push en client/serveur, un navigateur web
en Tcl.


<sect1>Manuels en ligne et tutoriels
<p>
<itemize>
<item>John Ousterhout a écrit un guide dans un style ingénierie, qui décrit le codage, la documentation et les conventions de test en usage chez Sun pour le codage de la base en C de Tcl, et l'a mis à disposition des autres développeurs Tcl/Tk. Il se trouve à
<url url="ftp://ftp.scriptics.com/pub/tcl/doc/engManual.tar.Z">
<item>Un second guide, couvrant l'écriture de scripts Tcl, peut être récupéré à <url url="ftp://ftp.scriptics.com/pub/tcl/doc/styleGuide.tar.gz">.
<!-- NdT : ceci n'est plus valable :
D'autres versions sont sur <url url="http://sunscript.sun.com/techcorner/styleGuide.ps" name="sunscript.sun.com/techcorner/styleGuide.ps">.-->
<item>
<url url="http://http2.brunel.ac.uk:8080/&tilde;csstddm/TCL2/TCL2.html" name="A brief introduction to TCL/TK "> par  <url url=" mailto:csstddm@brunel.ac.uk" name="David Martland ">.
<item>Un autre tutoriel intitulé 
<url url="http://www.scism.sbu.ac.uk/tkteach/" name="User interfaces with Tcl/Tk"> a été écrit par  <url url="mailto:fintan@sbu.ac.uk" name="Fintan Culwin ">.
<item>Même si vous devriez avoir les pages de manuel de Tcl/Tk sur votre système, voici un autre endroit où chercher~:
<url url="http://cuiwww.unige.ch/eao/www/TclTkMan/Man.html" name="TCL Manual Pages (from TCL7.4)-Tk Manual Pages (from TK4.0)">.
<item>
<url url="http://www.itd.clrc.ac.uk/Activity/TclTk" name="The Tcl/Tk Cookbook"> fournit beaucoup d'informations pour débuter.
</itemize>


<sect1>Sites World Wide Web 
<p>

Il existe de nombreuses ressources WWW qui offrent des informations complémentaires sur beaucoup d'aspects de Tcl et de ses extensions.
<itemize>
<item>Référez-vous à
<url url="http://www.tclfaq.wservice.com/tcl-faq/part2.html" name="la FAQ-Tcl (partie 2)"> pour des liens en quantité vers de la documentation Tcl/Tk et des sites web.
<item>Lancez votre navigateur web sur <url url="http://www.tcltk.com" name="Tcl/Tk Information">~: un site avec beaucoup de liens vers des ressources Tcl/Tk sur le web (informations, Extensions, Outils, Entraînement et Evénements).
<item>Jetez un oeil à
<url url="http://www.tclconsortium.org/" name="Tcl-Consortium">~: une organisation à but non-lucratif pour promouvoir Tcl/Tk et soutenir la communauté des développeurs.
<item>Allez naviguer à
<url url="http://www.NeoSoft.com/tcl/" name="l'Archive Officielle des Sources des Contributions"> pour le Tool Command Language (TCL) et la boîte à outils Tk, hébergée par Neosoft, Inc.
<item><label id="prosandcons">Pour une discussion à propos du pour et du contre des principaux langages de script~:
<url url="http://www.sun.com/sunworldonline/swol-10-1997/swol-10-scripting.html
" name="article paru dans SunWorld">, par <url url=" mailto:claird@Starbase.NeoSoft.com" name="Cameron Laird ">
<item>Une page web qui contient diverses comparaisons entre Tcl/Tk et d'autres systèmes similaires. La plupart d'entre elles sont tirées de "comp.lang.tcl", 
l'auteur serait heureux d'ajouter tout article important que vous, oui vous !, voudrez lui envoyer~: <url url="http://icemcfd.com/tcl/comparison.html" name="Comparaison"> par <url url="mailto:wayne@icemcfd.com" name="Wayne Christopher">.
<item>
<url url="http://herzberg.ca.sandia.gov/TclCourse/" name="Le cours de Tcl/Tk de E.J. Friedman-Hill's">~:
ce document est disponible seulement sous forme PowerPoint et en HTML de basse qualité (en format HTML, toutes les figures et une partie du texte sont manquantes).
</itemize>


<sect1>Autres documents &amp; Foires Aux Questions
<p>

Beaucoup de matière est disponible sur l'Internet~: papiers introductifs, 
papiers blancs, tutoriels, transparents, versions PostScript de brouillons d'ouvrages publiés, et bien d'autres choses.

Pour une référence complète, veuillez s'il vous plaît jeter un oeil à l'excellente <url url="http://www.tclfaq.wservice.com/tcl-faq/" name="FAQ Tcl"> .
<sect1>Forum Usenet
<p>

<url url="news:comp.lang.tcl" name="comp.lang.tcl"> est un groupe de discussion non modéré, créé pour les échanges sur le langage de programmation Tcl et les outils qui utilisent Tcl sous une forme quelconque, tels que la boîte à outils Tk pour le système X Window, le Tcl étendu, et expect.

(NdT~: le forum équivalent dans la hiérarchie francophone fr.* est
<url url="news:fr.comp.lang.tcl" name="fr.comp.lang.tcl">).

Pour les annonces relatives à Tcl/Tk, regardez toujours 
<url url="news:comp.lang.tcl.announce" name="comp.lang.tcl.announce">~:
vous y trouverez les annonces de versions finales, de patchs, de nouvelles applications, etc.

Je précise à nouveau que la FAQ se trouve à
<url url="http://www.tclfaq.wservice.com/tcl-faq/" name="FAQ Tcl">.
<sect>Termes de la licence de Tcl/Tk<label id="license">
<p>

Les termes suivants s'appliquent à toutes les versions diffusées de la base 
de Tcl/Tk, au plug-in Tcl/Tk navigateur version 2.0, et à TclBlend et Jacl 
version 1.0. Veuillez noter que les outils TclPro sont sous une autre licence.
La présente licence est incluse dans les distributions standard de Tcl/Tk 
en tant que fichier "licence.terms".

LICENCE DE TCL/TK

Ce logiciel est sous copyright des Régents de l'Université de Californie,
Sun Microsystems, Inc., Scriptics Corporation, et autres parties. Les termes
suivants s'appliquent à tous les fichiers associés au logiciel à moins que ce
ne soit explicitement mentionné dans les fichiers individuellement.

Les auteurs accordent ici la permission d'utiliser, copier, modifier, distribuer, et placer sous licence ce logiciel et sa documentation dans n'importe quel but, pour autant que les notes de copyright existantes soient conservées dans toutes les copies et que la présente note soit incluse telle quelle dans toute diffusion. Aucun accord écrit, licence ou droit d'auteur n'est requis pour un usage autorisé. Les modifications de ce logiciel devraient être placées sous copyright par leurs auteurs et ne nécessitent pas de suivre les termes de la licence décrits ici, pour autant que les nouveaux termes soient clairement indiqués sur la première page de chaque fichier sur lequel ils s'appliquent.

<bf>EN AUCUN CAS LES AUTEURS OU DISTRIBUTEURS NE POURRONT ETRE TENUS POUR 
RESPONSABLES DE DOMMAGES DIRECTS, INDIRECTS, PARTICULIERS, ACCIDENTELS OU
COLLATERAUX PROVOQUES PAR L'UTILISATION DE CE LOGICIEL, DE SA DOCUMENTATION,
OU QUELCONQUES CONSEQUENCES DE CECI, MEME SI LES AUTEURS ONT ETE AVERTIS DE
LA POSSIBILITE DE CES DOMMAGES.</bf>

<bf>LES AUTEURS ET DISTRIBUTEURS SE DEGAGENT PRECISEMENT DE TOUTES GARANTIES, 
INCLUANT, MAIS PAS EXCLUSIVEMENT, LA GARANTIE IMPLICITE DE COMMERCIALISABILITE, 
L'ADEQUATION A UN BUT PARTICULIER, ET LA NON-CONTREFACON. CE LOGICIEL EST
FOURNI &laquo;~TEL QUEL~&raquo;, LES AUTEURS ET DISTRIBUTEURS N'ONT AUCUNE OBLIGATION DE
MAINTENANCE, SUPPORT, MISE A JOUR, EXTENSIONS, OU MODIFICATIONS.</bf>

UTILISATION GOUVERNEMENTALE~: Si vous acquérez ce logiciel pour le compte
du gouvernement américain, le gouvernement n'aura que des droits restreints
sur le logiciel et la documentation associée, tel qu'il est défini dans les
lois fédérales sur l'acquisition (Federal Acquisition Regulations - FARs) à
la clause 52.227.19 (c) (2). Si vous acquérez ce logiciel pour le compte du
ministère de la défense (Department of Defense, DoD), le logiciel sera 
classé comme logiciel commercial (Commercial Computer Software) et le
gouvernement n'aura que des droits restreints, tel que défini dans la clause 
252.227-7013 (c) (1) des DFARs. Nonobstant ce qui précède, les auteurs
accordent au gouvernement américain et aux personnes agissant en son nom
la permission d'utiliser et de distribuer le logiciel selon les termes
spécifiés dans la présente licence.

</article>


 
