JM. Philippe

 

J'ai découvert Tcl grâce à une collaboration universitaire et, après quelques jours de mise en route, j'ai vite compris que c'était un outil très pratique : simplicité, souplesse, concision, le juste nécessaire... Mon coup de coeur a été les expressions régulières ! Depuis je l'utilise pour réaliser de petites applications au boulot, pour effectuer des tâches répétitives et pour générer notre album photo à la maison. Il est devenu pour moi la référence du langage de programmation grand public. Oups, j'ai oublié de dire, c'est quand même notable, que je l'utilise avec Tcl httpd pour faire un serveur web de calcul sur notre Intranet.

Mon seul regret est de ne pouvoir faire de calcul numérique et scientifique aussi facilement que sous Python ou Matlab. Peut-être un jour ? (1)

Site perso

Un jour je prendrai le temps de faire un site perso où je mettrai quelques scripts qui me facilitent la vie et peut-être d'autres bricolages...


(1) RS Peux-tu donner des exemples de ce qu'on ne peut pas faire facilement ? On peut toujours ajouter des commandes au fur et à mesure de ses besoins...


JM. Philippe Voilà un petit exemple en Matlab (en Python la syntaxe diffère un peu, mais la concision est la même). Je suis conscient que ce n'est pas forcément très facile à comprendre lorsqu'on ne pratique pas le genre de raccourci que Matlab (ou Python) permet. Bon, bien sûr on peut le coder en Tcl, mais l'intérêt de Matlab et Python (+ ...) est que c'est déjà fait ! Plus exactement, je n'ai pas encore trouvé le package Tcl qui le fait. J'aimerais bien... (et je n'ai évidemment pas le temps de m'y coller)

NB: quand je dis Python, il s'agit de Python + SciPy (http://www.scipy.org/) + matplotlib (http://matplotlib.sourceforge.net/).

For our foreign readers (since this page was referenced in a recent Dr. Dobb's weekly news mail): here is a small Matlab code sample which would be as short as it is using Python (+ SciPy + matplotlib indeed). Let me know if you have ever found a (open source) Tcl extension that provides such powerfull computation features. I would really be glad since I have no time to do this by myself...

 % calculation of a moving standard deviation on a signal set (the matrix columns) that is first undersampled
 NbrPts = size(Signals, 1);		% nbr de lignes de la matrice = nbr de pts des signaux
 NbrCol = floor(NbrPts / UnderSamp);	% utilisé pour le sous-échantillonnage
 for k = 1:SigNbr
 	% sous-échantillonner le signal
 	% ! ruse : on crée une matrice en mettant 'UnderSamp' points de 'RedSignal' dans chaque colonne, puis matlab calcule les moyenne de chaque colonne -> équivalent à calculer la moyenne sur des blocs de 'UnderSamp' points juxtaposés le long du signal
 	RedSignal = Signals(1:NbrCol*UnderSamp, k);			% on récupère un nbr de points du signal qui permet de faire la matrice
 	RedSignal = mean(reshape(RedSignal, UnderSamp, NbrCol))';	% reshape fait la matrice, mean calcule la moyenne de chaque colonne -> on obtient un vecteur, donc un signal

 	% écart type glissant
 	b = ones(1, FenSize);		% calcul des moments glissants d'ordre 1 et 2
 	m1 = filter(b, 1, RedSignal);	% on passe une moyenne glissante sur y et y^2
 	m2 = filter(b, 1, RedSignal.^2);
 	mu = m1 / FenSize;		% développement de la formule de l'écart type
 	EcartType(:,k) = sqrt(1/FenSize * m2 - mu .* mu);
 end

AM C'est vrai que je ne comprend pas tous les details de cet exemple-la, mais je voudrais offrir au moins quelques solution partielles portant au probleme de manipuler des vecteurs et des matrices de donnees numeriques:

D'accord, il n'a pas un biblitoheque aussi puissant que MATLAB, ou meme SciPy (que je ne connais pas, sauf par nom), mais peut-etre il existe plus que tu pense :).


