The Linux Tcl and Tk HOWTO

Luca Rossetti [1]lukaros@tin.it

   v0.2, 07 Novembre 1998
     __________________________________________________________________

   Questo documento descrive l'approccio di Linux a Tcl, un linguaggio di
   script. È un linguaggio interpretato facile da imparare, che usa un
   approccio non tipizzato per ottenere un più alto livello di
   programmazione ed un più rapido sviluppo di applicazioni. Il toolkit Tk
   è un ambiente di programmazione per creare interfacce grafiche per gli
   utenti (GUI) in sistemi X Window. Le sue proprietà includono la
   possibilità di estendere ed integrarsi in altre applicazioni, sviluppo
   rapido e facilità di utilizzo. Insieme, Tcl e Tk forniscono molti
   benefici sia agli sviluppatori di applicazioni che agli utenti.
   Interfacce basate su Tk tendono ad essere molto più adattabili e
   dinamiche di quelle create con toolkit basati su C o su C++. Tk
   implementa l'aspetto e le funzioni di Motif. Un gran numero di
   applicazioni per X sono state realizzate interamente in Tk, senza
   scrivere alcun nuovo comando specifico dell'applicazione. Traduzione a
   cura di Ivan Bazzi. Revisione di Elisabetta Galli. Per versioni
   aggiornate di questo documento, e per trovare altra documentazione in
   italiano sul software libero, visitare il sito dell' [2]ILDP
     __________________________________________________________________

1. Introduzione

   Questo è l'HOWTO per Tcl e Tk per Linux. Va inteso come riferimento per
   Linux, per coprire tutto quello che si dovrebbe sapere
   sull'installazione, configurazione e come introduzione allo sviluppo in
   Tcl e Tk. Vengono analizzate la storia ed alcuni pro e contro
   riguardanti Tcl e Tk in Linux e vengono anche indicati riferimenti a
   molte altre fonti d'informazione su vari argomenti relativi a questo
   semplice ma potente linguaggio di script.

   Se si è mai ricompilato un proprio kernel Linux all'interno di X usando
   il comando
     __________________________________________________________________

