Pages

Thursday, March 13, 2014

라자루스로 돌아오다

6개월인가, 8개월인가정도만에 라자루스를 다시 설치했습니다. Qt가 거의 모든 기능을 제공해줄 뿐 아니라, Boost와 함께 쓰면 더이상의 것은 필요없다는 말이 나올 정도로 완벽했지만, 아무래도 덩치가 너무 큰게 마음에 걸리더군요. 예. Qt의 단점을 논할때마다 꼭 나오는 말이지만, 기능이 너무 많아서 라이브러리가 무식하게 커지는 단점이 꼭 켕겼습니다.

최근에 Qt를 가지고 간단한 GUI 프로그램을 만들 일이 있었습니다. 별건 아니고 libssh를 사용해서 SCP로 다운로드받은 내용을 Qt Quick Control에 있는 테이블로 보여주는 프로그램이었는데, 이게 이것저것 다 합치니 50MB정도가 되더군요. 뭐, 반정도는 ICU(27.5MB)였으니, ICU를 빼고 Qt를 다시 빌드하면 크기가 좀 줄어들긴 하지만 EXE, DLL, 그리고 Qt Quick Control을 구성하는 QML 파일들을 모두 합치면 이것도 여간 번거로운게 아니죠.

가장 큰 문제가 되는 부분은 프로그램의 cold start가 일어날 때입니다 - 제 Core i5에서도 프로그램이 인터페이스를 띄우는데게 3초가 넘게 걸렸습니다. 이정도 시간이면, 사용자가 “왜 프로그램이 실행이 안되냐” 하면서 프로그램 아이콘을 다시 클릭하고도 남을 시간입니다.

하여간 이래저래 켕기는게 있어서 대안을 좀 찾았습니다. 그리고 그 물망에 오른건 wxWidgets와 Lazarus였습니다. 사실 첫번째 후보는 wxWidgets였습니다 - 어쨌든 C++ 사용자는 Object Pascal 사용자보다 많은게 현실이니, 도움은 더 받을 수 있으리라는 생각이 들더군요(뭐, 제가 따로 조사해본 결과를 통해 추측해보면 wx 사용자나 Lazarus 사용자나 수는 대충 비슷해 보이긴 합니다만……).

승부는 빈 창을 띄우는 프로그램을 빌드한 이후 갈렸습니다. wxWidgets는 7.45MB짜리 프로그램을 만들어냈고, (개인적으로 심한 애증관계에 있는)Lazarus는 1.44MB짜리 파일을 만들었습니다. 둘다 cross-platform이고, native widget을 사용하는 동일 구조라는걸 고려해본다면, 승자는 Lazarus더군요.(참고로, Qt는 native widget을 사용하지 않습니다. 단지 인터페이스를 native처럼 그려내기 위해 관련 DLL을 참고할 뿐입니다.)

하지만, 그럼에도 불구하고, 그놈의 적은 사용자 수가 끝까지 제 발목을 잡았습니다. 주변에 물어볼 사람도 없이 혼자서 맨땅에 헤딩하는 상황이 될게 뻔했던거죠.

그런데 이 때, 제 친구 중 한 분이 중요한 한마디를 하더군요:
“좋아하는 걸로 하세요.”
삽질을 각오할 열정이 있다면(……), 사용자 수가 적은건 별로 문제가 되지 않습니다. 사실 모든 사람들이 아무 생각 없이 몽땅 다 주류만 쫓아갔다면, D나, Vala나, Haskell같은건 있지도 않았을거고, LISP같은 것들은 아마 살아남지 못했을 겁니다.

결국 이놈의 애증 만발한 라자루스가 다시 제 시스템에 설치되었습니다. 이걸로 뭘 더 하게 될지는 모르겠지만, 어쨌든 언젠가는 뭔가 하게 되겠죠.

추신:
Lazarus를 떠나있는 동안 instantFPC라는게 나왔더군요. 이게 뭔가 하니 파스칼 소스코드를 스크립트처럼 쓰는건데…… 사실은 실시간으로 후딱 컴파일하고 돌리는 거랍니다. 뭐 파스칼 컴파일러가 무식하게 빠른거야 어제오늘 일이 아니라는걸 보면, 이렇게 무식한 구조로 JIT(..??) 컴파일러를 만들어도 크게 문제는 없을 것 같긴 합니다.
(제 Core i5 시스템에서 Lazarus IDE를 -O3로 처음부터 다시 컴파일하는데 2분이 채 안 걸렸습니다.)

No comments:

Post a Comment