나는 완벽한 프로그래밍 언어란 존재하지 않고, 만들려고 하는 프로그램을 가장 쉽고 빠르게 만들어 낼 수 있는 언어가 최고의 프로그래밍 언어라고 생각한다. 어쩌다보니 C, C++, VB.net, ASP, 매스매티카, 메이플, 매트랩, 파이썬, 랩뷰 등의 프로그래밍 언어들을 써 왔었다. 랩뷰는 인생에 쓸일이 없을 것이라 생각하고 일부러 안쓰려고 했는데 결국 그날이 오고야 말았다. 실험을 전공한 내가 잘못이지. 파이썬이 최악인 이유는 강제 들여쓰기와 암시적 형 지정때문이라고 생각했다. 뭐 어쩌다보니 지금 가장 자주 쓰는건 파이썬이기는 하지만. 하지만 아무래도 랩뷰를 내인생 최악의 언어로 바꿔야 할 것 같다. 일단 NI에서 제공하는 강력한 하드웨어 제어 기능과 연동되기 때문에 수많은 실험실에서 사용하고 수많은 상업 제품에서 널리 사용하고 있다는 부분은 다른 단점을 압도할 정도의 장점이기는 하다. 하지만 그 장점을 빼면, 프로그래밍 언어로서는 그다지 좋은 언어가 아니다. 

찾아보니 나만 싫어하는 것이 아니었다.
http://www.briancbecker.com/blog/2011/why-i-detest-labview/

http://stackoverflow.com/questions/372557/what-specific-features-of-labview-are-frustrating-to-you


위의 글에 내가 느끼는 문제점을 정말 똑같이(!) 짚어주고 있는데, 간단히 요약하자면 다음과 같다. (내 생각과 함께)


1. 스파게티 코드. 프로그램을 만들다 보면 스파게티 코드라는 말을 많이 하는데, 랩뷰 코드를 보면 진짜로 스파게티 코드가 뭔지 알 수 있다. 진짜 여기저기 선으로 도배되어 있는데, 차라리 텍스트 코드에서 페이지업-다운으로 찾아다니는 것이 더 낫지, 눈으로만 봐서는 도저히 따라갈 수가 없다. 만들때는 어떻게든 만들겠지만, 디버그 할 때 눈알이 뽑힐 것 같은 고통을 느낄 수 있다. 처음부터 버그가 없게 만들면 되겠지만, 그건 불가능한 일이다. 최소한 나한테는 불가능한 일이다. 


2. 그림을 그려야 한다. 진짜로 그림을 그려야 한다. 빈공간이 없으면 옆으로 다 치워놓고 그려야 하고, 아님 옆으로 가서 그려야 한다. 물론 텍스트 코드에서도 빈공간을 만들어야 하긴 한다. 엔터 몇번 치면 되는 일이다. 랩뷰에서는 아이콘과 선들을 옆으로 치워야 한다. 컨트롤 키를 누르고 마우스 커서를 잡아끌면 빈공간이 나타나기는 하는데, 그럼 기존에 잘 정리해 두었던 코드가 엉망이 된다. 텍스트 코드에서는 엔터 두세번 쳤다고 해서 코드가 엉망이 되지는 않는다. 


3. 조건문, 반복문 테스트. 한번만 실행시켜서 어떻게 되는지 보고 싶을때, 텍스트 코드 언어는 if문이나 for문이 있는 그 줄만 주석처리 해 버리고 돌리면 되는데 랩뷰에서는 밖으로 복사해놓고 전선 정리를 해 줘야 한다. 안하면 에러난다. 


4. 느리다. 말할필요도 없이 C나 다른 언어에 비해서 느리다. 개발 속도가 빠르다는 장점이 있지만, 코드가 꼬일수록 고치기도 힘들어 진다는 점에서 바람직하지 않은 특징이라 성능에서 느린건 어떻게 할 수가 없다.


5. 의도하지 않은 병렬처리. 요즘 성능 향상을 위한 병렬처리가 각광을 받고 있지만, 기본적으로 컴퓨터는 순차처리가 기본이고 병렬화는 의도적으로 고민해야 하는 부분이다. 이게 왜 자동화되기 힘드냐 하면, 병렬처리할 때 서로 다른 루틴들이 처리되는 순서를 임의적으로 정해버리는 경우 프로그램 작동이 꼬일 수가 있기 때문이다. 특히, 랩뷰는 실험 장비들을 다루게 되는데 실험 장치들이 작동하는 순서가 달라지면 실험을 망칠 수도 있고 사고가 날 수도 있기 때문에 이런 부분을 방지하기 위해서 굉장히 노력을 많이 해야 한다. 


6. 마우스 클릭. 개발을 해보면 알겠지만, 게임은 마우스로 하는게 편하지만 코딩을 마우스로 하는건 어려운 일이다. 빡친다. 


7. 유료다. 물론 좋은 툴을 돈받고 파는건 당연한 일이고, 랩뷰도 나름의 장점이 있고 그만큼의 가치를 하니까 돈주고 사서 쓰는 것이다. 하지만 무료로 사용할 수 있는 프로그래밍 언어도 많은데 랩뷰는 사용하기 위해서 무조건 돈을 주고 사야 한다는 점에서 이건 명백한 단점이다.


그 외에도 많은 단점들이 있다. 나도 교수님이 쓰라고 하니까 쓰는 것이지 아니면 거들떠보지도 않았을 언어다. 아니면 외주 맡기든가. 

by snowall 2014. 10. 13. 22:14