make xconfig
     __________________________________________________________________

   sicuramente si è avuto modo di confrontarsi con la forza di questo
   semplice ma potente linguaggio per script.

   Dopo aver eseguito il primo passo nella ricompilazione del kernel,
   viene eseguito uno script chiamato kconfig.tk tramite wish
   (l'interprete Tcl). Appare la finestra di configurazione del kernel di
   Linux. Invece di rispondere ad una serie di domande, questo strumento
   di configurazione basato su X permette di usare caselle di spunta per
   selezionare quali opzioni del kernel abilitare.

   Il sistema memorizza le ultime opzioni di configurazione, cosicché ogni
   volta che viene lanciato bisognerà solo aggiungere o rimuovere qualche
   spunta senza bisogno di reinserire tutto l'insieme di opzioni. Inoltre
   si può riempire tutto (o in parte) l'elenco delle opzioni del kernel
   nell'ordine che si desidera. Dopo questo passo semplificato si può
   ricompilare il kernel nel modo tradizionale.

   In realtà c'è un altro caso famoso. Si è mai usato "printtool"?
   (Printer Config Tool (C) Copyright 1994 di [3]Red Hat Software -
   autore: Michael Callahan). Dopo aver installato una distribuzione Red
   Hat sarà capitato di usarlo per predisporre i servizi di stampa. Bene,
   l'interfaccia di printtool è principalmente uno script Tcl/Tk.

   Per chi non conoscesse Red Hat, mi si lasci dire come si possa
   facilmente configurare le stampanti semplicemente riempiendo qualche
   campo di testo e qualche casella di spunta.

   Il programma in sé si prende cura di predisporre i servizi di stampa
   attraverso la creazione della directory di spool, scrive il file
   /etc/printcap e il filtro della stampante, riavvia lpd e prova il
   filtro con pagine ascii o postscript. Consente di manipolare le opzioni
   ghostscript (cioé scegliere sino a 8 pagine per pagina in uscita e
   impostare i margini), ha una guida in linea e molte altre possibilità.

   Qual'è la differenza rispetto ad altre implementazioni di servizi di
   stampa?

   Tutto si ottiene utilizzando Tcl/Tk come una "colla" tra applicazioni
   consolidate, operando su normali file di configurazione di Linux in una
   finestra visuale e interattiva sotto X-Window. Non è stato scritto
   alcun nuovo comando specifico dell'applicazione.

1.1 Scopo di questo documento

   Attualmente il documento si limita a dare un riferimento iniziale
   all'utente Linux; nelle versioni future si cercherà di incorporare un
   piccolo "Tutorial di programmazione". Mi si lasci ripetere che questo
   documento non è (e non vuole sostituire) un "manuale utente" o un
   "riferimento" omnicomprensivo per lo sviluppo e la programmazione in
   Tcl e Tk: è solo un punto di partenza per gli utenti Linux.

   Il concetto dell'autore di manuale di riferimento coincide con la
   definizione di pagine di manuale, e molte persone imparano Tcl/Tk da
   queste basilari fonti d'informazione. Questi file fanno parte della
   distribuzione del codice sorgente, e sono installati nella propria
   macchina Linux. Si sarà in grado di accedere alle pagine di manuale di
   Tcl/Tk tramite il comando man.

   Sono stati scritti molti tutorial di programmazione completi e
   strutturati allo scopo di permettere ai nuovi utenti di maneggiare
   Tcl/Tk; tonnellate di altro materiale é disponibile in Internet.
   Interpretando la filosofia di Tcl/Tk non cercheró di reinventare la
   ruota: mi organizzeró per mettere insieme la grande quantitá di
   materiale già disponibile.

   Si suggerisce di guardare gli altri documenti elencati nella [4]sezione
   Riferimenti per trovare dove recuperare informazioni specifiche su Tcl
   e Tk.

1.2 Cosa bisogna sapere prima di leggere

   Per capire l'abc di Tcl/Tk non é necessario essere un guru della
   programmazione, la sintassi dei comandi é molto semplice.
   Fondamentalmente é necessario avere familiarità con:
     * semplici concetti di programmazione;
     * l'uso di comandi o strumenti unix molto comuni;
     * avere accesso ad Internet;
     * l'uso di ftp.

1.3 Nuove versioni di questo documento

   Le nuove versioni di questo documento verrano caricate sul sito ftp:
   [5]ftp://sunsite.unc.edu/ pub/Linux/HOWTO/ e saranno disponibili su
   tutti gli altri mirror.

   L'ipertesto e altre versioni di questo e di altri HOWTO di Linux sono
   disponibili principalmente presso [6]sunsite.unc.edu/LDP/lpd.ht ml,
   [7]www.linux-howto.com e presso molti altri siti mirror nel
   World-Wide-Web.

   Cercherò di incorporare nella [8]mia pagina Web la versione html e sgml
   più recente del documento. La maggior parte delle distribuzioni Linux
   in CD-ROM include gli HOWTO, spesso nella sottodirectory /usr/doc/, e
   si possono acquistare versioni stampate da parecchi venditori.

   Qualche volta gli HOWTO disponibili presso i venditori di CD-ROM, siti
   ftp, ed in formato cartaceo sono superati. Se la data scritta su questi
   HOWTO è più vecchia di sei mesi, allora probabilmente è disponibile una
   nuova copia in Internet.

   Se qualcuno facesse una traduzione di questo documento in un'altra
   lingua mi scriva un messaggio, includerò qui un riferimento.

1.4 Storia delle revisioni

     * Versione 0.1: 28 ottobre 1998 - prima versione;
     * Versione 0.2: 07 novembre 1998 - profonda revisione di stile e
       abbellimento.

1.5 Feedback e altre cose

   Conto su di te, lettore, per rendere utile questo HOWTO. Se hai un
   qualsiasi suggerimento, correzione o commento, ti prego di mandarlo a (
   [9]Luca Rossetti ), e io cercherò di aggiungerlo nella prossima
   revisione.

   Se uno dei collegamenti menzionati in questo documento non fosse più
   disponibile o dovesse cambiare, per favore notificatemelo
   immediatamente cosicché possa aggiornarlo o rimuoverlo.

   Sono disposto a rispondere a domande generali a proposito di Tcl/Tk e
   Linux meglio che posso. Prima di farlo però, leggete tutte le
   informazioni contenute in questo HOWTO, e mandatemi informazioni
   dettagliate sul problema.

   Se pubblicate questo documento in un CD-ROM o in forma stampata,
   sarebbe veramente apprezzata una copia omaggio. Scrivetemi una e-mail e
   vi risponderò spedendovi il mio indirizzo postale.

   In molte sezioni ho menzionato società editrici o URL commerciali: io
   non lavoro per loro.

1.6 Ringraziamenti

   La maggior parte delle informazioni di questo HOWTO provengono da
   [10]Scriptics del Dr. Ousterhout e dalle FAQ di Larry W. Virden su
   [11]comp.lang.tcl FAQ .

   Vorrei ringraziare il gruppo di utenti linux italiano [12]PLUTO e tutti
   i volontari dell' [13]ILDP (Italian Linux Documentation Project),
   specialmente Eugenia Franzoni e Giovanni Bortolozzo, per i loro
   commenti.

1.7 Politica di distribuzione

   Questo documento è sottoposto a Copyright 1998 da [14]Luca Rossetti.

   Questo documento viene distribuito nella speranza che sia utile per il
   lettore: naturalmente è considerato senza alcuna garanzia, senza
   neanche l'implicita garanzia di commerciabilità o idoneità per uno
   scopo particolare. Questo HOWTO è un documento libero; lo si può
   ridistribuire o modificare sotto i termini del [15]COPYRIGHT LDP .

   Si legga il [16]Manifesto LDP per maggiori dettagli.

2. Storia di Tcl/Tk

   Tcl/Tk sono stati creati dal [17]dr. John Ousterhout (pronunciato
   "O'-ster-haut") mentre insegnava all'Università della California,
   Berkeley, California. Egli iniziò a implementarli quando tornò a
   Berkeley nella primavera del 1988; per l'estate di quell'anno veniva
   utilizzato in alcune applicazioni interne, ma senza Tk. Si può leggere
   la storia di Tcl/Tk direttamente dalle parole del suo autore su
   [18]www.scripti cs.com/scripting/tclHistory.html.

2.1 Cronologia

     * 1989: i primi rilasci esterni di Tcl e l'inizio
       dell'implementazione di Tk;
     * 1991: il primo rilascio di Tk;
     * 1994: il dr. Ousterhout viene assunto da Sun Microsystems, Inc.
       come Distinguished Engineer e conduce il progetto Tcl.
     * aprile/maggio 1997: le attività del gruppo di ricerca di Sun per lo
       sviluppo di Tcl vengono deviate al business group di Sun chiamato
       SunScript. Comunque, poco dopo, le cose cambiano ancora. Si possono
       leggere maggiori informazioni su questa evoluzione selezionando
       "SunScript_story" all'URL: [19]Su nScript-Story .
     * Agosto 1997: viene formato un Consorzio Tcl.
     * Febbraio 1998: il dr. Ousterhout lascia Sun per creare
       [20]Scriptics, una società dedicata a strumenti per script,
       applicazioni e servizi. Secondo [21]www.scriptics.com
       /about/news/qa.html il nucleo di Tcl e Tk rimane libero, con il
       team di Sun che continua a lavorare su Tcl/Tk 8.1. Dopo il prossimo
       rilascio, l'intenzione è quella di spostare il lavoro sul nucleo da
       Sun a Scriptics, mentre il team di Sun si concentrerà più sulle
       estensioni e applicazioni Tcl.
     * 23 aprile 1998: l'Association for Computing Machinery [22]ACM
       premia John Ousterhout e Scriptics con il Software System Award
       1997 ( [23]www.acm.org/awards/). Questo premio viene assegnato a
       istituzioni o individui conosciuti per aver sviluppato sistemi
       software che abbiano avuto un'influenza duratura, riconoscibile in
       contributi a concetti, nell'accettazione conmerciale, o in
       entrambi.

3. Che cosa è Tcl/Tk

3.1 Che cosa è Tcl?

   Tcl è l'acronimo per "Tool Command Language" (si pronuncia come la
   parola inglese "tickle"). In realtà Tcl è diviso in due parti: un
   linguaggio e una libreria.

   Tcl è un semplice linguaggio di programmazione testuale destinato a
   impartire comandi a programmi interattivi come editor di testi,
   debugger e shell. Ha una sintassi semplice ed è anche programmabile.

   Gli utenti di Tcl possono scrivere procedure per fornire comandi più
   potenti rispetto a quelli incorporati.

   Secondo, Tcl è un pacchetto di libreria integrabile nelle applicazioni
   che consiste di un analizzatore del linguaggio Tcl, di routine per
   l'implementazione dei comandi incorporati in Tcl e di procedure che
   consentono ad ogni applicazione di estendere Tcl con ulteriori comandi
   specifici per quella applicazione. Il programma dell'applicazione
   genera comandi Tcl e li passa all'analizzatore di Tcl per l'esecuzione.

   I comandi possono essere generati leggendo caratteri da una sorgente in
   ingresso o associando stringhe di comandi ad elementi dell'interfaccia
   utente dell'appplicazione, come elementi di menu, bottoni, ed altri
   controlli. Quando la libreria Tcl riceve i comandi, li analizza
   suddividendoli in campi componenti ed esegue direttamente i comandi
   incorporati.

   Nel caso di comandi implementati dall'applicazione, richiama
   l'applicazione per eseguirli. In molti casi i comandi eseguiranno
   invocazioni ricorsive dell'interprete Tcl passando ulteriori stringhe
   da eseguire (in effetti procedure e comandi per cicli condizionali
   lavorano tutti in questa maniera). Un'applicazione può ottenere molti
   vantaggi utilizzando Tcl come proprio linguaggio di controllo:
     * Tcl fornisce una sintassi standard: una volta che gli utenti
       conoscano Tcl, saranno in grado facilmente di lanciare comandi ad
       una qualsiasi applicazione basata sul Tcl.
     * Tcl riesce a fornire programmabilità. Tutto quello che deve fare
       un'applicazione Tcl è implementare alcuni comandi di basso livello
       specifici dell'applicazione. Tcl fornisce molti comandi di base ed
       un'interfaccia di programmazione generale per costruire procedure
       di comandi complesse. Utilizzando Tcl, le applicazioni non hanno
       bisogno d'implementare di nuovo queste funzioni.
     * Estensioni di Tcl, come il Tk toolkit, forniscono meccanismi per la
       comunicazione tra applicazioni inviando comandi Tcl avanti e
       indietro. La struttura costituita dal linguaggio comune Tcl rende
       più semplice la comunicazione tra le applicazioni.

   È importante notare che Tcl è stato progettato pensando che il
   programmatore dovrebbe effettivamente usare due o più linguaggi nel
   progettare grandi sistemi software: uno per manipolare complesse
   strutture dati interne, o quando le prestazioni sono importanti; un
   altro, come Tcl, per scrivere script molto piccoli che uniscano gli
   altri pezzi, fornendo agganci all'utente che consentano di estendere
   l'applicazione.

   Per l'autore di script Tcl, la facilità di apprendimento, la facilità
   di programmazione e la facilità di unire le cose sono più importanti
   delle prestazioni o delle facilitazioni per strutture dati o algoritmi
   complessi.

   Tcl è stato progettato per rendere semplice il passaggio ad un
   linguaggio di programmazione a più basso livello, quando si incontrano
   compiti che a quel livello hanno più senso. In questo modo le
   funzionalità di base del nucleo possono rimanere piccole, permettendo
   di utilizzare solo quei pezzi particolarmente desiderati o di cui si ha
   necessità.

   Si può trovare una risposta alla domanda "Che cosa è Tcl?" su
   [24]www.NeoSoft.com/tcl /whatistcl.html .

