Tcl/Tk는 프로그래밍 언어이며, C나 자바에 비하면 상당히 쉬운 대표적인 스크립트 언어 중의 하나입니다. 스크립트 언어라고 하는 것은 인터프리터에 의해 미리 제공되는 기능을 사용하여, 하고 싶은 것을 간결하고 이해하기 쉽게 쓸 수 있는 언어라는 의미로 해석할 수 있습니다. 반면 컴파일러 언어에 비하면 느리고 복잡한 프로그래밍을 할 수 없는 단점이 있습니다. 2003년 지금 한국에서 가장 잘 알려진 스크립트 언어는 펄과 자바 스크립트입니다. 마이크로 소프트사의 비주얼 베이식을 스크립트 언어에 포함시키는 사람도 있습니다. 많이 쓰이는 스크립트 언어 속에서 Tcl/Tk를 돋보이게 하는 것은 GUI(Graphical User Interface) 베이스의 애플리케이션을 간단하게 작성할 수 있는 언어라는 겁니다. 윈도즈의 메모장 같은 텍스트에디터를 열어서 몇십 줄의 코드를 쓰는 것으로, 화려한 GUI 애플리케이션을 손쉽게 제작할 수 있습니다. 윈도 애플리케이션의 개발이라고 하면, 두꺼운 X-Windows 나 MS-Windows의 API 문서를 공부하지 않으면 안 되는 것이지만 Tcl/Tk로는 위의 두 가지를 신경 쓸 필요 없이, Java 등의 GUI에 비교하면 훨씬 간단하게 제작할 수 있습니다. 또한 파일 조작, 스트링 조작등 프로그램 개발에 꼭 필요한 기능도 충실히 지원하고 있어 재빠르게 개발하는데 적합한 언어입니다. 만약 자신이 쓰고자 하는 기능이 인터프리터에 없다면 부족한 기능을 C언어를 사용하여, Tcl/Tk 인터프리터에 에 새로운 커맨드를 추가하는 등의 확장을 간단히 할 수 있습니다. 이 C언어에 의한 확장을 간단하게 하는 것도 Tcl/Tk의 강점 중의 하나입니다. 또한 이 기능을 사용하여 전 세계의 Tcl 프로그래머들은 데이터 베이스 액세스, 네트워크, 고 성능의 텍스트처리 등을 추가하여 일반 사용자는 대단히 편리하게 사용할 수 있습니다. Tcl/Tk 이름이 나타내듯이 Tcl은 Tool Command Language라고 하는 부분과 Tk(Tool Kit)로 이루어져 있습니다.
Tcl이란?
Tcl/Tk의 Tcl은 Tcl/Tk의 인터프리터의 핵심이 되는 부분입니다. 원래는 버클리대학에 있던 개발자 J.K Ousterhout 박사는, 집적회로의 설계 툴에 사용되어 지던 스크립트 언어가 다른 툴에 의해 전혀 개선될 수 없다는 생각을 하여, 확장성이 높은 인터프리터형 언어를 개발하게 됩니다. Tcl은 평이한 문법을 가지는 간단한 언어로, 펄, 파이썬과 함께 초고급(VHLL) 언어로 알려지고 많은 사용자를 확보하고 있습니다.
Tk란?
Tcl은 확장성이 높은 언어로 개발되었지만, 최초부터 현재 이르기까지 최대의 확장 라이브러리 셋트는 Tk입니다. Ousterhout박사는 유닉스 계산기의 GUI 애플리케이션을 작성하는데 Tcl이 적합하다는 것을 알아차려, GUI 베이스의 계산기를 Tcl/Tk로 개발하게 됩니다. 이때 Tcl/Tk는 1987년에 애플사의 자사 계산기용 비주얼 인터페이스 작성용의 스크립트 언어인 하이퍼 카드(Hyper Card)를 발표하는데 자극을 주게 됩니다. Tk는 유닉스 사용자의 많은 지지를 얻어 현재 윈도즈와 유닉스, 매킨토시에도 이식되어 사용되고 있습니다.
Tcl/Tk의 과거
Tcl/Tk은, 1988년에 John K. Ousterhout 박사에 의해 버클리 대학에서 최초로 제작된 스크립트 언어입니다. 초창기의 Tcl/Tk는 X-Windows의 GUI환경에서 Xlib나 OSF/Motif의 API 프로그래밍에 괴로워 하던 개발자들, 특히 캐드 관련 소프트웨어를 작성하던 개발자들에게 먼저 알려지게 되었으며, 그즈음에 유명세를 탔습니다. 1994년부터 1998년 초까지는 Ousterhout 박사가 선(Sun)에 근무하는 것을 계기로 개발이 매우 진척되었습니다. 이 시기에 버전 8.0이 릴리즈가 되었고, 바이트 컴파일러에 의한 실행속도의 고속화, 웹브라우저 플러그인 개발, 자바와의 융합, 고성능의 정규표현 지원, 내부 문자열을 UTF-8의 통일에 의한 국제화(I18N) 실현 등 많은 기능이 추가되어 갔습니다. 윈도즈, 매킨토시의 지원도 이 시기부터입니다. 그 후, 일단은 Ousterhout 박사가 설립한 Tcl/Tk의 전문 기업에서 개발이 되었지만, 그즈음에 오픈 소스 바람이 거세게 몰려듭니다. Tcl/Tk 커뮤니티도 이 거센 바람을 받아, 2000년 10월부터는 Ousterhout 박사와 세계적으로 유명한 Tcl/Tk의 확장 패키지를 개발한 경험이 있는 몇십 명으로 이루어진 개발진이 결성되었습니다. 이 결성은 지금도 계속되고 있으며, 그들의 대부분이 Tcl/Tk의 버그 레포팅 데이터베이스를 통해 전 세계의 사용자와 늘 토론을 하며, 개발을 진행 중에 있습니다.
Tcl/Tk의 현재
Tcl/Tk는 1988년에 첫 탄생하여 현재도 개발이 진행중인 언어로써, 오늘날까지 살아남고 있는 C언어 이후로는 가장 역사가 깊은 언어에 속합니다. 현재는 오픈소스의 체제가 찢어져 있어, 본거지는 소스포지(SourceForge)에 있습니다. 또 1998년 ~ 2000년 10월 사이에 개발의 거점이었던 Scriptics ∼ AjubaSolutions 경에 Tcl Developer Exchange( http://tcl.activestate.com )가 구축되었습니다. Tcl/Tk는 원래 유닉스 머신을 기본으로 보급되어 왔지만, 현재는 유닉스 이외의 윈도즈/매킨토시에도 사용가능합니다. 이것은 펄 언어와 같은 이식이 아니고, 오픈소스의 개발진들이 자신의 운영체제에서 실행되는 Tcl/Tk를 모두 동시에 개발/배포하고 있으므로, 타임 러그(Time Lug)가 없어 어느 운영체제에서도 언제나 최신 버전을 사용할 수 있습니다. 참고로 말하자면 펄, Tcl/Tk, 파이선은 각각 태어난 시기가 1987, 1988, 1990년 비슷하게 개발되어 상호 간에 영향을 주거나 받는 언어라고 볼 수 있습니다.
Tcl/Tk는 사용하지 말아라?
이것은 아마도 GNU의 창시자 리처드 스톨만씨의 발언 때문이란 생각이 듭니다. GNU는 일찍이 ‘유닉스 벤더 회사들이 자사의 유닉스 소프트웨어에 라이선스를 적용해서 사용을 유료화한 것에 대해, 이렇게 되어서는 프로그램의 개발이 특허로 얽혀서 뛰어난 소프트웨어를 만들 수 없다’라고 생각하여 유닉스의 표준프로그램을 모두 공짜로 제공하는 것을 목적으로 자유재단(FSF:Free Software Foundation)에 따라서 1984년에 설립된 프로젝트입니다. 이 이념은 많은 유닉스 이용자에게 지지를 얻어, 현재의 많은 유닉스 사용자들 중 GNU에서 만들어낸 소프트웨어를 이용하지 않는 사람이 없을 정도로 되었습니다. 창시자 스톨만 씨도 유닉스상의 대표적인 에디터인 GNU Emacs의 개발을 한 전설적인 뛰어난 프로그래머이기도 합니다.
리처드 스톨만은 1994년에 전자 뉴스상에서 ‘Tcl은 프로그래밍 구현에 결함이 있어, GNU에서는 이 소프트웨어를 채용할 생각이 없다’라고 발언을 하여 대단한 바람을 불러일으켰습니다. 이러한 발언이 있은 후 Tcl/Tk 는 Sun으로 개발을 옮겨가서, 더욱 강력해짐과 동시에 버전 8대가 되어 여러 가지 면으로 훌륭한 스크립트 언어로 자리매김을 하게 되었습니다. Tcl/Tk는 리처드 스톨만의 한마디 발언 때문에 뜻밖의 이득을 본 셈이지만, Tcl/Tk는 GNU가 채택하지 않으면서도 오늘날까지 개발이 계속되고 있는 언어입니다. Tcl/Tk 와 자주 비교되는 펄 도 해당되는 내용이지만, 오후의 조용한 한때에 하품을 하면서 취미로 즐길 수 있는 언어가 아니고, 어디까지나 실용에 주안을 둔 언어라는 점입니다. 그 때문에 펄 프로그래머나, Tcl/Tk의 프로그래머는 지극히 실용지향, 결과 지향적인 코딩을 좋아한다고 볼 수 있습니다.