FazBrowse Wikipedia Viewer | Main Page |
Search Wikipedia:
|
Viewing: https://fr.wikipedia.org/wiki/Tool_Command_Language

Tool Command Language — Wikipédia

Contents
Caractéristiques
    Type des variables
        Généralités
        Nombres
        Tableaux associatifs
    Structures de contrôle
    Substitutions
Déploiement et exécution
    Classique
    Starkit
    Starpack
Programmation orientée objet
Internet et réseaux
    Tcl Plugin et les tclets
    Serveurs web
        Tclhttpd
        Apache, mod_tcl, Rivet et Websh
        AOLserver
    Système de gestion de contenu
    Expect
Organisation et aspects communautaires
    Développement de Tcl-Tk
    Ressources communautaires
Histoire de Tcl-Tk
Extensions et bibliothèques les plus utilisées
Produits qui utilisent Tcl-Tk
    Articles connexes
    Liens externes

Pour les articles homonymes, voir Tcl.

Cet article contient une ou plusieurs listes (avril 2023).

Ces listes gagneraient à être rédigées sous la forme de paragraphes synthétiques, plus agréables à la lecture, les listes pouvant être aussi introduites par une partie rédigée et sourcée, de façon à bien resituer les différents items.
D'autre part, Wikipédia n'a pas pour rôle de constituer une base de données et privilégie un contenu encyclopédique plutôt que la recherche de l'exhaustivité.

Typage dynamique (tout est chaîne de caractères) Influencé par C, Lisp, Shell, Awk, SCL A influencé Python, PowerShell, Tea Implémentations TCL, Jacl, Jim, Hecl Système d'exploitation Multi-plateforme Licence BSD Site web http://www.tcl.tk/ Extension de fichier .tcl modifier 

Caractéristiques

modifiermodifier le code

Réputé économe en mémoire vive, Tcl est un langage interprété multiplateforme.

L’un des mots d’ordre du langage est résumé sous la forme de tout est une chaîne de caractères (traduction littérale de %sets[Somme$a38];# a, transmis par valeur, ne peut être modifié ... %MiseAjourlisteA$x$y;# listeA, transmis par référence, est modifié par MiseAJour ...

La notation usuelle x=f(y) s'écrit en Tcl set x [f $y].

Type des variables

modifiermodifier le code

Généralités

modifiermodifier le code

Les variables ne sont pas typées explicitement : elles le sont par la première affectation de contenu qu'on y opère, ou par la commande qui les crée (par ex. l'instruction list pour créer une liste). On peut reconnaître ainsi cinq types de structure dans tcl :

Les quatre premiers types sont dits types scalaires, ils peuvent donc être passés par valeur et retournés à l'appel d'une procédure. Ces types scalaires sont convertis automatiquement dans le type adéquat, par exemple, une chaîne de caractères peut devenir une liste :

true\"} else {puts \"$bool => false\"}}\n0 => false\n1 => true\n2 => true\nfalse => false\ntrue => true\nno => false\nyes => true\nn => false\ny => true\n"}}'>%foreachbool[list012falsetruenoyesny]{if$bool{puts"$bool => true"}else{puts"$bool => false"}} 0=>false 1=>true 2=>true false=>false true=>true no=>false yes=>true n=>false y=>true

Nombres

modifiermodifier le code

Les nombres sont traités comme des chaînes de caractères sauf dans les expressions arithmétiques où ils sont d'abord convertis en binaire.

Tableaux associatifs

modifiermodifier le code

Les tableaux associatifs clé-valeur implémentent un type table de hachage, sont très rapides et peuvent être très grands. Une clé, indice du tableau, peut être une chaîne de caractères ou une liste, sans limite de taille. On peut, par exemple, utiliser un texte de 10000 lignes comme clé.

Structures de contrôle

modifiermodifier le code

Contrairement à ce qui se passe pour d'autres langages, les mots qui servent aux structures de contrôles en Tcl ne sont pas des mots réservés avec une syntaxe spéciale. "for", "if", "while" sont des procédures qui obéissent à la syntaxe Tcl habituelle.

proc!x{expr{$x<2?1:$x*[![incrx-1]]}}

Avec une boucle foreach parcourant la liste :