3.2 Cosa è Tk?

   Tk (pronunciato come si pronuciano t e k in inglese: "ti-chei") è una
   estensione di Tcl che fornisce al programmatore un'interfaccia al
   sistema di finestre X11. Si noti che il Tk è stato compilato con
   successo sotto X11 R4, X11 R5 e X11 R6, oltre che gli ambienti di Sun
   NeWS/X11.

   Molti utenti incontreranno Tcl/Tk per via del comando "wish", che è una
   semplice shell a finestre che permette di scrivere appliazioni Tcl/Tk
   in un ambiente di prototipazione.

   Al momento Tcl/Tk non può gestire caratteri giapponesi, cinesi,
   coreani...

3.3 Estensioni

   Visto che Tcl è così semplice da estendere, molti cercano di
   condividere le estensioni, incluse le popolari itcl, [25][incr Tcl],
   ObjectTcl, TclX, [26]Tix e [27]BLT.

   Ovviamente queste estensioni richiedono un interprete Tcl esteso.
   Inoltre molte applicazioni Tcl libere richiedono una particolare
   estensione di Tcl per funzionare.

   Una delle più popolari estensioni è [28]Expect. Permette di inserire un
   front-end amichevole all'interno della maggior parte delle applicazioni
   UNIX basate su comandi da riga di comando, come ftp, telnet, rlogin,
   passwd, fsck e così via.

   Si può trovare una lista completa di estensioni di Tcl/Tk all'URL
   [29]www.scr iptics.com/resource/software/extensions/.

3.4 Piattaforme supportate

   Questa sezione contiene informazioni su Tcl 8.0 e Tk 8.0, la versione
   più recente di Tcl/Tk. Sono state rilasciate il 18 agosto 1997 ed il
   rilascio più recente della patch (8.0.3) è stato fatto il 3 settembre
   1998.

   Quando si scaricano Tcl e Tk si ottengono due programmi, wish e tclsh,
   che supportano librerie di script, e documentazione di riferimento in
   linea. Questi programmi sono piattaforme generiche per scrivere
   applicazioni con Tcl. Wish include Tk, il toolkit per l'interfaccia
   grafica per l'utente. I pacchetti sono pronti all'uso dopo
   l'installazione.

   Tcl 8.0 e Tk 8.0 funzionano sulla maggior parte dei rilasci dei
   seguenti sistemi operativi:

     * Windows 95
     * Windows NT
     * Solaris e SunOS
     * Linux
     * HP-UX
     * SGI
     * IRIX
     * Digital Unix
     * AIX
     * SCO Unix
     * la maggior parte degli altri sistemi operativi per Macintosh simili
       a Unix (68K e Power Mac)
     * rilasci precompilati sono disponibili per varie distribuzioni
       Linux.

