본문으로 바로가기

Tcl/Tk는 어디에 쓰는가?

category 카테고리 없음 2024. 4. 8. 10:46

플랫폼 독립적인 윈도우 어플리케이션을 개발할 수 있는 것에 대해서

커맨드 프롬프트 방식인 키보드로 타이핑을 하는 도스커맨드나 유닉스 쉘커맨드에 비교하여, 마우스만으로 조작할 수 있는 어플리케이션을 개발하는 것은 상대적으로 많은 노력이 필요합니다. 이것은 오늘날의 대표적인 윈도우 시스템인 MS-Windows, X-Windows, 매킨토시의 어느 것에서도, 방대한 양의 API 즉, 윈도우의 버튼을 제어하거나 버튼의 이벤트에 대응하는 코드를 작성하기 위해서는 C 언어의 지식이 필요하게 마련입니다. 게다가 이들의 API는 위에서 언급한 세 개의 시스템 간에도 사용 방식이 전혀 다르므로, 현재 자신이 사용 중인 플랫폼의 API로 윈도우 어플리케이션을 개발하는 것은, 다른 플랫폼에서는 전혀 사용할 수 없다는 얘기가 됩니다. 이것에 대하여 1995년 플랫폼에 독립적인 코드로 윈도우즈 어플리케이션을 개발할 수 있는 자바가 등장합니다. 그러나 자바는 항상 분산 오브젝트 데이터 베이스라든지, 네트워크 솔루션을 개발하는 사람에게만 사용되고 있습니다. 자바는 주로 대규모 프로젝트에서 위력을 발휘하지만, 상당한 양의 API를 스터디해야 하는 노력이 필요하다 보니 사용자에게 가까워지고 친숙해지기 어려운 단점이 있습니다. 그래서 마치 ‘에디터의 매크로’ 인 것 같은 윈도우 어플리케이션의 기술언어의 탄생은 갈망의 대상이었습니다. Tcl/Tk는 이른바 이것에 준하는 형태로 X-Windows, MS-Windows, 매킨토시의 세 개의 시스템에 공통적으로 사용할 수 있는 언어입니다. 그 결과 유닉스의 X-Window 시스템과 MS-Windows, 그리고 매킨토시의 사이에서는 완벽한 호환성을 가지고 동작시킬 수 있게 되었습니다.

또 다른 하나의 RAD툴

일반적으로 RAD툴이라고 하면, VisualBasic, Delphi, C++Builder, JBuilder 등의 마우스 조작만으로 윈도를 만들 수 있고, 버튼이나 그림을 붙여 나가는 타입의 통합 개발 환경(IDE:Integrated Developing Environment)을 일컫지만, Tcl/Tk는 다른 RAD툴이라고 말할 수 있습니다. Tcl/Tk는 쓸만한 디버거도 문서도 관리툴도 없는 IDE와는 반대의 극적인 스타일입니다. Tcl/Tk는 본질적으로 업무에 조금 활용하는 엔드유저(end user) 대상 툴, 혹은 연구등으로 개발한 시스템의 데모등, 간단히 사용하고자 하는 작은 어플리케이션을 만드는데 적합한 툴입니다.

적은 라인수로 윈도우 어플리케이션을 작성할 수 있는 것에 대해서

최근엔 인터넷이나 멀티미디어의 발전에 의해서 계산기의 이용이 거의 없어진 대신, 컴퓨터에 계산을 맡기는 사용자가 대부분입니다. 이러한 유저에게 있어서는 쉘로 명령을 주는 것보단, 버튼의 조작으로 간단히 실행할 수 있는 윈도우 어플리케이션이 유용할 것입니다. 종전의 표 계산 소프트웨어의 매크로등이 이것 때문에 사용되어 왔지만, 막상 사용하려 하면 기능이 모자라 사용자들을 곤란에 빠트리게 하곤 했습니다. Tcl/Tk는 이러한 정형적인 작업을 잘 다루는 사람에게 유용한 툴로서, 윈도우 어플리케이션을 빠른 시일 내에 작성하는데 대단히 적합한 언어입니다.

C언어로 인터프리터를 확장할 수 있는 것에 대해서

Tcl/Tk의 인터프리터는, 어느 시스템이라도 C언어로 확장하기 위한 개발용 라이브러가 표준으로 같이 배포되고 있습니다. C언어를 사용할 수 있는 사람이라면, Tcl/Tk의 인터프리터에 자신의 커맨드나 다른 기능들을 추가한 기능 강화판을 간단히 작성할 수 있습니다. 또 Tcl/Tk의 8.0 버전부터는 유닉스에 말하는 공유라이브러리(*.so), 윈도우즈에서 말하는 공유라이브러리(*.dll)를 로드하여 사용하는 것이 가능해졌으며, 인터프리터의 소스코드를 수정하지 않고, C언어로 만든 공유라이브러리로 확장할 수 있게 되었습니다. 또한 반대로 자신의 프로그램에 Tcl 언어의 인터프리팅 기능을 추가하는 것도 간단하게 할 수 있습니다.

Tcl/Tk는 이런 사람에게 적합하다.

  • 자신의 프로그램에 파라미티를 해석할 수 있는 인터프리터 기능을 내장하고 싶다.
  • 윈도우 어플리케이션을 만들고 싶지만, 각 플랫폼의 API를 습득하는 것은 귀찮다.
  • 마우스 조작만으로 실행이 가능한 간단한 프로그램을 손쉽고 빠르게 만들고 싶다.
  • 커맨드 라인의 조작만으로 이루어진 프로그램에 이것을 호출하는 윈도우를 붙이고, 유저 인터페이스 만이라도 윈도우 어플리케이션인척 하고 싶다.
  • 프로그램이 처리하는 내용은 단순하지만, 뭔가 있어 보이는 프로그램을 만들고 싶다.
  • 다양한 플랫폼의 호환성이 높은 윈도우즈 어플리케이션을 개발하고 싶다.