나는 완벽한 프로그래밍 언어란 존재하지 않고, 만들려고 하는 프로그램을 가장 쉽고 빠르게 만들어 낼 수 있는 언어가 최고의 프로그래밍 언어라고 생각한다. 어쩌다보니 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
  • 지나가던 사람 2015.04.28 13:21 신고 ADDR EDIT/DEL REPLY

    많이 빡치셨군요 ㅠㅜ
    전 그냥 학생인데
    렙뷰 스파게티 코드 동감합니다. ㅜㅡ

  • 지나가던사람 2015.08.29 09:26 신고 ADDR EDIT/DEL REPLY

    그래픽 모델링을 이용한 설계를 절차적언어를 이용한 개발방식으로 이해하면 안됩니다. 제대로 쓸줄안다면 생산속도 및 디버깅 속도는 절차적언어보다 빠릅니다.

    • snowall 2015.08.29 21:48 신고 EDIT/DEL

      위에 적은건 그것들과는 무관한 단점입니다. 제대로 쓸줄 알아도 저건 단점이예요.

    • snowall 2016.03.06 23:20 신고 EDIT/DEL

      그리고 랩뷰를 프로그래밍 언어의 종류로 구분한다면 절차적 언어에 해당합니다. 객체지향적, 논리형, 함수형 언어의 특징은 없죠.

  • LabVIEW 개발자 2016.10.18 11:53 신고 ADDR EDIT/DEL REPLY

    제 생각에는 LabVIEW 코딩의 미숙으로 인한 단점들이 많아 보이네요.
    LabVIEW는 초보자에게는 쉬운, 하지만 숙련자에게는 어려운 언어입니다.
    그 이유는 간단한 코드를 짜기에는 다른 Text 언어와 비교했을 경우에는 쉽게 만들 수 있으나,
    프로젝트 단위의 코드를 만들려면, 여러가지 디자인 패턴에 익숙해져야 하기 때문입니다.

    제가 단점으로 단 것들에 대해 하나하나 제 생각을 말씀드릴게요.
    1.스파게티 코드
    - LabVIEW는 와이어를 통해 데이터를 전달하기 때문에 선이 복잡해 질 수 있습니다. 하지만 이 문제는 클러스터에 대한 개념과 subVI라는 모듈화를 사용하게 되면 해결할 수 있습니다. 디버깅이 힘든 이유도 모듈화 없이 하나의 블록 다이어그램에 객체와 와이어를 모두 그렸기 때분입니다.
    2. 그림을 그려야 한다.
    이 부분은 어느정도 인정할 수 있습니다. 하지만 그림을 그려야 한다는 단점의 다른 한편은 가독성이 뛰어나다는 장점이 있습니다. 코드를 작성하면서 빈 공간을 다시 만들고 작성을 하면 불편하겠지만, 그 코드를 한 눈에 볼 수 있어서 텍스트 코드들과 비교시에 가독성이 뛰어나게 되는거죠.
    3. 이 부분은 구조의 "다이어그램 비활성화 구조"를 사용하면 해결됩니다. 주석과 동일한 역할을 할 수 있는 구조입니다.
    4. 느린것은 맞습니다. 아무래도 그래픽을 사용하다보니 LabVIEW 자체가 좀 많이 무겁죠. 이것도 진입장벽이 낮고, 가독성이 좋은 그래픽 언어라는 장점의 트레이드 오프이죠. 하지만 오해가 있을 수 있는데, LabVIEW로 만든 프로그램이 느린 것은 아닙니다.
    5. 병렬처리는 장점입니다. 당연히 LabVIEW에서도 병렬이 아닌 시퀀스로도 코드를 개발할 수 있습니다. 시퀀스문을 사용해서 쭈욱 작성하면 되는거죠. 반대로 텍스트 언어에서 병렬로 처리할 경우에는 쓰레드를 만들어서 복잡하게 사용해야 하는데, 그보다는 LabVIEW에서는 반복문 두개로 그게 가능하므로 장점이 되는거죠. 당연히 텍스트 코드와 마찬가지로 병렬로 동작하는 코드들의 동기화는 필요하며, 이러한 방법으로 큐나 알림자 등의 함수들을 지원하고 있어, 병렬처리를 할 때 텍스트보다 편리하고 빠르게 개발할 수 있습니다.
    6. 어느정도 인정합니다. 하지만 이건 숙련도의 차이입니다. 잘 사용하는 사람들은 키보드 단축키와 마우스를 병행하면서 사용해서 마우스를 사용할 경우 불편한 점들을 커버할 수 있습니다.
    7. 다른 어떤 프로그래밍 언어랑 비교하는지는 잘 모르곘지만, 일반적으로 사용하는 마이크로소프트사의 비쥬얼 스튜디오도 유로이죠. LabVIEW에서 기본적으로 제공하는 분석 및 다른 함수들은 다른 프로그래밍 언어에서는 제공하지 않으니, 값어치는 있다고 생각됩니다.

    단점이라고 생각하는 점들에 대해서 제 생각들을 적었습니다.
    지금 snowall님은 LabVIEW의 입문 단계라고 생각됩니다.
    전세계적으로 많이 사용되는 언어에는 이유가 있으며, 숙련치에 따라 가속화가 가능하며 활용 범위가 많으니 너무 섣부르게 결론을 짓는것보다 더 사용하면서 장점을 찾는것을 권장드립니다.

    • snowall 2016.11.02 12:59 신고 EDIT/DEL

      네 공부 좀 더 해봐야겠군요. 감사합니다.


티스토리 툴바