본문 바로가기

프로그래밍

[NS2] C++와 OTcl 두 가지 언어를 사용하는 이유

반응형

NS2는 인터페이스를 구성하는 OTcl(프론트엔드)과 시뮬레이션을 실행하는 C++(백엔드)로 이루어져 있다. 2가지 언어를 사용해야 하고 두 언어 사이에 연동(Binding)해야 하므로 번거롭지만, 언어를 분리해서 사용해야 하는 이유가 있다. 바로 NS2 시뮬레이터의 크기가 상당히 크기 때문이다.


C++은 코드를 바로 실행하지 못하고, 컴파일 과정을 거쳐서 실행파일을 생성한 뒤에 실행할 수 있는 컴파일 언어(Compiled language)이다. 컴파일 과정을 거치므로, 코드를 수정하면 다시 컴파일해야 하지만 실행속도는 빠르다. 반면에, OTcl은 컴파일 과정을 거치지 않고 코드만으로 바로 실행할 수 있는 인터프리트 언어(Interpreted language)이다. OTcl은 코드를 수정한 부분을 바로 실행할 수 있지만, 실행속도는 느린 편이다. 즉, C++은 속도는 빠르지만 변화를 적용하는 데 오래 걸리고(컴파일하는 데 보통 몇 초 정도 걸린다), OTcl은 실행속도는 느리지만 변화를 빠르게 적용할 수 있다.


따라서 크기가 큰 NS2의 내부 동작은 C++로 작성하되, 자주 바뀌는 네트워크 구성 부분인 인터페이스 부분은 OTcl로 작성하여 두 언어의 장점을 모두 활용한 것이다.

반응형