OTcl(MIT Object Tcl의 약자)은 Tcl/Tk 스크립트 언어에 객체 지향 프로그래밍 기능을 추가한 확장 언어이다. 미국 매사추세츠공과대학(MIT)의 데이비드 웨더럴(David Wetherall)이 개발하였으며, 이름에서 알 수 있듯이 'MIT Object Tcl'의 줄임말이다. 최초 공개는 1995년경으로, MIT 컴퓨터 과학 연구소의 VuSystem 프로젝트의 일환으로 개발된 것으로 알려져 있다.
OTcl은 주로 네트워크 시뮬레이터인 NS-2에서 사용되며, 일반적으로 유닉스 환경에서 실행된다. 이후 XOTcl(Extended OTcl)이라는 확장판으로 발전하였다. 한편, OTcl이라는 명칭은 딘 시넌(Dean Sheenan)이 개발한 무관한 별개의 확장인 'IXI Object Tcl'을 가리키는 데 사용되기도 하므로 구별이 필요하다.
이러한 객체 지향 Tcl 확장들은 이후 더 널리 사용된 incr Tcl보다 먼저 등장한 것들이다.
주요 문법 특징
OTcl의 문법은 다음과 같은 특징을 지닌다.
- 클래스 정의에는 예약어
Class를 사용한다. - 클래스의 메서드(메소드)는
instproc키워드로 선언한다. self변수는 해당 클래스를 가리키는 포인터로, C++ 또는 Java의this에 해당한다.- 상속 계층을 정의할 때는
-superclass키워드를 사용한다. 예를 들어Class Son -superclass Father는 Son 클래스가 Father 클래스를 상속받음을 의미한다. - 인스턴스 생성은
[new 클래스명]형태로 수행한다.
간단한 예시 코드는 다음과 같다.
Class HelloWorld
HelloWorld instproc hello {} {
puts "Hello world"
}
set helloworld [new HelloWorld]
$helloworld hello
TclCL
TclCL(Tcl with Classes)은 OTcl 위에 C++ 연동 계층을 제공하는 인터페이스이다. Mash, vic, vat, rtp_play, ns, nam 등의 도구에서 사용되었다. 이를 통해 C++로 작성된 기능을 OTcl 스크립트에서 활용할 수 있게 된다.
관련 자료
OTcl은 현재 SourceForge를 통해 otcl-tclcl 프로젝트로 배포되고 있으며, tcl-lang.org 위키와 Wikipedia에서 관련 문서를 확인할 수 있다. Tcl 8.6 버전부터는 별도 확장 없이 객체 지향 기능을 지원하는 TclOO가 내장되어 있으나, OTcl은 여전히 NS-2 시뮬레이터 등 특정 분야에서 역사적·실무적 의의를 지닌다.