setsequence"ACGTATTACGGTCCATGAACGAATTGGGATATCGACCATGATGGAATTCTG" puts[stringmap{GARTCYGTKACMGCSATW}$sequence]

Ensuite donner la fréquence d'apparition des lettres (A, C, T, G) dans la séquence en utilisant un tableau associatif (array), la commande split pour isoler chaque motif et la commande d'introspection (info) de l'interprète :

$compte($nucleotide)" }
%putsx x %setxa a %puts"x $x" xa %puts0 0 %set01 1 %puts$0 1

Substitutions

modifiermodifier le code

Les substitutions peuvent donner des résultats surprenants.

0} { }# <----- ligne de code commentée dans laquelle les groupes d'accolades sont entiers. if{$x==1}{ puts"Dans clause if" }

Déploiement et exécution

modifiermodifier le code
Il s'agit d'une capture d'écran à utiliser sur Tk dans la boîte d'informations sur le côté droit comme capture d'écran pour présenter la plupart des widgets de la boîte à outils de widgets Tk.

Classique

modifiermodifier le code

Sous Linux et les autres plates-formes dérivées d'Unix, l'interprète Tcl-Tk est souvent installé par défaut. Si ce n'est pas le cas, il est nécessaire de compiler le code source à l'aide d'un compilateur C et ensuite de procéder à l'installation. L'exécution d'un code Tcl s'effectue en saisissant à l'invite du shell :

tclsh fichier.tcl

ou alors en lançant l'interprète via tclsh et ensuite en saisissant à l'invite de l'interprète la ligne suivante :

source fichier.tcl

Cependant un script Tcl peut s'exécuter directement (un peu comme un script shell) en ajoutant la ligne suivante au début du code :

#!/usr/bin/env tclsh

Sous Windows, il est bien sûr possible de compiler le code source mais la meilleure option demeure quand même l'installation de Tcl-Tk à partir d'une distribution précompilée. Pour exécuter un code Tcl, il suffit de double-cliquer sur celui-ci. À la différence d'Unix, il n'y a pas de console ouverte par défaut sous Windows. Autrement dit, si vous exécutez un code Tcl en imprimant des résultats sur la sortie standard, rien ne s'affichera. Il faut ajouter au préalable la ligne suivante en début de code :

console show

On peut aussi utiliser l'interprète wish qui gère en plus le toolkit Tk.

Starkit

modifiermodifier le code

Starkitest l'acronyme de "StandAlone Runtime called Tclkit". C'est un mécanisme qui consiste à regrouper dans un seul fichier tous les éléments qui composent une application Tcl-Tk (sources, images, bibliothèques, extensions, ...) avec la structure dans une sorte de système de fichier virtuel. Le fichier starkit obtenu, portant l'extension .kit, est exécuté par l'intermédiaire de Tclkit, un interprète Tcl-Tk disponible pour toutes les plates-formes cibles. En termes de déploiement cela signifie qu'il y a en tout et pour tout que deux fichiers à copier sur le disque : l'interprète Tclkit + le starkit. Nul besoin d'installer Tcl-Tk. Remarquons qu'un starkit peut être exécuté par un interprète classique (tclsh, wish).

Starpack

modifiermodifier le code

Le Starpack est un exécutable dans lequel sont incorporés les codes source d'une application sous la forme d'un starkit avec un interprète Tcl-Tk. En termes de déploiement cela signifie simplement qu'il n'y a qu'un seul fichier. Son installation consiste à le copier sur le disque et sa désinstallation consiste à le supprimer du disque. À la différence du starkit, le starpack est spécifique à la plate-forme cible. Encore une fois, nul besoin d'installer Tcl-Tk.

Programmation orientée objet

modifiermodifier le code

