임프랍니다.
아까 공지에서 썼던 걸 보시고 말씀하시는 거군요.
"C++Builder가 그 자체로서 델파이를 포함하고 있기 때문에"
쓴 그대로입니다. C++Builder는 그 자체로서 델파이를 포함하고 있습니다. 정확히 말해서, C++Builder에
델파이 컴파일러인 dcc32.exe가 포함되어 있지요.
"Borland Delphi Version 13.0 Copyright (c) 1983,99 Inprise Corporation"
C++Builder의 현재 버전인 5에 포함된 dcc32는 버전이 13.0이고, 델파이5에 포함된 것은 12.0, 델파이6에
포함된 것은 14.0입니다.
그런데, 이렇게 빌더에 포함된 홀수버전의 dcc32.exe는 오브젝트 파스칼 문법중 몇가지 문법이 빠져 있습니다.
대단한 것은 아니고, 델파이에서도 "권장하지 않는" 문법들이죠. 이런 "권장하지 않는" 키워드들은 과거
버전들로 작성된 소스들과의 호환성 때문에 없애지 않고 있지만 쓰지 않는 것이 좋다는 것들입니다.
예를 들면, object 같은 키워드를 들 수 있습니다. object 키워드는 class와 거의 유사한 키워드인데,
과거 터보파스칼/볼랜드파스칼 시절에 class 대신에 쓰였던 겁니다. 현재버전의 오브젝트파스칼에서는
class가 쓰이지만, 이 class 키워드로 만들어진 클래스는 동적으로 힙 생성만 되고, 정적인 생성이 안되지요.
object 키워드는 정적 생성이 되는 키워드입니다. Create로 생성하고 Free로 해제할 필요가 없다는 말이지요.
오래전 터보파스칼부터 중급 이상이셨던 분들이 object와 같은 현재 잘 안쓰이는 키워드를 써서 코딩을
많이 하시더군요. 정적생성을 잘 활용하면 나름대로 편리한 점이 많이 있습니다.
하지만.. C++Builder에서 델파이 소스를 컴파일하지 못하는 대부분의 문제는 여기서 발생하는 것이 아닙니다.
주로 헤더파일 제너레이터의 버그로 발생하지요.
소스가 파스칼이든 C++이든 C++Builder에서는 무조건 오브젝트 파일로 컴파일합니다.
그리고 인터페이스와 임플멘테이션이 한 소스에 존재하는 파스칼의 특성상, 다른 유닛에서 사용하기 위해서는
헤더파일이 필요하지요. 그래서, dcc32.exe내에 C++Builder를 지원하기 위해 컴파일시 dcu대신 obj와 hpp를
생성하는 옵션이 있습니다. 그런데.. 이 hpp 파일 제너레이터에 버그들이 있습니다.
꼭 버그라고 보기보단, 헤더 제너레이터가 원래 모든 파스칼문법과 C++ 문법을 다 지원하지 못하는 셈이죠.
예를 들어, 델파이4였던가에서 새로 추가된 오브젝트 파스칼 문법인 디폴트파라미터의 경우 C++용 헤더로
생성된 hpp 파일에서는 그대로 변환해주지 못하고 그냥 디폴트 파라미터를 날려버립니다.
또 오버로딩은 상관없는데, 오버라이딩된 코드의 경우에도 잘못된 hpp를 생성하는 경우가 있고, com 등
C++과 오브젝트파스칼에서 구현방법이 다른 경우에도 잘못 생성하는 경우가 많습니다.
이렇게 자동생성된 헤더파일의 문제는, 거의 대부분 에러난 부분을 찾아가보면 그리 어렵지 않게 수정할
수 있습니다. 단순히 C++과 파스칼의 미묘한 문법적 차이 때문인 경우도 있구요.
아마도 델파이용 컴퍼넌트를 많이 써보신 분들은 자주 겪으셨을 문제일 겁니다.
그래서.. 말씀드렸던 것처럼.. 델파이는 실제로 C++Builder에 포함되어 있습니다.
특히 자동생성된 헤더파일을 전혀 참조할 필요가 없는, 즉 순수 델파이 프로젝트인 경우에는, 그냥 빈
프로젝트만 하나 새로 만들어서 기존 델파이 프로젝트내의 유닛들을 다 추가시키면 그대로 컴파일되고
잘 동작합니다. 디버깅도 문제없고요.
하지만.. 이대로 그냥 두어서는 누가 델파이를 구입하겠습니까.
그래서 볼랜드에서는 C++Builder를 델파이로 이용하지 못하도록 몇가지 고의적인 제한을 추가시켰습니다.
그 중에 저를 가장 불편하게 만드는 것은, 추가된 델파이 소스의 폼을 에디트하지 못하게 막아놓은 것입니다.
C++Builder로 불러들인 델파이 폼은 폼 자체로서는 빌더나 델파이나 똑같은데도 고의적으로 폼 에디팅이
되지 않도록 막아놓았습니다. 새로운 컴퍼넌트를 놓을 수도 없고, 삭제할 수도, 새로운 이벤트 핸들러를
추가할 수도 없습니다. (물론 View As Text로 해서 수동으로 작업하면 가능하다는 편법도 있습니다.)
또, 디버깅 기능에 있어서도 몇가지 제한이 있습니다.
컴파일러로서 보면.. C++Builder는 델파이이기도 하고, Visual C++이기도 하고, Borland C++이기도 합니다.
세가지 다른 툴로 만들어진 소스를 그대로 컴파일할 수 있습니다. 정말 놀랍지요.
제 개인적인 입장에서 생각해보면.. 볼랜드 본사에서 책정해놓은 2,499달러라는 가격은 MS나 기타
개발툴 비전문 업체에서 만든 개발툴과는 차원이 다른 편리한 기능들로 무장시켰다는 측면에서 보면
충분히 합리적인 가격입니다. 그만한 값어치를 하지요. (물론 국내 가격은 별도입니다.)
단지 볼랜드의 뛰어나지 못한 영업능력 때문에 그 대단한 기능들을 충분히 알리지 못했을 뿐입니다.
충분한 답변이 되었습니까.. ^^
그럼 이만...
|