JM. Philippe Tu as raison Arjen on peut effectivement faire un minimum de calcul "numérique" sous Tcl. Cependant pour le moment les fonctionnalités des packages que tu cites sont (malheureusement) bien moins avancées que ce que tu trouves sous Python. En plus SciPy rassemble l'essentiel de ce qui concerne le calcul de sorte qu'il n'y a plus à aller à la pêche.

D'une manière plus philosophique, il me semble que le problème de Tcl pour le calcul c'est la syntaxe. On a déjà du mal à convaincre les informaticiens que Tcl c'est génial et la syntaxe déroutante au premier abord est pour moi la raison principale (voir http://www.scriptol.org/choose.php rubrique Tcl par exemple). S'il faut encore convaincre les scientifiques qu'il faut abandonner la syntaxe a = b + c, je penses qu'il va falloir vraiment très longtemps... A mon humble avis, ils n'auraient pas tout à fait tord d'être réticents : c'est à l'outil informatique de s'adapter aux problèmes des utilisateurs et non l'inverse. Or cela fait des siècles que l'on écrit les maths de cette manière, ce qu'il manque donc à Tcl c'est de pouvoir écrire du calcul naturellement. Pour ce qui est de la syntaxe du langage, ça ne fait que quelques décennies qu'on programme, le problème me paraît donc tout à fait différent et le succès grandissant des langages de script montre que tout est encore ouvert.

NB: je ne défends pas particulièrement Python que je découvre depuis 2 ou 3 mois. Mon avis pour le moment est que Python est moins bien conçu que Tcl, il est moins consistant et certains choix son largement discutables. Par ailleurs la documentation est un vrai labyrinthe, ceux qui critiquent la doc de Tcl devraient aller voir chez Python pour se rendre compte qu'en fait elle très bien. Peut-être cela pourrait constituer une page à part entière, mais je ne vois pas bien pourquoi inscrire seulement une page 'Tcl vs. Python', il faudrait un canevas plus général et donc plus de matière...

AM C'est bien inutile et contraproductif de commencer des guerres contre une autre langue. Ce qui est plus interessant est: quels sont les aspects qui peuvent avancer la langue ou qui, apparemment, la mettent a une desavantage. La documentation de Python est si mauvaise? J'en suis surpris! (Mais je ne la connais pas que par d'anecdotes ...)

Kroc La seule bonne manière de comparer des langages de programmation c'est de dire ce qu'ils font et ne font pas (voir http://www.tcl.tk/advocacy/ par exemple). Tout jugement qualitif est affaire de goût, donc partial. Par exemple, je trouve Tcl facile à lire et sa syntaxe me semble logique, ce qui ne veut pas dire qu'elle l'est. Je suppose que ça dépend des autres langages que l'on connait : plus ils seront éloignés de Tcl et plus Tcl semblera déroutant.

JM. Philippe Vous noterez que j'ai soigneusement indiqué mon avis et en plus pour le moment ;-).

Personnellement je ne vois pas trop comment une page comme http://www.tcl.tk/advocacy/ peut t'aider à choisir entre Tcl et Python si tu ne connais pas les deux suffisamment : ils ont exactement le même score ! Par ailleurs il me semble qu'on peut quand même comparer les langages plus dans le détail (ce qui suppose de bien les connaître...) sans se lancer dans une guerre partiale et interminable, il faut simplement faire preuve d'objectivité - ce qui est difficile, je reconnais. Et il existe des éléments factuels indéniables pour effectuer ce genre de comparaisons. Deux petits exemples :

Il me semble que ces éléments dépassent le simple j'aime ou j'aime pas et permettent de réellement différencier ces langages. Bien sûr, je suppose dans cette argumentation que l'utilisateur normal du langage cherche à se simplifier la vie : le moins d'effort pour le meilleur résultat. Donc tu as raison, s'il préfère programmer en assembleur pour maîtriser (!!!) tout ce que la machine fait, on ne peut plus rien pour lui, c'est son choix et ma comparaison est tout à fait partiale pour lui. Il suffit donJL