본문 바로가기
개발일지/주저리주저리

Delphi 와 C/C++ 기반 Open Source - 1 -

by 사악신 2011. 11. 24.
델파이가 Object Pascal 기반의 우수한 IDE임에도 불구하고 Java 와 C/C++ 로 진행되는 오픈 소스 프로젝트를 보며 델파이 개발자로서 한계를 느끼게 되는 경우가 종종있다. 파스칼 프로그래머로 아무리 비주류라지만 오픈 소스 프로젝트에서조차 소외되는 기분은 그야말로 참담하다. 앞으로도 이를 극복하기 위한 다양한 시도가 이뤄지겠지만 현재까지 내가 오픈소스를 취급하는 방법은 다음과 같다.

1. Python 과 접목
흔히들 Python 을 Glue Language 라고 부른다. 다른 언어랑 잘 들어붙는다는 의미(사실, C 와의 결합)인데... Linux 진영 및 구글에서 Python 을 다양하게 활용하고 있어, 오픈 소스에서도 Python API 를 비교적 잘 제공하는 편이다. 따라서 이를 델파이에서 활용하는 방법이 있다.

소스는 http://python4delphi.googlecode.com/svn/trunk/ 에서 check out 하면 되며 최근까지 꾸준히 업그레이드 되고 있다.
(파이썬이 3.x 버전으로 넘어오며 기존 2.x 를 밀고가야할지 고민이 크다. 호환성을 무시해버려서...;;)

개인적으로는 2006년경 기가 바이트 단위의 이미지프로세싱 관련 작업이 있었는데 델파이와 Python 의 PIL 을 이용하여 말그대로 한방에 해결한 기억이있다. 대략 2개월 정도의 개발 기간 중 실개발은 2주에 불과해~ 1개월 이상 신나게 놀았던 행복한 기억이랄까? @@

다만, 일반 사용자를 대상으로하는 배포용 어플리케이션이라면 아무래도 좀 무리가 있겠다. 하지만 Delphi + Python 조합은 내가 경험해본 최고의 쾌속 개발이었다. Kylix 가 사라진 이후 Linux 서버 데몬으로 Python 의 Twisted 를 이용하고 Windows 용 클라이언트는 Delphi 로 개발하는 방법도 간간이 활용해볼만 했다.

2. Java 의 경우 마이그레이션
최근 델파이가 Generics, Unicode 지원, RTTI 기능 강화 및 기타 클래스에 대한 기능이 확장되며 독한 맘만 먹으면 Java 소스를 거의 1:1 로 마이그레이션이 가능하다. 말도 안된다고? 하지만, 실제 2010년경 개인 클라우드 환경으로 꽤 유명한 Funambol(http://www.funambol.com/) 의 Funambol Server 를 팀원 한명과 더불어 통째로 마이그레이션 시켜본 경험이 있다.(사실 나는 30% 정도만 변환했을 듯...) 아무튼 손등에 피멍이 들어서 그렇지 가능한 이야기다. ㅠㅠ

자바의 경우 상대적으로 심플한 OOP 언어인데다 각종 UML 도구와 맞물려 분석이 용이하다. 델파이 또한 네임스페이스가 지원되므로 자바 패키지를 적절히 대응시켜 마이그레이션하면 된다. 아, 물론 톰캣의 서블릿 부분은 인디와 RTTI 로 대체하던지 기타 XML 관련 처리는, 델파이의 막강한 XML Data Binding 기능으로 대체하던지와 같은 작업이 필요하다. 이러저러 기능들을 붙였지만 Funambol 서버 부분만을 빌드시 대략 20만 라인 정도 나오는 피토하는 작업이었다. 어쨌든 지금의 Object Pascal 은 완벽한 OOP Language 이며 최신 트렌드를 충실히 반영하고 있다는 사실을 기억할 필요가 있다.

아, 그리고 PC 용 Funambol Server 는 언젠가 자유롭게 영작이 가능해지면(?) 해당 단체에 전달해볼 생각(먹고 살 걱정없이~ 계속 이 놈만 개발 관리할 수 있는 여건만 주어져도 울 팀원들이랑 Funambol 진영에 뛰어들텐데...ㅠㅠ)인데... 가능할까? ㅋㅋㅋ

3. C++ Builder 와 연계
최근에 집중하고 있는 것은 C++ Builder 와의 연계인데... 한동안 버전업이 되지 않던 빌더가 볼랜드의 버림 뒤 코드기어, 엠바카데로에 이르러 조금씩 되살아나고 있다. 사실, 개발 언어 그 자체보다 사용하고 있는 프레임워크, IDE 가 다른 언어로의 이동을 막는 요소라고 할 수 있는데 빌더 이 녀석은 VCL 사용이 가능한데다 동일한 IDE 를 사용하고있으니 맘만 먹으면 델파이 개발자라도 어느 정도 작업이 가능하다.

각설하고 2008년을 기점으로 명맥을 이어오던 각종 C/C++ 헤더에 대한 파스칼 유닛 변환 작업들이  더 이상 진행되지 안는 경우가 발생하고 있다. 2008년 10월 이후 더 이상 버전업이 없는 FFmpeg 파스칼 헤더...


마찬가지로 더 이상 버전업이 없는 SDL 파스칼 헤더...


공교롭게도 기본 문자열이 유니코드로 변경된 Delphi 2009 의 출시와 함께 몇몇 대형 헤더 변환 프로젝트들이 멈춰 서버린 느낌이다.(사실 큰 변화도 아닌데... ㅠㅠ) 하여 좀 더 근본적인 해결을 위하여 해당 C/C++ 프로젝트를 VC++ 에서 빌드하거나 C++ Builder 에서 빌드하거나 한 후, 델파이에서 끌어다 쓸 수 있는 중간 어뎁터 형태의 DLL 을 빌더로 생성하여 연결하는 방법을 최근에 사용하고 있다. 무슨 얘기냐고? 소스 첨부도 필요하니~ 다음 글로 미뤄야겠지만, 적어도 이 방법은 웬만한 C/C++ 로 진행되는 오픈 소스들을 델파이로 끌어올 수 있는 확실한 방법이다. 물론, C++ Builder 프로그래머라면 쓸모없는 작업이겠지만... 
반응형

댓글