Tcl dispose nativement de la programmation orientée objet depuis la version 8.6 (# Opérateur somme namespaceimport::tcl::mathop::* puts[+12345678910] # Maximum namespaceimport::tcl::mathfunc::max max423756-42 # Cryptage RC4 namespaceimport::tcl::rc4::* setcrypt[rc4-keySecret"Hello, World!"]

Internet et réseaux

modifiermodifier le code

Tcl Plugin et les tclets

modifiermodifier le code

Le Tcl Plugin est un plugin qui permet d'exécuter des tclets (applets écrits en Tcl-Tk) dans un navigateur Web. Ce dernier interprète une application Tcl-Tk dans un environnement sécurisé appelé Safe-Tcl qui garantit l'intégrité de l'application hôte (le navigateur dans ce cas).

Serveurs web

modifiermodifier le code

Comme la plupart des langages de script Tcl a vocation à être exécuté à partir d'un serveur HTTP.

Tclhttpd

modifiermodifier le code

Tclhttpd est serveur web léger écrit uniquement en Tcl. Il a l'avantage d'être extensible à souhait et multiplateforme. Il peut servir de base à l'écriture d'un serveur d'application ou être embarqué pour gérer par exemple un système d'aide en ligne ou un moteur de recherche sur CD-ROM.

Apache, mod_tcl, Rivet et Websh

modifiermodifier le code

À partir du serveur HTTP Apache plusieurs options sont disponibles. Il y a tout d'abord le module mod_tcl qui se contente d'embarquer un interprète Tcl. Et ensuite les modules Rivet et Websh qui sont plus élaborés avec la prise en charge de la gestion des bases de données et des systèmes de templates.

AOLserver

modifiermodifier le code

AOLserver est un serveur web open source développé par la société AOL qui embarque un interprète Tcl. Il est multithread, extensible, utilisable à grande échelle et gère les pages web statiques et dynamiques. Il intègre un support complet des bases de données.

Système de gestion de contenu

modifiermodifier le code

Le système de gestion de contenu le plus connu basé sur Tcl est OpenACS (Open Architecture Community System). Il s'appuie sur le serveur web AOLserver et supporte les bases de données Oracle et PostgreSQL. OpenACS est utilisé pour concevoir de sites web collaboratifs, des sites de commerce en ligne, des PGI ou des systèmes d'apprentissage en ligne (e-learning) comme .LRN ou dotFolio.

Expect

modifiermodifier le code

Expect est un outil basé sur Tcl-Tk pour automatiser les applications interactives telles que telnet, ftp fsck, rlogin, rsh ou ssh, ou pour automatiser des tests. Il est utilisé par exemple pour l'administration système.

Organisation et aspects communautaires

modifiermodifier le code

Développement de Tcl-Tk

modifiermodifier le code

Le développement de Tcl-Tk est assuré par de nombreuses personnes qui apportent leurs contributions sous la forme de nouvelles fonctionnalités, de patches, de rapports de bogues ou de documentations. Pour fédérer cet effort de développement, a été créé en 2000 le TCT (Tcl Core Team).

Le TCT est constitué d'un collège de 12 experts, dont John Ousterhout ne fait plus partie. Son activité est coordonnée par l'intermédiaire de TIPs (Tcl improvement proposals). Le TIP est un document qui décrit un projet d'amélioration de Tcl. N'importe qui peut écrire un TIP et le soumettre au TCT pour discussion et approbation lors d'un vote.

Un site rassemble tous les TIPs et renseigne sur leur état d'avancement.

Pour ce qui est de la partie opérationnelle le développement collaboratif de Tcl-Tk est hébergé sur un site spécifique avec le logiciel de gestion de versions décentralisé Fossil.

Par rapport à d'autres langages de script, le rythme de publication des versions importantes de Tcl-Tk n'est pas annuel. La priorité est avant tout axée sur la stabilité. Il y a d'ailleurs une rétrocompatibilité pour toutes les versions de la branche 8.x.

Ressources communautaires

modifiermodifier le code

L'activité d'échange et de communication entre utilisateurs se concentre essentiellement sur le wiki et le groupe de discussion. Les wikis les plus actifs sont le wiki anglophone et francophone. Il en est de même pour les groupes de discussion sur Usenet avec comp.lang.tcl et fr.comp.lang.tcl. Un chat permanent est organisé en anglais.

À cela vient s'ajouter le site officiel de Tcl-Tk et les portails allemand, russe, chinois, coréen] et japonais.

Une conférence annuelle a lieu aux États-Unis où sont présentés des cas d'utilisation de Tcl-Tk dans l'industrie par différents intervenants. C'est par ailleurs l'occasion de faire le point sur la feuille de route du langage. Dans la même année une conférence européenne (EuroTcl) se tient en Allemagne ou en France selon le même principe.

Des groupes d'utilisateurs existent aux États-Unis, Canada, Allemagne, Pays-Bas, Danemark, Angleterre et Corée.

Histoire de Tcl-Tk

modifiermodifier le code

L'idée du langage Tcl est venue à John K. Ousterhout de ses travaux sur les outils logiciels d'aide à la conception de circuits intégrés à l'Université de Berkeley en Californie au début des années 1980. John Ousterhout et ses étudiants avaient développé quelques outils interactifs. Ils étaient tous dotés d'un langage de commande différent ce qui finissait par rendre compliqué l'enchaînement des tâches.

En 1987, bénéficiant d'un congé sabbatique au Laboratoire de Recherche de Digital Equipment Corp., John Ousterhout se décida à harmoniser les différents langages de commande en créant un langage unique pour contrôler les applications. C'est ainsi que naquit Tcl (Tool Command Language) avec une syntaxe influencée par les langages C, Lisp, Shell et Awk. Les premiers tests furent effectués sur une station DEC 3100 et une station SUN-3/75. Tcl représentait alors 7000 lignes de code en C dont la moitié était des commentaires. Il ne fonctionnait que sur les systèmes UNIX.

Les objectifs primordiaux de ce langage interprété étaient les suivants :

Tcl commença à être distribué lors d'une conférence industrielle à l'Université de Berkeley en 1989. En avril 1996 avec Tcl7.5/Tk4.1. S'ensuivirent d'autres améliorations dont : un compilateur de bytecode (qui augmenta la vitesse d'un facteur 10), le support des espaces de nom (namespace) et un plugin Tcl qui permettait d'exécuter des tclets (applets écrits en Tcl) dans un navigateur Web. Toutes ces innovations correspondaient à la version de Tcl-Tk 8.0 sortie en mai 2000, la société Scriptics prit le nom d'Ajuba Solutions s'orientant plus vers des solutions de serveurs basés sur Tcl et la technologie XML, en plein développement à cette période.

En décembre 2007 Tcl-Tk 8.5. Cette version apporte de nombreux changements pour Tcl-Tk en allant vers la programmation fonctionnelle.

En 20 décembre 2012 sort la version 8.6 de Tcl-Tk. En plus d'être dotée d'un système objet, elle supporte la récursion terminale, les coroutines, la continuation et la programmation concurrente.

Le 20 décembre 2007

8.417 août 1999 8.1

(*): spécifique à la plateforme Windows

Extensions et bibliothèques les plus utilisées

modifiermodifier le code

Graphisme :

Son :

Internet et réseaux :

Système de gestion de base de données :

Spécifique à Windows :

Autres :

Produits qui utilisent Tcl-Tk

modifiermodifier le code
  1. ↑ « [TCLCORE] Tcl 9.1.0 RELEASED », 29 septembre 2026 (consulté le 4 octobre 2026)
  2. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 « http://core.tcl.tk/tcl/finfo?name=changes »
  3. ↑ « https://sourceforge.net/projects/tcl/files/Tcl/8.7a1/tcltk-release-notes-8.7a1.txt/view »
  4. ↑ (en) « Tcl / Tk 8.7a5 RELEASED », 18 juin 2021 (consulté le 16 octobre 2021)
  5. ↑ « [TCLCORE] Tcl/Tk 9.0.0 Release Candidates », 10 septembre 2024 (consulté le 17 septembre 2024)
  6. ↑ Cf. infra § Ressources communautaires
  7. ↑ « ActiveTcl » [archive du 16 février 2003], sur activestate.com via Internet Archive (consulté le 15 août 2026).
  8. ↑ (en) « Jim », sur tcl.tk (consulté le 15 août 2026).
  9. ↑ (en) « NaTcl » [archive du 27 juin 2017], sur tcl.tk via Internet Archive.
  10. ↑ avril 2004, pp66-69.
  11. Articles connexes

    modifiermodifier le code

    Liens externes

    modifiermodifier le code
Langages de programmation
Concurrents
Déclaratifs
Fonctionnels
Impératifs
Orientés objet

View original on Wikipedia | Back | FazBrowse Home