Gambas는 토마토소스에 야채를 썪어서 만든 매콤한 요리입니다. 보통 뷔페등지에 가면 볼 수 있는 음식이지요. 그런데, 갑자기 우분투 블로그에서 왜 요리이야기룰 하냐고요? 사실 Gambas는 이 요리만 있는 것이 아닙니다. Gambas는 리눅스 환경에서 Basic언어로 GUI를 만들어낼 수 있는 막강한 툴의 이름이기도 합니다.

 하지만, 제작자도 이것을 알고 있어서 프로그램 아이콘이 새우입니다. 토마토소스에 볶은 새우요리인데, 정작 아이콘은 파란 새우네요. 약간 유머와 위트를 섞은 것 같네요.


즉, 이 요리이야기가 아니라 이미지 출처 -http://www.piospaella.com/food/item/gambas-al-ajillo/


바로 이 개발도구 이야기 입니다.


우선 gambas 이야기 하기 전에 Visual Basic이야기를 해야 할 것 같습니다. Visual Basic은 Basic언어를 사용하는 RAD(생산성 향상 개발도구 정도라고 생각하시면 편합니다.)입니다. 우선 쉽기로 유명한 Basic언어를 쓰면서 GUI도 상당히 자유롭게 만들 수 있어서 VIsual Basic은 초보 개발자들에게 입문용으로 많이 추천되어져 왔습니다. 다만, 6.0까지만 그랬고 이후에 나온 VB.net같은 물건은 Basic을 쓰기는 쓰는데 워낙 기능이 많아서 입문용으로 C보다 별로인 물건으로 굴러떨어지고 말았습니다. 실제로 지금도 Visual Basic은 2005이후 버전을 쓰거나(그나마도 대부분 교육용으로 나온 2005 Express을 씁니다.)아직도 6.0을 쓰고 있습니다. 6.0이 가볍기도 하지만, 그만큼 VB.net에서 이것저것 기능을 추가하다보니 문법이 방대해진 것도 한 몫 했습니다. 



Visual Basic 6의 모습, 개발자 친화적이라는 Microsoft의 역작중 하나이다. 출처- 위키피디아



