얼마전에 델마당에 다음과 같은 제목의 글이 자유게시판에 올라 왔다.
"델파이의 한계를 극복하는 길은 C++ 인가?"
그런데 이 글에 달린 대부분의 댓글들의 내용이 상당수 가관(?)이다.
"대형 프라젝트는 C나 C++이 델파이보다 낮다. "
"C++이 델파이보다 더 막강하다."
먼저 "대형 프라젝트는 C나 C++이 델파이보다 낮다." 이 말이 옳은가를 알아 보자.
대체 대형 프라젝트와 소형 프라젝트를 구분하는 것은 무엇인가? 모든 소스 라인 수? 아니면 개발 기간? 대체 무엇을 기준으로 둘 것인가? 소스 라인수와 개발기간을 기준으로 대형과 소형 프라젝트를 구분한다면, 대형 프라젝트에 좋은 개발툴이란 개발기간을 단축할 수 있고, 같은 기능을 구현할 때 소스길이가 적게 나오는 툴이 좋다는 것은 당연지사다. 그렇다면 델파이가 좋은지 C++ 좋은지 답은 뻔하다. 알아서들 판단하시라.
참고로 대다수 C++ 컴파일러들의 기막힌(?) 컴파일 속도도 고려해 보시라. 대부분 C++ 컴파일러들은 무슨 고민이 그리도 많은지 상당히 장고의 시간(?)을 투자한 뒤 실행 파일을 만들어 주지만, 델파이는 매우 시건방지게 순식간에 실행 파일을 만들어 준다. 그리고 그 실행파일의 질이 C++보다 떨어지지도 않는다. 오히려 더 낳은 경우가 많다. 예를 들어 델파이의 스마트 링킹 기능을 함 보라. 대부분 C++링커들은 이 기능이 거의 없다.
소스 편집 -> 컴파일/링크 -> 실행 -> 테스트. 이 전체 과정 시간을 One Builder Time이라고 하는데 이 시간이 짧은 것이 개발 효율에 얼마나 영향을 미칠지 한번 판단해 보시라.
게임 개발자들이 C++을 사용하는 이유는 C++이 매우 좋기 보다는 그럴 수 밖에 없는 이유가 있다. 이에 대한 이유는 박지훈씨가 워낙 설명을 잘했으므로 다시 설명하지는 않겠다. 요는 개발 목적에 따라서 적절한 툴을 선택해야 한다는 것이다.
"C++이 델파이보다 더 막강하다."
C++의 예약어와 델파이 예약어 수를 한번 비교해 보시라. 델파이가 꿀리는가? 물론 예약어수가 많고 적음이 그 언어의 장점을 결정하는 것은 아니다. 그러나, 파스칼 문법과 C++ 문법을 한번 비교해 보시라. 나는 C++의 기능 중에서 델파이에 없는 것 중에 가장 맘에 드는 것이 있다면 템플리트다. 그 이외의 C++ 기능들은 대부분 델파이에 있거나 별로 효용이 없는 것들이다. 예를 들어 C++연산자 중복 정의는 편한 것 처럼 보이지만 실제 사용하면 소스 이해에 상당히 혼란스럽다. 다중 상속도 상당히 멋있어 보이지만 실제 마구 사용하면 골머리 엄청 아프게 하는 존재다.
각 언어가 지원하는 라이브러리 차원에서 비교해 보자. C 계열의 기본 라이브러리인 스탠다드 라이브러리와 STL 을 델파이 VCL과 비교해보라. 두 라이브러리는 성격이 다르기 때문에 정확한 비교는 어렵지만, 최소한 윈도우 계열개발에서 만큼은 만큼은 VCL이 압도적으로 뛰어나다.
간혹 C, C++의 장점이 OS 불문 즉 OS간에 호환성이 뛰어나다고 하는 웃기는 말을 하는 사람들이 있는데, 이는 아주 가소로운 이야기다. 주위에서 주워들은 전설(?)을 논하지 말고 직접 해 보시라. 그래야 자신의 실력도 늘고 올바른 사실들을 알게 될 것이다. 참고로, 현존 언어중 가장 OS 호환성 짱이라고 거짓부렁을 일삼는, 자바가 그토록 장점이라고 내세운 OS 호환성이 얼마나 잘 제대로 구현되어 있는지 한번 판단해 보시라. 그리고 델파이로는 누워 떡먹기인 UI 구성을 자바로 구현하는 것은 얼마나 어려운지 한번 시도해 보시라.
대체 C나 C++이 언어적 측면에서 파스칼 보다 우월한 점은 뭣이라고 생각하시는가? 두 언어의 매뉴얼을 놓고 한번 곰곰히 검토해 보시라. 많은 사람들이 잘못 생각하고 있는 것 중의 하나가 C++언어의 선배격인 C 언어가 매우 좋은 언어라고 생각하는 것이다. 이는 참으로 잘못된 생각이다. C 언어는 매우 급조된 언어이며 개발자를 위한 언어라기보다는 컴파일러 개발자들을 위한 언어이다. 먼 말인고 하니, C언어는 워낙 구조가 단순하여, 컴파일러 중에서 C 컴파일러 개발이 매우 쉽다는 것이다. 이 때문에 C 컴파일러 없는 오에스는 없다.
조만간 C 언어에 대한 잘못된 전설과 환상에 대한 글을 올리도록 하겠다. 급조된 C 언어의 대표적 단점 중 하나를 긴급하게 보완하려고 어거지로 나온 개념이 함수 선언이란 문법이다. 초창기 C, 즉 커닝햄 리치의 C는 함수 선언이란 문법이 아예 없었다. 그러나 이로 인한 문제가 심각해지자, 함수 선언이란 문법을 도입하고, 지금도 다른 언어에서는 거의 잘 사용하지 않는 헤더 파일이라는 희안한 편법으로 그 문제를 풀었다.
C와 C++에서 헤더 파일이 얼마나 짜증나는 존재이며 특히 컴파일 시간을 엄청나게 깨어먹는 가당찮은 존재인지 아시는가? 헤더 파일이 좋은 것이라면 자바나 시샵은 왜 헤더파일이란 개념을 전혀 쓰지 않겠는가? 왜 개발자가 함수 선언부와 정의부를 별도의 소스 파일에 일일이 구현해야 하는가? 컴파일러가 알아서 해주면 안되는가? 이는 여러분들이 믿거나 말거나 C 컴파일러 초기에 아주 엉성하게 설계한 덕분이다.
원래 이 질문을 던진 사람의 질문 내용 중 크게 잘못된 점이 하나 있다.
"모든 분야를 델파이만으로 할수 없는게 현실입니다."
그렇다. 이말은 지극히 당연한 말이다. 델파이를 슈퍼 울트라 그랜다이저 초샤이어인 파워 툴로 숭배하지 마시라. 그런데 저 말은 "모든 분야를 프로그래밍하고 싶습니다. 어떻게 하면 좋을까요?"와 다름 없다. 모든 분야의 프로그램을 다 만들어 볼수도 없을 뿐더러, 그렇게 하다가는 아무 분야도 제대로 만드는게 없는 개발자가 되기 쉽다. 결국 현실적으로 쪽박 차는 개발자가 될 가능성이 매우 크다. 천재가 아니면 이런 생각은 버려야 하며, 가장 자신있는 한분야에만 승부를 거시라. 그리고 그 분야에 가장 적합한 툴이 뭣인지만 결정하기를 권하고 싶다.
간혹 델파이를 나만 혼자서 사용하면 좋겠다는 생각이 든다. 미래는 알수 없지만, 현재까지는 현존하는 어떤 개발툴보다 생산성이 뛰어난 이툴을 혼자 독점하면서 사용할 수 있다면 얼마나 좋겠는가? 다른 개발툴을 사용하는 개발자들과 맞짱을 떳을 때 델파이는 항상 나를 실망시키지 않았다. 단지, 나만 델파이를 팔아준다면 볼랜드가 장사가 안되기 때문에 델파이 판매를 중지할가 두려울 뿐이다. 그래서 델파이를 많이 사주라고 홍보를 하고 싶을 뿐이다. 그래야 나도 주욱 델파이를 잘 써먹을 수 있기 때문이다.
델파이 개발자가 다른 툴로 전향한다는 말을 들을 때, 내 마음은 이율배반적이다.
"잘되었네! 이제 내 경쟁자 하나 줄었네. 저 사람이 C++ 새로 배우다고 시간 낭비하는 동안에 나는 더 잘먹고 잘 살수 있겠네. 그렇지만, 델파이 개발자가 줄어 들어 델파이가 잘 안팔리면 나는 델파이 새버전을 구할수가 없을텐데"
어떤 유명한 언어나 툴을 쓰는가가 개발자의 자질을 증명하는 것이 아니다. 얼마나 잘 사용하는가 그리고 어떤 프로그램을 잘 만드는가가 더 중요하다. 내 주변에 C나 C++ 개발자랍시고 허접한 명함을 가진 개발자들이 많지만, 그 사람들의 소스를 보면 한숨만 나올 뿐이다. C나 C++ 개발자들은 모두 돈을 잘 버는 것 같은가? 꿈 좀 깨시라. 내 주변의 C나 C++ 개발자들 중 극 소수만 지 밥법이를 한다. 나머지 대부분 들은 영원한 하수 개발자로 평생을 살아 가거나, 남들은 전혀 알아주지도 않는 자칭 현존 최고 유망 우수 언어인 C++ 개발자라는 만족감에 혼자서 도취해서 살고 있을 뿐이다.
그랜저를 몰고 다닌들 세금도 못내어 조만간 차압당할 처지가 되거나, 기름값 무서워 차고에 쳐박아 두느니, 티코를 자유롭게 모는 것이 더 좋지 않는가? 혹시 이말을 델파이를 티코에 비유한 것으로 절대 오해하지는 마시라.
|
델파이 프로그래머도 프로그래머고 C++ 프로그래머도 프로그래머이지요..
저같은 경우는 Operator Overload 및 Template때문에 C++을 버릴수가 없다는 것이죠.
다른 어떠한 이유를 막론하고 서로의 기능은 나름대로 이유가 있다고 봅니다.'
델마단에 쓴 글은 아마도 델파이가 나쁘다는게 아니고.. 보는 시각에따라 모자란 부분을 극복할 수 있지 않나 하는 의도 아닐까요?