perl은 오랫동안 인터프리트언어로써의 자존심을 지켜왔고,
스크립트언어란 이래야한다는 모범을 보여왔다.
그러나 늘 '실무'와 만나게 되면, 배포의 문제를 피할수가 없다.
아무리 잘 만들어도 결과물은 실행바이너리가 아니면, 요구사항을 만족시킬수가 없는 것이다.
나는 늘 이런 사실이 안타까웠고 나 스스로가 해법을 찾고자 python, ruby는 어떤지 짧은 여행(?)을 떠나보기도 했다.
스크립트 언어로 MFC, C# 등을 대신해보자!!
3대 스크립트 언어의 벤치마킹
우선 눈여겨서 비교한 것은 GUI 관련 라이브러리의 지원이다.
스크립트언어는 특성상 크로스플랫폼을 만족하는데, GUI 관련된 것도 당연히 크로스플랫폼이어야 한다.
그래서 본 것이 WxWidget, Tk, Qt 이렇게 세가지 가장 유명한 GUI 라이브러리의 지원여부이다.
그중에서도 가장 기능이 충실하고, 의존라이브러리의 크기가 작고 빠른 WxWidget으로 선택했다.
perl > python > ruby 순으로 API의 구현 완성도가 높았다.
그리고 exe로 만들기.
python은 py2exe, ruby는 rubyscript2exe.rb , perl은 PAR::Packer 모듈이 있다.
기본적인 아이디어는 같다.
압축을 풀고 실행환경을 임시로 만들어서 스크립트를 실행해주는 바이너리가 파일의 앞에.
실행에 필요한 스크립트와 모듈들, 모듈이 의존하는 공유라이브러리 요소들, 리소스 파일들을 압축한 것이 그 뒤에.
python
python은 py2exe 가 비교적 완성도가 높았고 Wx 로 프로그래밍한 것을 exe로 만들때도 별로 문제가 생기지 않았다. Wx랑 win32 쪽 지원이 전반적으로 좋은 언어이다. perl이랑 차별화를 위해 따로 신경쓴 듯 하다.
ruby
ruby의 rubyscript2exe.rb는 빼먹는 dll 파일도 간혹 발생해서 ruby 이상으로 알지 않으면 exe로 만들기 어려운 상황이 발생한다. Wx의 지원이 아직 모자라다. 후발주자로써 Python 수준을 따라잡지 않으면 곤란할텐데..
perl
perl은 여러가지 방법이 있다. 언어가 오래되다보니까 나같은 필요를 느끼는 사람도 엄청 맣았겠지..
perl2exe는 신뢰도가 떨어져서 보지 않았다.
ActiveState사의 PDK를 사용하면 GUI 환경에서 exe를 만들수 있고 ActiveX, sysTray, 심지어는 .NET바이너리로 만들수도 있게 되어있다.그러나 정말 Windows 전용이다.(무서운 사람들이다 진짜)
PAR 모듈은 perl이 있는 상태에서 의존성을 해결하기 위한 모듈이면서, 부트스트래퍼만 앞에 붙이면 바로 단독 exe파일이 되게끔 해주는 PAR::Packer 모듈까지 있다. 한 바이너리안에 여러시스템에 맞는 의존파일을 선택적으로 넣을수도 있고, 런타임에 웹에서 PAR파일을 내려받아 의존성을 해결하게끔 할수도 았다.-ㅁ-;; 그리고 의존라이브러리는 캐싱을 하기때문에 최초 실행시에만 좀 느리고 그다음부턴 매우 빠르다. 독보적이다.
결론
극단적으로 상용화를 준비한다고 생각했을때,
멀티플랫폼을 지원하면서, 작업속도도 빠르고, C등과 별반 다름없는 결과물을 원한다면,
WxWidget and ( perl or python ) 가 내가 추천하는 조합이다.
http://www.mabook.com/blog/trackback/146







