Uma linguagem de script muito subestimada é Tcl/Tk.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
 CC-BY: Os textos deste blog podem ser reporduzidos contanto que sejam informados autor e origem.