하지만 그 특유의 생산성은 여전해서 아직도 간단한 시리얼 통신을 기기 제어, GUI를 구현하는데 많이 쓰이고 있고, 지금도 막강한 영향력을 발휘합니다. 그러다보니 리눅스나 BSD진영에서도 이러한 Visual Basic스러운 물건이 만들어 지는데 이게 바로 Gambas입니다. 그러나 Gambas와 Visual Basic은 서로 호환이 전~혀 안됩니다. 실제로 Gambas홈페이지(http://gambas.sourceforge.net/en)에서도 Visual Basic과의 차이를 들어가며 설명중입니다.

아는 선배의 부탁으로 gambas로 만들고 있는 측정 프로그램, 이걸 만드는데 하루도 채 걸리지 않았다.


하지만 Gambas도 결국 Basic언어를 쓴 하나의 도구이기 때문에 코드 호환성이 어느 정도 확보가 됩니다. 마음만 먹으면 Visual Basic에서 동일하게 컨트롤을 배치하고 Name을 똑같이 배정한 다음 코드를 그대로 복사-붙여넣기 하면 60%정도는 돌아갈 것입니다. 고작 60%?라고 생각하실 수 도 있겠지만 이 정도면 선방한 셈입니다. Basic을 쓰더라도 Visual Basic와 QBasic은 죽어도 호환 안 되는 것을 생각하면 이거라도 감지덕지입니다. VB나 Gambas나 생산성을 위한 도구니까, 본격적으로 만드는 프로그램에는 적합하진 않습니다. 본격적으로 만드실려면 C/C++나 Python같은 언어로 개발하시는 것이 나중에 기능 추가등에 편리합니다. (Visual Basic으로 제대로 만들어서 판매하는 사람도 있기는 합니다. 언어에 한계란 것이 없어서...) 애초에 OS호환성을 따질 생각이었으면 VB나 Gambas보다는 Python + QTCreator or Glade(GUI를 위한)을 쓰는 것을 추천드립니다. 이 쪽이 나중에 기능 추가를 한다거나 호환성을 확보할 때에는 이쪽이 훨씬 더 편리합니다.


하지만 나중을 위해서가 아니라, 그냥 지금 당장 프로그램을 만들어야 하는데 시간이 없다면 Gambas를 쓰는 것이 100배 낫습니다. 윈도라면 Visual Basic으로 하시면 되고요. 하지만 Visual Basic은 가격도 가격이고, 최근 버전은 너무 더럽게 구동이 느려서 저는 그냥 리눅스 환경에서 Gambas를 씁니다. 원한다면 라이브 리눅스에 Gambas런타임하고 새로 짠 프로그램 넣고 주면 그만이니까요. 지금 당장 데이터를 뽑아내야 하는데 가장 생산성이 좋은 Labview는 가격이 상당한데다가 전용 하드웨어가 필요하고, Python은 Glade나 QTCreator와 조합해야 하는데 못 할 것은 없는데, Gambas에 비해 만드는 것이 쉽지는 않습니다. JAVA도 나쁘지는 않지만 GUI 만들기가 제가 이야기한 것 들에 비해 생각보다 어렵습니다.(Swing은 XML로 뽑아내는 GUI가 없는 것으로 알고 있습니다. 만약 Glade처럼 XML로 뽑아내주는 도구가 있다면 트랙백이나 댓글 부탁드립니다.)


Gambas를 이번에 쓰면서 느낀 것이지만, Visual스러운 개발 환경을 갖추면서 오픈소스란 점은 정말 매력적입니다. 원한다면 뚝딱뚝딱 만들어낼 수 있는 점도 상당히 마음에 들고, 기존 Visual Basic사용자들도 별 무리없이 넘어 올 수 있습니다.(몇몇 문법차이는 배우면 되니까 크게 문제는 없습니다.)


장점만 크게 이야기 한 것 같은데 단점도 생각보다는 큽니다. 우선 Visual Basic의 단점은 모두 물려받았습니다. 컨트롤 부족=개발단계 급증가를 의미합니다. 아니, 컨트롤을 개발해야 하는 입장이 된다면 그냥 Basic을 버리고 C/C++만으로 넘어가는 것이 훨씬 좋습니다. 처음부터 C/C++로 개발을 하면 중간에 Basic을 끼워넣어서 두번 거치게 하는 것보다 더 쉽게 처리 가능합니다. 물론 나중을 위해서 컨트롤을 미리 개발할 수도 있겠지만, 만약 비공개 프로젝트라던가, 단순 레포트제출용 데이터라던가 하면, 이 과정은 그냥 '삽질'일 뿐입니다. VB.net은 이를 해결 하기 위해서 오만가지 잡다한 것들을 다 넣어놓았는데, 도리어 Basic하지 못해지면서 사람들에게 외면을 받고 말았습니다. 2005 Express부터는 그 기능을 그대로 가져오면서 필요없는 것들을 가리는 등의 Basic한 면을 돌려놓았다고는 하는데 이미 Basic세상은 C#이 점령해가고 있었습니다.(아아...Basic은 이렇게 몰락해 가는가....) Gambas도 마찬가지로 VB.net수준으로 만든다면 사람들에게 외면 받을 것입니다. 그러다보니 컨트롤이 좀 부족하다는 느낌이 들 때가 있습니다. SDL같은 물건도 지원하는 굉장한 능력은 지녔지만, 저는 SDL기능을 쓴 적이 없네요. 아니, 사실 쓸 일이 없었던 것일지도 모르겠습니다.


또 다른 단점으로는 OS호환성 문제가 있습니다. 즉, 호환성이 문제를 일으킨다는 것인데 우선 Gambas는 BSD와 리눅스에서 GUI Basic을 사용하기 위한 것으로 출발 했기 때문에 윈도는 전혀 지원하지 않습니다. 특히 Xorg에 거의 대부분 의존하고 있기에 Xorg를 사용하지 않는 다른 OS는 절대로 지원이 안 된다고 합니다. OSX도 Xorg가 그나마 설치가 되기 때문에 그럭저럭 쓸 수는 있지만, OSX는 Xorg의 구동이 매우매우매우 답답하게 돌아가기 때문에 별로 추천하지 않는 다고 하네요. 윈도는 Cygwin에서 GUI를 제외하고는 구동이 된다고 합니다. 그런데 GUI 안되면 왜 Gambas로 개발하나요? 그냥 Python으로 만들던가 Bash스크립트 만들어내지.... 구글을 통해서 알아보니 다들 그냥 가상화해서 리눅스 올려 쓰라고 하네요.

OS호환성 말고도 버전별 호환성문제도 있습니다. 하지만 이 버전별 호환성 문제는 JAVA나 Python도 겪고 있는 문제이니 Gambas만의 문제라고 볼 수는 없습니다. 게다가 Python 2.7이 Python3.x 보다많이 쓰이면서 구 버전을 기본을 설치하는 등의 일도 일어나지 않고 있습니다. Gambas2.x보다 Gambas3.x가 훨씬 더 많이 쓰이고 훨씬 더 많이 포럼에 글이 올라옵니다. 그냥 기존 Gambas2프로젝트를 Gambas3로 바꾸는 것이 더욱 이득이 되는 상황이라 이것은 그냥 단점을 상쇄하네요.


리눅스와 BSD에서 Visual Basic같은 도구를 찾으신다면 당연히 Gambas를 설치하세요. 만약 Visual Basic을 쓰셨다면 더욱 금상첨화입니다. 어쩌면 이 새우요리가 여러분의 프로젝트를 빠르게 성장 시킬 동력이 될 수도 있으니까요.

,