Tcl significa Tool Command Language e foi criada por John Ousterhout para ser uma extensão de C, uma linguagem de agregação de componentes, mais ou menos como o Shell Script.
Tk é uma extensão gráfica para Tcl escrita em C. É um acrónimo para toolkit, nome comumente usado para frameworks gráficos. Em cada plataforma operacional, Tk oferece uma interface homogénia com o sistema de janelas. Outras linguagens também pode acessar a biblioteca Tk – como por exemplo Tkinter.
Tcl e Tk são de código aberto.
Vamos a alguns exemplos:
bash$ tclsh
% puts stdout {Olá Mundo!}
Olá Mundo!
Uma característica fortíssima de Tcl/Tk é que tudo são strings.
Cada token é uma string e strings não precisam de delimitadores, mas aspas (
"
) e chaves ({
e }
) podem ser usados como.No exemplo acima,
puts
, stdout
e {Olá Mundo!}
são strings. A primeira string da linha referencia o comando a ser executado, no caso puts
«coloca» uma string em um fluxo (stream).A segunda string (
stdout
) indica qual o fluxo de saída, no caso a saída padrão.A terceira string é aquela que será direcionada para a saída selecionada. No caso exibe
Olá Mundo!
na saída padrão.Vamos a um exemplo um pouco mais complicado:
puts -nonewline stdout {Informe um número: }
gets stdin num
set dob [expr [set num] * 2]
puts stdout "O dobro é [set dob]"
Como já vimos,
puts
exibe uma string em uma saída, no caso novamente na saída padrão (stdout
). A string -nonewline
é um parâmetro que indica a puts
para não inserir mudança de linha ao final.O comando
gets
recebe uma string de uma entrada – no caso stdin
, entrada padrão: o teclado – e a atribui a uma variável referenciada pela última string, num
.O comando
set
retorna o conteúdo de uma variável, se receber uma terceira string, atribui esta à variável e retorna.Os colchetes executam o comando interno e tudo é substituído pela string retornada.
O comando
expr
trata todas as strings como uma expressão matemática, retornando o resultado.Assim,
[set num]
retorna o valor da variável num
, o expr
pega esse valor de num
, tratado como um número, e múltiplica por dois (2), retornando.Daí os colchetes substituem novamente toda a expressão pelo valor retornado, ou seja, uma string representando o dobro do valor de
num
, então o set
mais externo atribui essa valor à variável dob
.No final o último comando exibe na saída padrão a string, substituindo o que estiver entre colchetes. Como
set dob
retorna o valor de dob
, acho que é óbvio o que é exibido.Só que Tcl/Tk suporta um «apelido» para
set
, que é o cifrão ($
), como em Shell e Perl (não como em PHP):puts -nonewline stdout {Informe um número: }
gets stdin num
set dob [expr $num * 2]
puts stdout "O dobro é $dob"
Isso deixa o código bem mais limpo. =)
Outras extensões
Há ainda outras linguagens baseadas em Tcl/Tk que valem a pena serem citadas.
A primeira é
[incr Tcl]
, uma variação orientada a objetos.Outra é TclX (Tcl estendido), que, além de suportar todas os recursos de Tcl/Tk ainda suporta outros similares ao bash, como
echo
, loop
e &
(para execução paralela).Finalizando
Este artigo é apenas um esboço. Outro mais completo pode ser encontrado nas Reflexões de Monte Gasppa e Giulia C..
[]'s
Cacilhas, La Batalema