4. Installazione e inizi con Tcl e Tk

   La maggior parte delle distribuzioni moderne includono Tcl e Tk.
   Pacchetti rpm e deb con binari precompilati sono disponibili con le
   distribuzioni Red Hat, SuSE e Debian (rendendo l'installazione più
   facile).

   L'installazione di una distribuzione moderna includerà Tcl/Tk, visto
   che è necessario per molti strumenti di configurazione operanti
   principalmente sotto X.

   Tcl e Tk sono distribuiti liberamente sotto forma di sorgenti via
   Internet. Non ci sono restrizioni al loro utilizzo e non è necessaria
   nessuna licenza o royalty (vedere la sezione [30]license.terms per
   informazioni complete).

   Sono disponibili liberamente molti altri script ed estensioni Tcl/Tk.

4.1 Scaricare le distribuzioni del nucleo

   Il nucleo Tcl/Tk consiste delle librerie Tcl e Tk, più le applicazioni
   wish e tclsh, la documentazione associata, le librerie di script e le
   applicazioni dimostrative. Il sito FTP primario per queste informazioni
   è [31]ftp.scriptics.com/pub/tcl/.

   Il sito HTTP primario è [32]www.scriptics. com/software/download.html .

4.2 Installazione

   A meno che siano già disponibili i pacchetti proprietari per la
   distribuzione in uso, si vorrà scaricare il rilascio dei sorgenti.
   Saranno necessari i sorgenti sia di Tcl che di Tk. Questa procedura si
   riferisce al secondo caso.

   Si scelga tra i formati tar compresso o tar compresso con gzip.

   File tar compressi

   Sorgenti Tcl (tcl8.0.3.tar.Z): file tar compressi (circa 2.4 Mbytes).
   Sorgenti Tk (tk8.0.3.tar.Z): file tar compressi (circa 3.3 Mbytes).

   File tar compressi con gzip

   Sorgenti Tcl (tcl8.0.3.tar.gz): file tar compressi con gzip (circa 1.5
   Mbytes). Sorgenti Tk (tk8.0.3.tar.gz): file tar compressi con gzip
   (circa 2.1 Mbytes).

   Quando si recupera uno di questi file si ottiene un file tar compresso
   con un nome tipo tcl8.0.3.tar.gz o tcl8.0.3.tar.Z. I file sono identici
   ad eccezione della tecnica di compressione utilizzata per comprimerli
   (i file .gz sono in genere più piccoli dei file .Z).

   A seconda della versione del rilascio recuperato, per estrarre la
   distribuzione invocare i comandi di shell come segue:
     __________________________________________________________________

gunzip -c tcl8.0.3.tar.gz
     __________________________________________________________________

   o
     __________________________________________________________________

tar xf - zcat tcl8.0.3.tar.Z
     __________________________________________________________________

   o
     __________________________________________________________________

tar xf - unzip tcl80.3.zip
     __________________________________________________________________

   Ognuno di questi comandi creerà una directory chiamata tcl8.0.3, che
   include i sorgenti per tutte le piattaforme, la documentazione e la
   libreria di script per Tcl 8.0. Per compilare e installare la
   distribuzione seguire le istruzioni contenute nel file README nella
   directory di distribuzione. Ci si assicuri di compilare Tcl prima di
   Tk, dato che Tk dipende da informazioni contenute in Tcl.

4.3 L'archivio dei contributi

   Ci sono molti altri pacchetti disponibili liberamente per Tcl e Tk,
   inclusi sia script scritti in Tcl che estensioni scritte in C o C++.
   Questi pacchetti includono applicazioni per basi di dati e accessi a
   reti, un costruttore di interfaccia grafica per l'utente, il progamma
   expect, controlli Tk addizionali e dozzine di altre cose . Il sito
   primario per l'archivio Tcl/Tk è [33]ftp.neosoft.com/pub/tcl.

4.4 Siti mirror

   Molti altri siti in giro ospitano una copia di tutto o di una parte del
   materiale del sito principale e dell'archivio dei contributi; si
   possono trovare informazioni più utili da recuperare da siti mirror
   vicini alla propria posizione.

   Scaricare via ftp il file "0_mirror" all'indirizzo:
   [34]ftp.scriptics.com/pub/tcl/ per una lista dei siti mirror del paese
   di appartenenza.

4.5 Quali rilasci usare

   Si faccia sempre riferimento alla versione più recente raccomandata
   nella sezione "Nucleo Tcl/Tk" della

   [35]pagina centrale per il software di Scriptics.

   Al momento della scrittura di questo documento, i rilasci raccomandati
   sono gli ultimi (Tcl 8.0.3 e Tk 8.0.3) risalenti al settembre del 1998.
   Tcl 8.0 contiene un nuovo compilatore di bytecode che può accelerare
   l'esecuzione di un fattore 2-10x. Fornisce anche spazio di nomi, I/O
   binario e molte altre nuove funzionalità.

   Tk 8.0 è il primo rilascio a fornire l'aspetto e le funzioni native su
   Macintosh e PC. Tk 8.0 supporta anche l'integrazione di applicazioni, e
   ha un nuovo meccanismo di tipi di caratteri portabile. Sia Tcl 8.0 che
   Tk 8.0 forniscono caratteristiche addizionali all'interno del modello
   di sicurezza Safe-Tcl.

