- Tcl/Tk permite criar CLI e GUI de aparência nativa juntos em Windows, Linux e macOS, e é um conjunto de ferramentas sob licença BSD com suporte a eventos e I/O não bloqueantes e threading isolado
- Tcl é uma linguagem centrada em comandos que interpreta a primeira palavra como comando e trata código e dados como strings, enquanto Tk abstrai a UI de cada sistema operacional por meio de widgets e eventos
- Lançado em 13 de novembro de 2025, o Tcl/Tk 9.0 adicionou 64 bits, Unicode completo, codificação estrita, empacotamento em arquivo único com ZipFS, SVG, DPI de alta resolução e Dark Mode, mas traz mudanças de compatibilidade para parte do código legado
- Foi usado por muito tempo em
git gui, ferramentas de FPGA e EDA, Cisco IOS, ambientes operacionais da ESA, build e testes do SQLite e apps como Decent Espresso, e há casos de scripts dos anos 1990 que ainda rodam em versões atuais - Em vez de grandes cálculos numéricos, ele é mais adequado como linguagem de cola para UI orientada a eventos, automação, I/O, DSLs e coordenação de processos nativos, enquanto os cálculos podem ser delegados a componentes externos como C, C# e Python
Por que escolher Tcl/Tk
- O Tcl/Tk permite montar um ambiente de cerca de menos de 100 MB, mesmo incluindo pacotes comuns, e criar apps pequenos de arquivo único para cada plataforma suportada, além de apps web
- A licença BSD permite modificar, redistribuir e vender no todo ou em parte, e a comunidade Tcl mantém o core e os lançamentos
- Outras opções de GUI avaliadas tinham as seguintes limitações
- AutoHotkey v2 é adequado para pequenas ferramentas no Windows, mas é exclusivo do Windows e não garante chamadas nativas no Wine
- C# WinForms depende da API do Windows, e MAUI e Avalonia têm dependências pesadas, tornando o desenvolvimento pequeno e não corporativo trabalhoso
- Apps web locais no estilo Electron exigem gerenciar comunicação entre frontend e backend, conflitos de porta e segurança, e até um navegador vazio pode consumir mais de 100 MB
- Janelas simples feitas com Fyne e Gio, do Go, tinham cerca de 40 mil dependências indiretas e binários estáticos com mais de 30 MB, e não pareciam apps nativos
- Qt tem uma configuração complexa de MOC, signal e slot na fronteira nativa, além de licenciamento GPL/LGPL e comercial
- Muitos frameworks modernos de GUI desenham diretamente em canvas em vez de usar as APIs de UI do sistema operacional, e empacotam todo o ambiente de execução por OS e CPU, dificultando obter aparência nativa
Tcl projetada como linguagem de cola
- Lançada por John Ousterhout em 1990, Tcl foi projetada como uma cola arquitetural para conectar código de baixo nível e alto desempenho a uma camada lógica legível por humanos
- Bridge: conecta código como C++ e Rust a UIs de alto nível
- Orchestrate: controla o fluxo de dados entre programas e módulos
- Wrap: expõe operações internas complexas como comandos simples de script
- Tk é um toolkit GUI multiplataforma que complementa a interação por linha de comando do Tcl e pode ser carregado com
package require Tk - O pequeno core em C do Tcl oferece suporte a Windows, Linux, macOS e ARM, x86 e RISC-V
- No Android, a CLI pode usar Termux, e a GUI pode usar AndroWish
- Ousterhout recebeu o ACM Software System Award em 1997 por sua contribuição duradoura ao desenvolvimento de sistemas de software
Casos industriais de uso prolongado
- Tcl é usado há cerca de 40 anos em ambientes onde confiabilidade, compatibilidade retroativa e portabilidade são importantes
git guiegitk, incluídos no Git- Linguagem de automação em ferramentas de FPGA e projeto de chips da Xilinx, Altera e Cadence
- Cisco IOS Embedded Event Manager
- GUIs internas para fazendas de simulação e testadores de hardware da Intel, NVIDIA e AMD
- Calibre e Virtuoso, da Siemens EDA
- Ambientes operacionais ESTEC e ESOC, da ESA
- A mesma ferramenta em Tcl/Tk pode rodar, sem recompilação, de terminais de usinas nucleares até Raspberry Pi
- O SQLite foi criado inicialmente como uma extensão Tcl, e metade dos testes é escrita em Tcl
- Tcl também atua como um “montador” que pós-processa mais de 125 arquivos de entrada em C para gerar o código-fonte final do SQLite com mais de 200 mil linhas
Configuração de instalação e modo de execução
- Uma instalação comum inclui os seguintes componentes
tclsh: interpretador de CLIwish: shell de GUI com Tk e loop de eventosTcllibeTklib: bibliotecas comohttp,csv,json,aes,tooltipedateentry- Pacotes de extensão como Thread, TLS e arrastar e soltar
- Ao executar sem argumentos, abre-se um REPL, permitindo digitar comandos, colar scripts e executar arquivos com
source - Ao passar um arquivo como
tclsh myscript.tclouwish app.tkapp, ele roda em modo batch não interativo - No Windows,
wishé um aplicativo GUI, então usa o Tk Console em vez de um console real, e se a thread da UI bloquear, a saída também pode parecer travada - Para aprendizado, recomenda-se o
tclsh, que fornece entrada e saída padrão em todas as plataformas e também pode carregar Tk
Sintaxe centrada em comandos do Tcl
- O código-fonte em Tcl é composto por palavras separadas por espaços, e a primeira palavra é sempre um comando, enquanto as demais são argumentos
- Os principais elementos da sintaxe são os seguintes
set: define ou consulta uma variável$name: substitui o valor da variávelproc: define um procedimento que funciona como novo comando[...]: executa o script interno e substitui pelo resultado{...}: agrupa como um único argumento sem substituição"...": agrupa como um único argumento, mas realiza substituições de$,[]e\{*}: expande uma lista em vários argumentos::: especifica um caminho global ou de namespace- Quebra de linha e
;: separam comandos
- Em
string range "Tcl Programming" 0 2,stringé um ensemble que despacha para o subcomandorangee retornaTcl if,whileereturntambém são comandos comuns, não palavras-chave reservadaswhileavalia repetidamente as strings da condição e do corpo- Com
uplevel, é possível criar estruturas de controle definidas pelo usuário, comorepeat ... until|while ... returntransmite os códigos de conclusãoTCL_OK,TCL_ERROR,TCL_RETURN,TCL_BREAKeTCL_CONTINUE
Homoiconicidade e substituição segura
- Em Tcl, tanto código quanto dados são strings compostas por palavras, então o mesmo valor pode ser interpretado como lista, dado ou comando executável
- Ao expandir uma lista como em
{*}$userinput, o primeiro elemento vira comando e os demais viram argumentos, então, se argumentos com espaços não forem agrupados corretamente, podem surgir problemas como erro de nome de canal - Essa homoiconicidade facilita DSLs e a extensão de estruturas de controle, mas também cria um ônus de integridade e segurança, já que dados podem virar código executável
- Callbacks devem ser montados com
[list command $arg]para preservar os limites de argumentos que contêm espaços e caracteres especiais - Expressões em
expreifdevem sempre ser envolvidas em{...}para evitar substituição dupla e injeção de comandos, além de permitir otimização por bytecode - O Safe Interpreter bloqueia por padrão acesso ao sistema de arquivos, sockets e bibliotecas externas, e expõe apenas as funcionalidades permitidas por
interp alias
Mudanças no Tcl/Tk 9.0
- A Tcl/Tk Core Development Team lançou o 9.0 em 13 de novembro de 2025, 12 anos após o Tcl 8.6
- As principais mudanças são as seguintes
- transição completa para 64 bits e suporte a todos os code points Unicode
- ZipFS, que monta ZIP como sistema de arquivos virtual
- suporte do Tk a SVG, DPI de alta resolução, notificações do sistema e Dark Mode no Windows e macOS
- perfil
strictpadrão, que gera erro imediatamente em caso de incompatibilidade de codificação
- Também há mudanças de compatibilidade
- scripts que incluem código C com
critclpodem quebrar por causa da mudança no tamanho de ponteiros 010no Tcl 8.x é o octal 8, mas no Tcl 9 é o decimal 10, e octais usam o prefixo0o- o UTF-8 BOM
U+FEFFnão é removido automaticamente, então é preciso cortá-lo explicitamente quando necessário
- scripts que incluem código C com
- O Tcl 8.6 também pode ser usado no desenvolvimento comum de CLI e GUI, mas para novos projetos o 9.0 é recomendado por trazer melhorias de segurança e de UI
- Como implementações pequenas, há o Jim TCL, com cerca de 100~200kB, e o Picol, com menos de 1.000 linhas de código C
Widgets do Tk e aparência moderna
- O Tk não expõe diretamente Win32, X11 e Cocoa, mas os abstrai por meio de comandos de widget e binding de eventos
- O Tk inicial deixou uma impressão ultrapassada por causa dos widgets clássicos cinzas e quadrados, mas o
ttkoferece widgets mais próximos dos temas do sistema operacional- os temas incluídos por padrão são
alt,default,clameclassic - apps antigos podem trocar widgets clássicos por
ttk::treeview,ttk::notebook,ttk::progressbaretc.
- os temas incluídos por padrão são
- O applet de calculadora de hipoteca de 1996 rodou também no Tcl 9.0.3, e a versão modernizada adiciona
grid, validação de entrada, entrada inicial, suporte a DPI e canvas responsivo- o original tem 188 linhas, excluindo comentários e linhas em branco, e a versão modernizada tem cerca de 250 linhas incluindo os novos recursos
- o mesmo script roda no Windows 10, Linux Mint, tablets e celulares Android e SBCs ARM
- O Tcl/Tk 9.0 escala quase proporcionalmente em 96 DPI e 144 DPI no Windows, e deve-se usar unidades relativas e padding em vez de pixels fixos
- Recomenda-se aprender hierarquia de widgets, caminhos baseados em ponto, layout e eventos pelo tutorial do TkDocs
Loop de eventos e baixo acoplamento
- O loop de eventos do Tcl processa mouse e teclado, arquivos e canais e callbacks em ordem de fila em uma única thread, e começa em segundo plano quando o Tk é carregado
treeviewescrollbarsão widgets irmãos que não contêm um ao outro e atualizam suas posições nos dois sentidos trocando prefixes de comando- O Tk pode entregar a widgets eventos virtuais como
<<UI:Request:Submit>>com payloaddict - Um
EventManagerreutilizável pode gerenciar, em um dicionário, listas de assinantes por evento e chamarevent generateapenas para widgets existentes- cumpre papel parecido com C# Events/Delegates,
CustomEventdo JavaScript e PyPubSub·blinker do Python - pode enviar resultados de validação a vários assinantes, como popup, inspector e botão
Send, sem referências diretas
- cumpre papel parecido com C# Events/Delegates,
- Mesmo em Tcl puro, é possível criar um gerenciador de eventos que chama callbacks de assinantes, útil para animação de console baseada em
tickde 50ms ou rolagem sincronizada de vários canvas - Um design de eventos centrado em dados é adequado para sistemas em estilo MVC, com separação entre UI e lógica, e corresponde às etapas de seleção de eventos, coleta de informações, decisão de estratégia, execução e avaliação do PIOSEE
Conexão com Python e processos externos
- O
tkinterdo Python é um wrapper do Tk, mas exemplos antigos e o tema padrão podem passar a impressão de que o próprio Tk está ultrapassado- para uma aparência moderna, é preciso usar explicitamente
from tkinter import ttkettk.Label,ttk.Buttonetc.
- para uma aparência moderna, é preciso usar explicitamente
- Recomenda-se usar o Tk no Tcl, para o qual ele foi originalmente projetado, e separar o Python como camada de processamento de dados
- Para tarefas pontuais em Python, usa-se
exec; para tarefas assíncronas persistentes, conecta-se por pipe comopen "|python3 -u script.py" r+- com modo não bloqueante, buffer por linha e
fileevent, é possível executar tarefas com NumPy e Pandas mantendo a responsividade da GUI
- com modo não bloqueante, buffer por linha e
- Da mesma forma, ao conectar processos filhos nativos como C#, mesmo que o processo de cálculo trave ou consuma toda a CPU, o processo de UI permanece separado
- O EOF do pipe também é um evento readable, então é preciso verificar
[eof $pipe]na função de tratamento para evitar callbacks infinitos
Representação de valores, estruturas de dados e desempenho
- “Everything is a String” significa que todo valor tem uma representação padrão em string, não que ele seja sempre armazenado como string
Tcl_Objé um objeto de porta dupla que gerencia ao mesmo tempo uma representação em string UTF-8 e representações internas como integer, list, dict e byte array- O trabalho de recriar a representação interna quando o tipo necessário muda é chamado de shimmering
- em list, deve-se continuar usando
lappendelindex; em dict,dict; e em binários, o comandobinary, para reduzir custo de conversão e corrupção de dados tcl::unsupported::representationpermite diagnosticar o ponteiro do objeto e sua representação interna
- em list, deve-se continuar usando
- O Tcl usa Copy-on-Write, então ao atribuir valores ele não copia imediatamente, mas duplica o objeto compartilhado quando ele é realmente modificado
- Para binários como PNG, é preciso definir
-translation binaryno canal e usarbinary encode/decodepara evitar conversão de CR/LF e UTF-8 dict setcria automaticamente caminhos intermediários, edict withedict updatepermitem modificar valores aninhados como se fossem variáveis locais- chaves duplicadas são consolidadas pelo método Last Writer Wins, em que o último valor prevalece
- Listas são adequadas para dados ordenados e estruturas em forma de matriz; dicionários, para dados gerais aninhados de chave-valor
Arrays, namespaces e TclOO
- Namespaces são contêineres dinâmicos que guardam variáveis e comandos, e
namespace ensemblepode criar um dispatcher comoLogger log - Variáveis e comandos usam tabelas hash separadas, então o mesmo nome pode existir ao mesmo tempo, e
info vars,info commandseinfo procspermitem inspecionar a estrutura em tempo de execução - Tcl Array é uma tabela hash plana que aponta para variáveis individuais
- é adequado para coleções com chaves dinâmicas, como estado de UI, e permite fazer binding ou trace de elementos individuais a widgets
- em procedimentos, é preciso passar o nome do array e conectar um alias ao original com
upvar
- Recomenda-se usar namespaces para estado global/singleton com chaves fixas e arrays para coleções com chaves dinâmicas
- Incluído no core desde o Tcl 8.6, o TclOO fornece classes, objetos, herança e construtores/destrutores com base em namespaces e despacho de comandos
- objetos são comandos reais, como
::oo::Obj42, e armazenam estado em um namespace dedicado oo::definepermite alterar classes, eoo::objdefine, objetos específicos, em tempo de execuçãomymethodcria um callback completo de método de objeto para passar aafteretc.
- objetos são comandos reais, como
- O TclOO não tem garbage collection, então é preciso remover objetos explicitamente com
$obj destroy- o ciclo de vida pode ser gerenciado com
try/finallyoumanaged_createbaseado em trace de variável - channels também exigem
close, emanaged_channelpode limpá-los automaticamente ao fim do escopo
- o ciclo de vida pode ser gerenciado com
- Widgets do Tk também permanecem como comandos, mas se um widget pai for
destroy, todos os filhos são removidos junto
Corrotinas e threads
- As corrotinas de Tcl são corrotinas stackful que mantêm toda a pilha de chamadas e, após
yield, retomam preservando variáveis locais e o ponto de execução - Ao combinar
aftere corrotinas, é possível tratar downloads, máquinas de estado, animações e trabalho de rede sem bloqueio dentro do loop de eventos- Em CLI pura,
vwaité necessário para manter o processo ativo, mas em apps Tk o gerenciador de janelas mantém o loop de eventos - O
coroutine::utildotcllibfornece wrappers compatíveis com corrotinas parasocket,getseread
- Em CLI pura,
- Como as corrotinas compartilham uma única thread de CPU, se um cálculo longo for executado toda a UI trava; esse tipo de trabalho deve ser separado com o pacote Thread
- O Tcl Thread usa um modelo shared-nothing em que cada thread tem um interpretador isolado
thread::sendtransmite mensagens, e TSV fornece valores compartilhados protegidos por mutex- Canais transferem propriedade com
thread::transfer,detacheattach
- Uma thread presa em loop infinito não volta para a fila de eventos, então não pode ser encerrada à força com segurança
- Em um AMD 5950X, ao criar 32 threads filhas, a memória aumentou de 24MB para 44MB, usando cerca de 0,6MB por interpretador
- O threading em Tcl é um recurso para responsividade de UI e orquestração de I/O, não para competir em desempenho de cálculo
- No teste de 100 milhões de raízes quadradas, AoT C# levou 0,24 segundo e Tcl 16,8 segundos, uma diferença de cerca de 70 vezes
Separando cálculos com C·C#
- O
critclcompila código C·C++ dentro de scripts Tcl na primeira execução e o chama como comando nativo- Durante o desenvolvimento,
gccouclangsão necessários, e depois de pronto é possível distribuir o pacote pré-compilado como.dll·.so
- Durante o desenvolvimento,
- Trechos críticos de desempenho, como Mandelbrot ou Fibonacci, podem ser movidos para C, mas lidar diretamente com a estrutura de memória Tcl/C é complicado
- Uma alternativa é deixar Tcl/Tk como uma UI fina e delegar o cálculo a um processo separado no padrão sidecar (Sidecar Pattern)
- BFlat compila C# em binários nativos autônomos e oferece suporte a Windows·Linux·Android
- Uma CLI básica de cálculo numérico fica em torno de 900KB no Windows e pode cair para menos de 500KB após compressão com UPX
- Combinando com o interpretador Tcl de cerca de 3MB, é possível montar apps por plataforma com cerca de 3~4MB
ZipFS e distribuição em arquivo único
- Antes do Tcl 9, usava-se Starpack, que anexava um Starkit ao Tclkit, mas isso dependia de ferramentas separadas como Metakit e SDX
- O ZipFS do Tcl 9 monta ZIPs como sistema de arquivos virtual somente leitura em
//zipfs:/ - O Zipkit combina
tclsh·wishligados estaticamente com o ZIP do app e executamain.tclna inicialização- Há alvos para Windows x86/x86_64, macOS Intel·Apple Silicon, Linux x86_64/arm64/RISC-V 64-bit e famílias Solaris
- Basta trocar o Zipkit de modelo para fazer cross-packaging de binários para outros SOs
- O ZipFS surgiu da implementação de VFS do AndroWish, que precisava ler diretamente arquivos dentro do APK, e depois foi incorporado ao core do Tcl
- Se incluir
.dll·.soespecíficos de plataforma, será preciso detectar a plataforma de execução e escolher a extensão correta
AndroWish e Decent Espresso
- O app DE1 da Decent Espresso continua sendo um app Tcl/Tk executado em AndroWish mesmo em abril de 2026
- O tablet usa uma arquitetura local-first em que atua como par da máquina de café, e não como cliente de um servidor remoto
- O AndroWish mapeia comandos de desenho do Tk para texturas SDL2, permitindo visualizações de alta frequência mesmo em tablets Android de baixo custo
- A extensão
borgfornece Bluetooth, notificações, vibração, voz, localização e eventos de estado do Android - Em maio de 2026, ele ainda suporta apenas Tcl/Tk 8.6, então comandos exclusivos do Tcl 9 não podem ser usados
- A extensão
- O SDK do AndroWish cria APKs com scripts incluídos, e ao remover extensões desnecessárias é possível reduzir de cerca de 30MB para 4~10MB
undrowishé um interpretador de arquivo único para testar o mesmo ambiente SDL em Windows·Linux, mas não inclui oborgdo Android- Com
tkconclient, é possível acessar remotamente o interpretador Android a partir do PC, mas como não há senha isso só deve ser usado durante o desenvolvimento - O Tk tem limitações para adaptação automática de imagens raster por resolução do Android e para UIs touch em tela cheia, então a Decent Espresso implementou sua própria UI no estilo skin
Wapp, DSL e sandbox
- Wapp é um framework web Tcl centrado em arquivo único criado por D. Richard Hipp
- Ele oferece servidor de socket próprio, suporte a CGI·SCGI e já trata por padrão a decodificação de URI e a higienização de parâmetros
- É usado no app de checklist que gerencia o processo de release do SQLite e na web UI do Fossil
- Ao combinar com htmx e um pouco de CSS, é possível criar apps web centrados em procedures Tcl sem JavaScript
- Se acesso remoto·móvel for essencial, recomenda-se Wapp; para ferramentas locais, recomenda-se Tk, que se integra diretamente ao sistema operacional
- Em Tcl, até laços e condicionais são comandos, o que o torna adequado para construir DSLs
- Com
unknown,upleveleupvar, é possível criar comandos de negócio comocheckout 1000 USD - Expondo apenas comandos permitidos em Safe Interpreter, dá para montar ambientes de script restritos para bancos·EDA
- Com
- Também é possível criar comandos no estilo macro para gerar etapas de pós-processamento de strings ou fluxos de execução específicos da aplicação
Recursos nativos do sistema operacional
- Tcl/Tk chama não só comandos comuns, mas também APIs específicas de plataforma por meio de extensões
- O TWAPI do Windows fornece APIs de baixo nível próximas ao Windows SDK e interfaces de conveniência
- Com
twapi::shell_execute -verb runas, é possível solicitar elevação de privilégio via UAC - Ele permite acessar horários de criação·modificação de arquivos, atalhos globais, serviços e funções do Windows
- Com
- Em um caso de ferramenta auxiliar para Adobe DNG Converter, após converter RAWs recentes em DNG compatível com CS6, os horários de criação·modificação do arquivo original foram restaurados com TWAPI
- Tcl puro só consegue lidar com horários de modificação·acesso, então para restaurar o horário de criação no Windows é necessário TWAPI
Limitações e disciplina de desenvolvimento
- Em Tcl, a correção depende mais da disciplina do desenvolvedor do que de um compilador
- Se a diferença de substituição entre
{}e""for mal compreendida, podem surgir substituição dupla e vulnerabilidades de segurança dict get,expreformataninhados ficam mais legíveis quando separados em variáveis por etapa- Redefinir demais a linguagem pode levar a um sistema de comandos personalizados difícil de manter
- Se a diferença de substituição entre
- Em vez de
null, Tcl distingue entre existência de variável e string vazia, verificando cominfo exists- Se uma string vazia for colocada em uma expressão aritmética, ela não é convertida automaticamente em 0 ou NaN; ocorre um erro
- Não é adequado para 3D em tempo real·áudio e cálculo de grandes matrizes
- É possível usar Tcl3D·Canvas3d e comandos externos de áudio, mas esse não é seu uso principal
- Se uma matriz de 1GB for tratada como string·lista, o custo de gerenciamento de objetos cresce demais, então uma biblioteca C ou um processo de cálculo separado é mais adequado
- Os pontos fortes de Tcl são coordenação baseada em corrotinas·threads, I/O e eventos, camadas de apresentação Tk·CLI, testes e automação
Pacotes e ambiente de desenvolvimento
- O Tcl não tem um gerenciador central de pacotes universal equivalente a
npmoupip, e oteacupe oteapotdo ActiveTcl se tornaram em grande parte legados - Distribuições Batteries Included fornecem junto pacotes validados
- Magicsplat oferece um conjunto selecionado de pacotes Tcl/Tk 9 com foco em Windows
- BAWT é um framework de build maximalista para criar distribuições com extensões para várias plataformas e CPUs
- Dependendo da configuração, é possível reunir os principais pacotes do ecossistema em cerca de 35 MB
- A ausência de um gerenciador central não o torna automaticamente mais seguro, mas traz a vantagem de permitir fixar todas as dependências e analisá-las de uma vez
- Por causa da geração dinâmica de comandos, o Tcl dificulta análise estática e autocompletar, e o Nagelfar também não consegue validar completamente comandos desconhecidos ou redefinições em tempo de execução
- No VSCode e no VSCodium, é possível usar Tcl by bitwisecook, Tcl Navigation and Tools, Code Runner
Instalação por plataforma
- No Windows, ao instalar o Magicsplat Tcl/Tk para todo o sistema, é possível configurar o PATH e as associações de
.tclappe.tkapp - Em sistemas da família Debian e Ubuntu, é possível instalar Tcl, Tk, SQLite, TLS, imagens e Thread com os seguintes pacotes
sudo apt-get install tcl tk libsqlite3-tcl sqlite-tcl tcltls tcllib libtk-img tcl-thread
- Vários repositórios LTS de Linux oferecem Tcl 8.6, e builds com extensões para Tcl 9 estão disponíveis em tcl-builds-with-libxft
- Há casos de funcionamento do Tk não só em X11, mas também em ambientes Wayland como o Zorin OS 18
- O Tcl 8.5 padrão do macOS existe para compatibilidade legada, então é recomendável evitá-lo no desenvolvimento moderno com Tcl/Tk
- É possível instalar Tcl/Tk 9 com Homebrew, MacPorts ou builds experimentais do BAWT
- Em Apple Silicon,
/opt/homebrew/opt/tcl-tk/bindeve ficar no início do PATH para ter prioridade sobre o Tcl do sistema
Materiais de aprendizado e avaliação final
- The Tcl 9 Programming Language é um material avançado que aborda Tcl 9 puro em profundidade, e para entender todos os recursos recomenda-se reler várias vezes e acompanhar os exemplos manualmente
- TkDocs cobre Tk moderno,
grid, o loop de eventos e técnicas antigas que devem ser evitadas - O material do Tutorialspoint não é recomendado por incluir métodos de instalação antigos e práticas como
exprsem chaves - Os REPLs de
tclshewishmostram o modo de uso quando argumentos incorretos são inseridos, então podem ser usados com a documentação como ferramenta de aprendizado por experimentação - O Tcl/Tk não é um ecossistema da moda nem com uma comunidade de grande escala, mas continua sendo um conjunto de ferramentas de uso geral que valoriza compatibilidade de longo prazo e consistência em equipes pequenas e indústrias de missão crítica
- É adequado quando se quer uma “boring technology” que funcione por décadas em vez de uma stack que muda rapidamente, e quando se precisa da camada de CLI, GUI, automação e orquestração mais do que de um motor de cálculo
Ainda não há comentários.