임프랍니다.
원래 언어 자체의 구조가, C++은 Pascal보다 느릴 수밖에 없습니다.
컴파일 속도면에서 C++의 가장 큰 취약점은, 다른 모듈을 참조할 때 헤더 구조를 사용한다는 것입니다.
기본적으로 C/C++ 헤더는 텍스트 소스 파일이므로 컴파일때마다 이것을 일일이 컴파일해야 합니다.
그래서 최근의 C++Builder에서는 프리 컴파일드 헤더(pre-compiled header)라고 해서, 헤더 파일이
사용될 때마다 미리 컴파일을 해둡니다. (빌더/lib 디렉토리에 보시면 vcl50.#00~ 이런 파일들과 vcl50.csm
파일이 프리컴파일된 헤더파일입니다.)
Visual C++에서도 프리컴파일드 헤더를 쓰는 것으로 알고 있습니다.
하지만 이런 프리 컴파일드 헤더를 써도 여전히 델파이보다는 느린데.. 또한가지 헤더 파일 구조의 문제는,
한 헤더파일이 다른 헤더파일을 다시 include하는 경우 실제로 인클루드가 되기 때문에 꼬리를 물고 여러개의
헤더파일이 연달아 포함되는 데 있습니다. 반면에 Pascal의 uses 구문은 2차적으로 다시 포함하지 않습니다.
헤더와는 별개로 또 C++의 컴파일이 느린 이유. Pascal에 비해 C++ 문법이 훨씬 복잡하고 다양한 표현이
됩니다. C++ 매니아들이 흔히 쓰는 포인터들을 여러번 꼬아쓰는 현란한(?) 표현 같은 것은 Pascal에서는
불가능하지요. 이에 반해, Pascal은 원래 처음 설계때부터 실용적인 면 보다는 언어 구조적인 완성도에
많이 치중한 언어입니다. 물론 델파이에 오면서 원래의 설계 취지와는 다른 실용적인 여러 문법이나 키워드가
추가되었지만, 아직도 C++과는 다릅니다.
이런 근본적인 언어의 차이가 있기 때문에.. 델파이보다 C++Builder가 먼저 나왔다 하더라도 델파이의
컴파일 속도가 더 빠른 것은 어떻게 할 수 없습니다. 또 만약 C++Builder가 먼저 나와서, VCL이 C++ 언어로
씌여졌다면 델파이에서 공유해서 사용하는 것은 불가능합니다. 대부분의 경우 Object Pascal의 문법은
C++ 문법의 부분집합이기 때문에(물론 그 반대의 경우도 있습니다만), C++로 씌어진 문법을 Pascal에서
공유하는 것은 상당히 힘듭니다.
델파이와 C++Builder의 거의 유일한 차이점이 사용하는 언어이고, 언어 자체가 다르니 그 언어로부터 오는
차이점을 근본적으로 극복하기는 힘듭니다. 하지만, 그 반면에 그 언어로부터 오는 잇점들도 많이 있지
않습니까? 가령, 인터넷에 수없이 널려있는 C/C++ 코드를 델파이에서 이용하려고 하면 일단 컨버팅해야
하지만, C++Builder에서는 거의 손댈 일 없이 그대로 쓸 수 있습니다.
하긴 저도 델파이와 C++Builder를 함께 쓰고, 한 프로젝트에서 양쪽 모두를 쓸 때도 있습니다. 그렇지만,
거꾸로 생각하면 말이죠. 델파이 모듈이 C++Builder에서 그대로 사용될 수 있다는 것만 하더라도 대단한
것이지 않습니까. 그래서 저는 델파이를 C++Builder의 부분집합으로 생각합니다.
그럼 이만...
개박살 님이 쓰신 글 :
: 컴파일속도가 넘느려욧!!!
:
: 델파이도 가끔 컴포넌트 테스트용으로 쓰는데 컴파일할때마다 놀라죠..
:
: 어쩜 그렇게 빠른지...
:
: 첨부터 씨를 기본으로 제작했다면 시빌더도 무진장 바르게 할수있었을까요??
:
: 흐... 아무튼 1G에서도 넘느리니..
:
: 집에서 300Mhz로 작업하려면 세월이... 갈수록 담배만 늘어갑답니다.
:
: ^^;;
|