4.6 Dove comunicare problemi, bug o miglioramenti

   Si usi [36]comp.lang.tcl per comunicazioni pubbliche.

   L'alternativa sarebbe spedire problemi, suggerimenti, nuove idee ecc.
   direttamente all'autore. Inviare un'email a [37]John Ousterhout
   raggiungerà l'autore di Tcl e Tk.

   Nel riportare problemi o bug ci si assicuri di menzionare tutti i
   dettagli necessari per una corretta diagnosi. Fondamentalmente si deve
   descrivere quale hardware, sistema operativo e versione di Tcl/Tk si
   sta usando, se si è fatta qualche modifica o aggiunta e fornire, se
   possibile, un piccolo pezzo di codice o un URL contenente un po' di
   codice che dimostri il problema.

   Se si ha del software da cui la comunità potrebbe trarre beneficio (che
   sia un programma, una funzione, un'estensione o un semplice esempio), o
   se si ha un documento, articolo di rivista o giornale, tesi, progetto,
   o anche una pubblicità commerciale, ci si assicuri che le persone
   appropriate lo sappiano.

   Ci sono curatori di FAQ per ognuna di queste aree, oltre ad un
   newsgroup [38]comp.lang.tcl.announce che può essere usato.

   Vale sempre la pena inviare i propri contributi direttamente al sito
   ftp, così in futuro più persone potranno beneficiare della propria
   esperienza.

   Per fare annunci nel newsgroup [39]comp.lang.tcl.announce , spedire una
   email con i dettagli a [40]tcl-announce. Ci si senta anche liberi di
   fare riferimento al proprio sito ftp o WWW se disponibile.

5. Un po' di programmazione

   Dato che Tcl è un linguaggio interpretato, per eseguire un programma
   Tcl (chiamato anche script) normalmente si passa il file di script
   all'interprete Tcl, wish, per esempio:
     __________________________________________________________________

wish hello.tcl
     __________________________________________________________________

   Si può usare wish anche in modalità interattiva e inserire comandi
   dalla riga di comando.

   C'è un'altro interprete Tcl standard, tclsh, che comprende solo il
   linguaggio Tcl. Tclsh non ha nessuno dei comandi per l'interfaccia per
   l'utente di Tk, dunque non si possono creare programmi grafici con
   tclsh.

   Alcune applicazioni Tcl libere estendono il linguaggio Tcl aggiungendo
   nuovi comandi scritti come funzioni C. Se è questo il caso, è
   necessario compilare l'applicazione invece di limitarsi a passare il
   suo codice Tcl all'interprete wish. Questa applicazione, dalla
   prospettiva di Tcl, è effettivamente una nuova versione dell'interprete
   wish, a cui i nuovi comandi C vanno collegati. Naturalmente,
   l'applicazione potrebbe essere molto più complicata di un mero
   interprete Tcl (Nota: si può usare anche la capacità di autocaricamento
   di Tcl su sistemi che lo supportano).

5.1 Il programma in un minuto in Tcl

   Tcl ha una struttura semplice. Ogni linea comincia con un comando, come
   un bottone, ed una serie di argomenti. Ogni comando è implementato come
   se fosse una funzione C, che è responsabile della gestione di tutti gli
   argomenti.

   Come esempio molto standard, quanto segue è il programma Hello World in
   Tcl/Tk:
     __________________________________________________________________

# Questo è un commento
button .b -text "Hello World" -command exit
pack .b
     __________________________________________________________________

   In questo caso bisogna scrivere i comandi interattivamente in tclsh o
   wish.

   I comandi possono anche essere inseriti in file di script da invocare
   come script di shell. Per farlo nell'esempio precedente, si riscriva il
   programma Hello World come segue:
     __________________________________________________________________

#! /usr/local/bin wish -f
button .b -text "Hello World" -command exit
pack .b
     __________________________________________________________________

   Si inserisca il testo all'interno di un file chiamato Hello e ci si
   assicuri che wish sia installato in /usr/local/bin (altrimenti sarà
   necessario cambiare opportunamente il percorso).

   Si renda il file Hello eseguibile lanciando il comando
     __________________________________________________________________

chmod 775 Hello
     __________________________________________________________________

   e lo si esegua in X.

   Si vedrà un bottone etichettato Hello World all'interno di una
   finestra: cliccandolo la finestra verrà chiusa.

6. Linguaggio per script: pro e contro

   Per capire l'importanza ed il futuro di Tcl/Tk suggerisco fortemente di
   puntare il proprio browser web all'URL [41]www.scriptics
   .com/people/john.ousterhout/ di [42]John K. Ousterhout . Vi si leggerà
   l'importanza e il paragone tra scrivere script (in linguaggi come Tcl)
   e programmazione di sistema (in languaggi come C e Java).

   Per leggere un documento di natura comparativa vedere [43]la
   discussione comparativa.

   Qui c'è un sommario dei più importanti pro e contro su Tcl/Tk.

6.1 Alcuni delle più comuni lamentele nei confronti di Tcl

  Tcl è interpretato

   I dati sono principalmente trattati come stringhe, i programmi scritti
   in Tcl sono lenti. Tcl 8.x cerca di affrontare il problema facendo un
   certo grado di compilazioni oltre a consentire ulteriori tipi di
   variabili.

  Molte caratteristiche non sono intuitive

   I commenti sono comandi piuttosto che commenti tradizionali, i numeri
   che cominciano con 0 sono ottali, uso appropriato dei meccanismi di
   citazione, ecc. Questi aspetti sono coperti nelle varie FAQ.

6.2 Alcuni dei pro di Tcl

  È un linguaggio per script di alto livello

   Si deve scrivere molto meno codice per compiere lo stesso lavoro,
   specialmente se paragonato ad applicazioni Motif o Win32. In generale,
   il numero delle Linee di Codice (Line of Code: LOC) di un progetto
   software è uno dei più importanti indici di complessità.

  Tcl è libero

   Si possono ottenere i sorgenti liberamente da Internet dalla pagina di
   scaricamento di Scriptics o dal sito FTP per Tcl. [44]Il sito del
   nucleo del software include la versione del codice sorgente, oltre alle
   versioni binarie per piattaforme Windows e Macintosh; oppure si può
   ottenere Tcl su un certo numero di CD-ROM per un costo nominale.

   Si legga liberamente a proposito del nucleo di Tcl e Tk da
   [45]www.scriptics.com/about/n ews/qa.html .

  Funziona su molte piattaforme

   Esistono versioni per UNIX (Linux... naturalmente), Windows e
   Macintosh. Ad eccezione di poche differenze per piattaforma, gli script
   Tcl funzioneranno nello stesso modo su tutti i sistemi.

  È interpretato

   Si può eseguire il codice direttamente senza compilarlo e farne il link
   (anche se sono disponibili compilatori Tcl).

  È estensibile

   È facile aggiungere propri comandi per estendere il linguaggio Tcl. Si
   possono scrivere comandi in C o Tcl.

  È integrabile nella propria applicazione

   L'interprete Tcl è semplicemente un insieme di funzioni C che possono
   essere chiamate dal proprio codice. Questo significa che si può usare
   Tcl come un linguaggio d'applicazione, in maniera molto simile ad un
   linguaggio macro per un'applicazione di foglio elettronico.

  Tcl/Tk è conforme all'anno 2000 (Y2K)

   Si legga cosa dice a proposito di questo argomento l'inventore del
   nucleo di Tcl e Tk [46]www.scriptics.com/Y2K.html .

7. I programmi più famosi che impiegano Tcl/Tk

   A parte le due applicazioni descritte nell' [47]introduzione, ci sono
   molte applicazioni scritte in Tcl/Tk o una combinazione di Tcl e C. Una
   lista completa in cui cercare queste implementazioni è la [48]parte 4
   della frequently-asked questions su Tcl/Tk (FAQ). Suggerisco di
   visitare

   [49]Scriptics' Softwar e Central.

   Un altro buon punto di partenza è [50]www.NeoSoft.com/tcl/.

   Una delle migliori applicazioni Tcl funzionanti sotto Linux è chiamata
   [51]TkDesk, un manager di finestre e programma per il lancio delle
   applicazioni che lavora molto bene.

   Sviluppatori di Tcl/Tk su Linux si sentano liberi di [52]scrivermi uno
   URL (e una descrizione del lavoro) che possa qui inserire.

8. Riferimenti

   Per molte ragioni alle persone piace spesso avere un manuale stampato
   come riferimento o un aiuto da altri in linea.

   Qui si può trovare una selezione di libri di riferimento, tutorial,
   siti web e newsgroup.

8.1 Libri

   Sono stati scritti e pubblicati molti libri riguardanti Tcl/Tk. Non
   cercherò neppure di elencarli tutti (un altro howto non sarebbe
   sufficiente : ) ). Si possono trovare più informazioni e ulteriori note
   all'indirizzo:
     * [53]www.tcltk.com/consortium/resources/books.html
     * [54]www.amazon.com/exec/obidos/subst/categories/computer-programmin
       g/tcl-tk-article/002-8989352-4516417
     * La pagina: tcl_books.html allo URL [55]starbase-neosoft-tcl-books

   Qui cercherò di fare un sommario con qualche nota dei libri che conosco
   riguardanti l'argomento, sono tutti ad un livello base-intermedio.
   Inoltre, chi conosce l'argomento ha sufficienti informazioni su dove
   trovare libri di livello avanzato.

  Tcl e toolkit Tk

   Autore: [56]John K. Ousterhout

   Informazioni sul web a proposito del libro:
   [57]cseng.aw.com/bookdetail.qry?ISBN=0%2D201%2D63337%2DX&ptype=0

   Esempi del libro: [58]ftp.script ics.com/pub/tcl/doc/book.examples.Z

   Supplementi del libro: [59]www.scriptics.com/doc/tk 4.0.ps

   Il ibro copre principalmente Tcl 7.3 e Tk 3.6.

  Practical Programming in Tcl and Tk, II ed.

   Autore: [60]Brent Welch

   Informazioni sul web a proposito del libro: [61]www.beedub.com/book/

   Indice del libro: [62]www.beedub.com/book/

   Informazioni di promozione del libro alla pagina section_50000.html
   dello URL [63]www.borders.com/sections/

   Questa edizione aggiornata descrive Tcl / Tk 8.0 com'era durante il
   periodo di rilascio della versione beta. Insieme al materiale dalla
   prima edizione, copre anche socket, pacchetti, spazio di nomi, una
   grande sezione che descrive i cambiamenti in Tcl 7.4, 7.5, 7.6 e 8.0
   (ed anche Tk), Safe Tk ed il Plugin.

  Manuali di riferimento per Tcl e Tk

   Curatore: Donald Barnes, [64]Marc Ewing, Erik Troan

   Informazioni sul web a proposito del libro: [65]www.lsl.com/catalog/bo
   oks/tcltk/

  The Visual TCL Handbook, 1/e

   Autore: [66]David Young

   Informazioni sul web a proposito del libro:
   [67]www.amazon.com/exec/obidos/ISBN=013461674X/u/7141-5908756-107481

   Una guida completa per Visual TCL. Questo libro conduce il lettore dai
   concetti base per lo sviluppo di interfacce grafiche per l'utente a
   significativi sviluppi di applicazioni. Il libro si concentra sulle
   estensioni TCLX e VT, affrontando parecchi argomenti fondamentali di
   TCL. VT è un'interfaccia grafica per l'utente basata su Motif,
   incompatibile con Tk. L'intero linguaggio TCL è documentato in una
   sezione Comandi separata. È venduto con un CD-ROM che include versioni
   di Visual Tcl per SGI, Solaris, HP-UX, AIX e Unixware.

  Running LINUX

   Autori: Matt Welsh e Lar Kaufman

   Informazioni sul web a proposito del libro: [68]www.ora.com/ca
   talog/runux2/noframes.html

   Running Linux è un libro base scritto veramente bene. Contiene un
   capitolo sulla programmazione usando Tcl/Tk. (e Perl, C, C++).

  Tcl/Tk for Dummies (For Dummies)

   Autore: Timothy Webster con Alex Francis

   Informazioni sul web a proposito del libro: [69]www.dummies.com/

   Un altro libro della serie dei tascabili dedicati alla programmazione.
   Questo si concentra sul plugin di Tcl come ambiente di programmazione.

  Interactive Web Applications With Tcl/Tk

   Autori: Michael Doyle Hattie Schroeder

   Informazioni sul web a proposito del libro: [70]www.eolas.com/tcl/

   Questo è un libro d'insegnamento tramite esempi, per persone che
   conoscono già qualcosa della programmazione, senza esserne esperti.
   Copre lo sviluppo di applet e di applicazioni indipendenti e semplici
   applicazioni per server. Il libro fornisce il toolkit Spynergy, che
   aggiunge una varietà di procedure in puro Tcl/Tk per l'elaborazione
   distribuita, il recupero di URL, la rappresentazione HTML, la gestione
   di basi di dati e di file in modo indipendente dalla piattaforma, Ed
   (un editor Tcl e un ambiente di prova), uno strumento di conversione
   d'immagini, un demo sulle caratteristiche di Tk, una versione
   client/server di un'applicazione rolodex, un server web in puro Tcl,
   un'applicazione client/server di tecnologia push, un web browser in
   tcl,

