Tcl/Tk가 아직도 나와?
Tcl/Tk 9.1이 나왔어요. “Tcl이 뭐지?” 하는 분도 많을 텐데요. Tcl(‘티클’이라고 읽어요)은 1988년 존 오스터하우트(John Ousterhout) 교수가 만든 스크립트 언어이고, Tk는 Tcl로 GUI를 만드는 툴킷이에요. 파이썬이나 루비보다도 먼저 나온 고참 언어죠.
옛날 언어처럼 들리지만 사실 여러분 가까이에 있어요. 파이썬을 설치하면 딸려 오는 GUI 라이브러리 tkinter가 바로 Tk를 감싼 거예요. import tkinter를 써봤다면 이미 Tk를 써본 셈이죠. SQLite의 방대한 테스트 스위트도 상당 부분 Tcl로 작성돼 있어요. SQLite가 원래 Tcl 확장으로 시작했거든요.
9.0에서 9.1로: 큰 공사 다음의 다듬기
9.1을 이해하려면 2024년 가을에 나온 Tcl/Tk 9.0부터 알아야 해요. 9.0은 1997년 8.0 이후 무려 27년 만의 메이저 버전이었고, 오래된 한계를 한꺼번에 걷어냈어요.
- 64비트 크기 지원: 예전에는 문자열이나 리스트 크기가 32비트 정수로 제한돼서 2GB 근처에서 벽에 부딪혔는데, 이 제한이 풀렸어요.
- 완전한 유니코드 지원: 이모지처럼 기본 영역(BMP) 밖에 있는 문자도 제대로 다룰 수 있게 됐어요. 예전에는 자주 쓰는 글자만 제대로 다뤘다면, 이제는 모든 문자를 똑같이 다룬다는 뜻이에요.
- zipfs: 스크립트와 리소스를 zip 파일 하나에 넣어 실행 파일에 묶을 수 있는 가상 파일 시스템이 코어에 들어왔어요. 덕분에 배포가 훨씬 쉬워졌죠.
- Tk 쪽 개선: SVG 이미지, 시스템 트레이와 알림, 인쇄 기능 같은 현대적인 기능이 추가됐어요.
반도체 현장에서는 현역 중의 현역
한국 개발자에게 Tcl이 특히 의미 있는 이유가 있어요. 반도체·EDA(전자설계자동화) 업계에서는 Tcl이 사실상 표준 스크립트 언어거든요. Synopsys나 Cadence 같은 칩 설계 툴, AMD(Xilinx) Vivado와 Intel(Altera) Quartus 같은 FPGA 툴의 명령어 인터페이스가 Tcl이에요. 합성, 배치배선, 타이밍 분석 스크립트를 짜는 엔지니어는 매일 Tcl을 쓰고 있는 셈이죠. 반도체 산업 규모가 큰 한국에서는 생각보다 Tcl 수요가 꾸준해요. 네트워크 장비 자동화에 많이 쓰이던 Expect(대화형 프로그램을 자동으로 조작하는 도구)도 Tcl 기반이고요.
다른 언어와 비교하면
Tcl은 ‘모든 게 문자열’이라는 독특한 철학을 갖고 있어요. 명령 하나하나가 문자열로 해석되는 구조라 문법이 아주 단순하고, 다른 프로그램 안에 스크립트 언어로 임베딩하기도 쉬워요. 요즘은 이 역할을 Lua가 많이 가져갔죠. 게임, Neovim, Redis 같은 곳에서요. 파이썬도 임베딩할 수는 있지만 훨씬 무거워요. GUI 쪽에서는 Qt, GTK, 그리고 Electron이나 Tauri 같은 웹 기반 도구가 대세예요. 그래도 가볍고, 크로스플랫폼이고, 의존성이 거의 없는 GUI를 빠르게 만들 때는 Tk가 여전히 쓸 만해요.
한국 개발자에게 주는 시사점
반도체나 하드웨어 쪽 커리어를 고민하고 있다면 Tcl은 확실히 배워둘 가치가 있어요. 웹 개발자라면 당장 쓸 일은 적겠지만, 파이썬 tkinter로 간단한 사내 도구를 만들 때 그 밑바탕인 Tk가 좋아진다는 건 반가운 소식이에요. 무엇보다 38년 된 언어가 64비트화와 유니코드화라는 큰 공사를 끝내고 꾸준히 릴리스를 이어간다는 것 자체가 좋은 교과서예요. 오래된 소프트웨어를 어떻게 유지보수해야 하는지 보여주거든요.
마무리
Tcl은 사라진 게 아니라, 필요한 곳에서 조용히 계속 일하고 있어요. 9.1은 그 증거고요. 업무에서 Tcl을 만나본 적 있으신가요? EDA 스크립트나 Expect, tkinter를 써본 경험이 있다면 공유해주세요!
🔗 출처: Hacker News