8.2 Manuali e tutorial in linea

     * John Ousterhout ha scritto una guida in stile ingegneristico che
       descrive la scrittura del codice, la documentazione, e le
       convenzioni di test che sono state usate in Sun durante la
       scrittura del codice C del nucleo di Tcl, e l'ha resa disponibile
       agli altri sviluppatori Tcl e Tk. Si trova all'indirizzo
       [71]ftp.script ics.com/pub/tcl/doc/engManual.tar.Z
     * Una seconda guida di stile che copre la scrittura di script in Tcl
       può essere trovata all'indirizzo [72]ftp.scr
       iptics.com/pub/tcl/docs/styleGuide.tar.gz. Altre versioni possono
       essere trovate all'indirizzo [73]sunscript.su
       n.com/techcorner/styleGuide.ps.
     * [74]A brief introduction to TCL/TK di [75]David Martland
     * Un altro tutorial intitolato [76]User interfaces with Tcl/T k è
       stato scritto da [77]Fintan Culwin .
     * Anche se si dovrebbero avere le pagine di manuale di Tcl/Tk nel
       sistema in uso, ecco un altro luogo dove cercare [78]TCL Manual Pa
       ges (from TCL7.4)-Tk Manual Pages (from TK4.0).
     * [79]The Tcl/Tk Cookbook offre molte informazioni per cominciare.

8.3 Siti World Wide Web

   C'è un gran numero di risorse WWW che forniscono ulteriori informazioni
   a proposito di molti aspetti di Tcl e delle sue estensioni.
     * Si faccia riferimento a [80]Tcl-FAQs (pa rt2) per un gran numero di
       riferimenti alla documentazione di Tcl/Tk e a siti web.
     * Si punti il proprio browser verso [81]Tcl/Tk Information: un sito
       con molti collegamenti a risorse TclTk sul web (Information,
       Extensions, Tools, Training ed Events).
     * Si punti il proprio browser verso [82]The Official Contributed
       Sources A rchive per il Tool Command Language (Tcl) e per il
       toolkit Tk, ospitato da NeoSoft, Inc.
     * Per la discussione riguardante i pro ed i contro dei maggiori
       linguaggi per script: [83]articolo in SunWorld di [84]Cameron Laird
       .
     * Si tratta di una pagina web che contiene una varietà di paragoni
       tra Tcl/Tk ed altri sistemi simili. Molti di loro sono presi da
       "comp.lang.tcl", l'autore sarebbe felice di aggiungere qualsiasi
       altro articolo importante che gli si voglia spedire: [85]Comparison
       di [86]Wayne Christopher.
     * [87]E.J. Friedman-Hill's Tcl/Tk Course: questo documento è
       disponibile solo in formato PowerPoint e in un formato HTML di
       bassa qualità (nel formato HTML mancano tutte le figure e qualche
       testo).

8.4 Altri documenti & Frequently Asked Questions

   Molto materiale è disponibile in Internet: saggi introduttivi, white
   paper, tutorial, slide, versioni postscript di libri pubblicati in
   bozze e molto di più.

   Per un riferimento completo vedere l'eccellente [88]Tcl-FAQs .

8.5 Newsgroup

   [89]comp.lang.tcl è un newsgroup di Usenet non moderato, creato per la
   discussione del linguaggio di programmazione Tcl e di strumenti che
   usano qualche forma di Tcl, come il toolkit Tk per il sistema di
   finestre X, Tcl esteso ed expect.

   Per annunci relativi a Tcl/Tk si faccia sempre riferimento a
   [90]comp.lang.tcl.announce: si troveranno annunci di rilascio, patch,
   nuove applicazioni e così via.

   Ancora, le faq possono essere recuperate da [91]Tcl-FAQs.

9. Termini della licenza di Tcl/Tk

   I termini seguenti si applicano a tutte le versioni dei rilasci del
   nucleo di Tcl/Tk, al plug-in del browser per Tcl/Tk versione 2.0, e
   TclBlend e Jacl versione 1.0. Si noti che gli strumenti TclPro sono
   sotto un'altro accordo di licenza. Questo accordo fa parte della
   distribuzione standard di Tcl/Tk come file chiamato "license.terms".

   TERMINI DI LICENZA TCL/TK

   This software is copyrighted by the Regents of the University of
   California, Sun Microsystems, Inc., Scriptics Corporation, and other
   parties. The following terms apply to all files associated with the
   software unless explicitly disclaimed in individual files.

   The authors hereby grant permission to use, copy, modify, distribute,
   and license this software and its documentation for any purpose,
   provided that existing copyright notices are retained in all copies and
   that this notice is included verbatim in any distributions. No written
   agreement, license, or royalty fee is required for any of the
   authorized uses. Modifications to this software may be copyrighted by
   their authors and need not follow the licensing terms described here,
   provided that the new terms are clearly indicated on the first page of
   each file where they apply.

   IN NO EVENT SHALL THE AUTHORS OR DISTRIBUTORS BE LIABLE TO ANY PARTY
   FOR DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES
   ARISING OUT OF THE USE OF THIS SOFTWARE, ITS DOCUMENTATION, OR ANY
   DERIVATIVES THEREOF, EVEN IF THE AUTHORS HAVE BEEN ADVISED OF THE
   POSSIBILITY OF SUCH DAMAGE.

   THE AUTHORS AND DISTRIBUTORS SPECIFICALLY DISCLAIM ANY WARRANTIES,
   INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
   MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, AND
   NON-INFRINGEMENT. THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, AND
   THE AUTHORS AND DISTRIBUTORS HAVE NO OBLIGATION TO PROVIDE MAINTENANCE,
   SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS.

   GOVERNMENT USE: If you are acquiring this software on behalf of the
   U.S. government, the Government shall have only "Restricted Rights" in
   the software and related documentation as defined in the Federal
   Acquisition Regulations (FARs) in Clause 52.227.19 (c) (2). If you are
   acquiring the software on behalf of the Department of Defense, the
   software shall be classified as "Commercial Computer Software" and the
   Government shall have only "Restricted Rights" as defined in Clause
   252.227-7013 (c) (1) of DFARs. Notwithstanding the foregoing, the
   authors grant the U.S. Government and others acting in its behalf
   permissi on to use and distribute the software in accordance with the
   terms specified in this license.

References

   1. mailto:lukaros@tin.it
   2. http://it.ildp.org/
   3. http://www.redhat.com/
   4. file://localhost/home/giulio/HOWTO/TclTk-HOWTO/TclTk-HOWTO.html#references
   5. ftp://sunsite.unc.edu/Linux/docs/HOWTO/
   6. http://sunsite.unc.edu/LDP/lpd.html
   7. http://www.linux-howto.com/
   8. http://space.tin.it/computer/tlqhr/
   9. mailto:lukaros@tin.it
  10. http://www.scriptics.com/
  11. http://www.tclfaq.wservice.com/tcl-faq/
  12. http://www.pluto.linux.it/
  13. http://www.pluto.linux.it/ildp/
  14. mailto:lukaros@tin.it
  15. http://sunsite.unc.edu/LDP/LDP-COPYRIGHT.html
  16. http://sunsite.unc.edu/LDP/LDP-Manifesto.html
  17. mailto:ouster@scriptics.com
  18. http://www.scriptics.com/scripting/tclHistory.html
  19. http://starbase.neosoft.com/%7Eclaird/comp.lang.tcl/
  20. http://www.scriptics.com/
  21. http://www.scriptics.com/about/news/qa.html
  22. http://www.acm.org/
  23. http://www.acm.org/awards/
  24. http://www.NeoSoft.com/tcl/whatistcl.html
  25. http://www.tcltk.com/itcl/
  26. http://tix.mne.com/
  27. http://www.tcltk.com/blt/
  28. http://expect.nist.gov/
  29. http://www.scriptics.com/resource/software/extensions/
  30. file://localhost/home/giulio/HOWTO/TclTk-HOWTO/TclTk-HOWTO.html#license
  31. ftp://ftp.scriptics.com/pub/tcl/
  32. http://www.scriptics.com/software/download.html
  33. ftp://ftp.neosoft.com/pub/tcl
  34. ftp://ftp.scriptics.com/pub/tcl/
  35. http://www.scriptics.com/software/download.html
  36. file://localhost/home/giulio/HOWTO/TclTk-HOWTO/news.comp.lang.tcl
  37. mailto:Ouster@scriptics.com
  38. news:news.comp.lang.tcl.announce
  39. news:news.comp.lang.tcl.announce
  40. mailto:tcl-announce@mitchell.org
  41. http://www.scriptics.com/people/john.ousterhout/
  42. mailto:ouster@scriptics.com
  43. file://localhost/home/giulio/HOWTO/TclTk-HOWTO/TclTk-HOWTO.html#prosandcons
  44. http://www.scriptics.com/software/download.html
  45. file://localhost/home/giulio/HOWTO/TclTk-HOWTO/www.scriptics.com/about/news/qa.html
  46. http://www.scriptics.com/Y2K.html
  47. file://localhost/home/giulio/HOWTO/TclTk-HOWTO/TclTk-HOWTO.html#introduction
  48. http://www.tclfaq.wservice.com/tcl-faq/part4.html
  49. http://www.scriptics.com/resource/software/
  50. http://www.NeoSoft.com/tcl/
  51. http://people.mainz.netsurf.de/~bolik/tkdesk/
  52. mailto:lukaros@tin.it
  53. http://www.tcltk.com/consortium/resources/books.html
  54. http://www.amazon.com/exec/obidos/subst/categories/computer-programming/tcl-tk-article/002-8989352-4516417
  55. http://starbase.neosoft.com/%7Eclaird/comp.lang.tcl/
  56. mailto:ouster@scriptics.com
  57. http://cseng.aw.com/bookdetail.qry?ISBN=0%2D201%2D63337%2DX&ptype=0
  58. ftp://ftp.scriptics.com/pub/tcl/doc/book.examples.Z
  59. http://www.scriptics.com/doc/tk4.0.ps
  60. mailto:welch@acm.org
  61. http://www.beedub.com/book/
  62. http://www.beedub.com/book/
  63. http://www.borders.com/sections/
  64. mailto:marc@redhat.com
  65. http://www.lsl.com/catalog/books/tcltk/
  66. mailto:david@inforef.com
  67. http://www.amazon.com/exec/obidos/ISBN=013461674X/u/7141-5908756-1074%2081
  68. http://www.ora.com/catalog/runux2/noframes.html
  69. http://www.dummies.com/
  70. http://www.eolas.com/tcl/
  71. ftp://ftp.scriptics.com/pub/tcl/doc/engManual.tar.Z
  72. ftp://ftp.scriptics.com/pub/tcl/docs/styleGuide.tar.gz
  73. http://sunscript.sun.com/techcorner/styleGuide.ps
  74. http://http2.brunel.ac.uk:8080/~csstddm/TCL2/TCL2.html
  75. mailto:csstddm@brunel.ac.uk
  76. http://www.scism.sbu.ac.uk/tkteach/
  77. mailto:fintan@sbu.ac.uk
  78. http://cuiwww.unige.ch/eao/www/TclTkMan/Man.html
  79. http://www.cis.rl.ac.uk/proj/TclTk/
  80. http://www.tclfaq.wservice.com/tcl-faq/part2.html
  81. http://www.tcltk.com/
  82. http://www.NeoSoft.com/tcl/
  83. http://www.sun.com/sunworldonline/swol-10-1997/swol-10-scripting.html
  84. mailto:claird@Starbase.NeoSoft.com
  85. http://icemcfd.com/tcl/comparison.html
  86. mailto:wayne@icemcfd.com
  87. http://herzberg.ca.sandia.gov/TclCourse/
  88. http://www.tclfaq.wservice.com/tcl-faq/
  89. news:comp.lang.tcl
  90. news:comp.lang.tcl.announce
  91. http://www.tclfaq.wservice.com/tcl-faq/