본문 바로가기
LabVIEW/랩뷰 기초

GUI 프로그래밍 언어, LabVIEW(랩뷰)의 특징 -코드119

by 박사과정 모닝 2022. 6. 15.
반응형

안녕하세요. 연구보다 랩뷰를 더 많이하는 공학박사과정 김모닝입니다.

 

이번 포스팅에서는 지난 2014년에 처음 접하고, 2018년 대학원 진학 이후부터 제 대학원 생활의 거의 90%를 담당하고 있는 랩뷰(LabVIEW)에 대해 먼저 소개해 보려고 합니다.

 

LabVIEW아이콘, 구글 검색

1. 랩뷰란?

랩뷰(LabVIEW)는 Laboratory Virtual Instrument Engineering Workbench의 약자로서 내쇼날인스트루먼트(National Instrument, NI)사에서 개발한 그래픽 기반의 프로그래밍 언어입니다. 시스템 디자인 및 하드웨어 제어에 특화된 프로그래밍 언어로서, 계측/통신 분야에서 강점을 보이고 있으며 DAQmx나 myROI와 같은 장비를 사용하여 다양한 센서 및 기계장치를 제어할 수 있습니다. LabVIEW로 코딩한 파일은 대표적으로 VI(Virtual Instruments)라는 확장자를 가집니다. VI는 유저 인터페이스를 구성할 수 있는 프런트 패널과, 개발자가 다양한 함수들을 활용하여 알고리즘을 전개하는 블록 다이어그램으로 구성됩니다. 개발자는 프로그래밍 시에 이 두 가지 모두에 프로그래밍을 합니다.

 

 

2. GUI 언어인  랩뷰(LabVIEW)

랩뷰는 GUI(Graphical User Interface) 기반의 언어입니다. 그래픽 기반의 프로그래밍이란 말이 굉장히 낯설게 느껴지는 분들이 계실 것입니다. 공학이나 기타 분야에서 쉽게 접하는 프로그래밍 툴인 C, C+, JAVA, Python, MATLAB 등이 대부분 텍스트 기반 언어이기 때문입니다. 텍스트 기반의 언어는 사용자가 문자로 된 프로그래밍 명령어들을 한줄 한줄 작성하고, 코드를 실행하면 가장 첫번째 줄 부터 한줄씩 차례로 읽어 내려가며 실행됩니다. 그러나 랩뷰는 아이콘 형태의 함수와 컨트롤, 인디케이터 등을 마우스 클릭을 통해 와이어로 서로 연결하며 마치 그림을 그리듯 프로그램을 완성시켜 나갑니다. 이렇듯 와이어를 통한 데이터 흐름 기반 모델을 사용하기 때문에 개발자의 생각과 그 흐름을 직관적으로 표현이 가능하고, 프로그래밍 전공자가 아니더라도 손쉽게 직관적인 프로그래밍이 가능합니다.

 

그래픽 기반 언어인 LabVIEW 예제, 텍스트 기반 언어인 MATLAB 예제

 

랩뷰의 모든 함수는 아이콘의 형태로 제공됩니다. 따라서 아이콘의 형태를 보고 대략적인 기능을 인지할 수 있습니다. 아이콘에 더하기 표시가 있으면 더하기 함수이고, 아이콘에 사인 파형이 그려져 있으면 사인 함수입니다. 텍스트 기반 언어에서 함수를 사용할 때 마다 각 함수마다의 문법을 인지하고 사용해야 하는 것과는 다르게, 랩뷰에서는 아이콘의 입출력 부분에 간단하게 와이어를 연결하기만 하면 변수 입력 순서나 설정의 종류 등을 복잡하게 생각하지 않고 간편하게 함수를 사용할 수 있습니다.

 

또한 와이어 색깔만 보고도 어떠한 데이터 타입이 흘러가고 있는지 직관적으로 알 수 있습니다. 와이어가 파란색이면 정수, 주황색이면 소수점을 가지는 숫자입니다. 와이어가 분홍색이면 문자입니다. 또 파란색 와이어가 얇으면 단일 숫자 데이터, 두꺼우면 1D 배열, 두줄처럼 보인다면 2D 배열입니다. 하이라이트 기능을 통해 현재 데이터가 어떤 와이어를 지나가는 중인지를 확인할 수도 있고, 프로브 기능을 사용해서 와이어에 데이터가 흘러갈 때에 그 값을 실시간으로 확인할 수도 있습니다.

 

 

3. 쉽고, 편하고, 빠른 프로그래밍이 가능한 언어

랩뷰의 가장 큰 장점들 중 하나는 검증된 함수를 어마어마하게 많이 제공한다는 것입니다. 대부분 C나 Python 등의 프로그래밍 언어를 사용하다가 인터넷에서 오픈소스를 다운받게 되면, 그 오픈소스는 검증되지 않은 오픈소스인 경우가 대다수이기 때문에 사용자는 반드시 검증과정을 거치게 됩니다. 그러나 랩뷰는 NI에서 검증을 완료한 함수를 어마무시하게 많이 제공합니다. 필요한 기능 수행을 위해 오픈소스를 하나하나 검색해서 찾아보고, 테스트까지 한 후에 사용하는 수고로움이 없습니다.

 

또한 예제와 도움말이 굉장히 방대하고 친절하게 구성되어 있습니다. 다양한 기능을 가지는 예제가 방대한 양으로 준비되어 있고, 사용자는 언제든지 그 예제 파일을 변형함으로써 쉽고 간단하고 빠르게 원하는 목표를 수행하도록 프로그래밍할 수 있습니다. 또한 도움말에는 간단한 함수 하나까지도 자세하게 설명하고 있습니다. 그리고 도움말 페이지에서 관련된 함수를 사용하는 예제를 바로 열어볼 수도 있습니다. 기본적으로 제공하는 프로그래밍 구조에 관한 템플릿 또한 여러가지 제공하기 때문에 프로그래밍 과정에서 활용이 가능합니다.

 

 

4. 절차지향 프로그래밍 언어

다른 텍스트 기반의 언어들처럼 객체지향 프로그래밍(Object Oriented Programming, OOP)이 가능하기는 하지만, 기본적으로 절차지향 프로그래밍(Process Oriented Programming, POP) 언어입니다. 와이어링을 통한 데이터의 흐름을 따라가는 프로그래밍 언어이기 때문에 자연스럽게 절차와 순서라는 것이 프로그래밍 시 알고리즘을 구성할 때 기본 개념이자 전제가 됩니다. POP 언어는 사실 이해하는데에 별 노력이 필요하지 않아 굉장히 쉽습니다.

 

그렇지만 여기서 치명적인 단점이 나타나게 됩니다... OOP 언어를 사용하는 사람은 손쉽게 POP 언어인 랩뷰를 익혀 사용할 수 있지만, 랩뷰에 길들여진 개발자는 OOP 언어를 사용하거나 랩뷰에 OOP 개념을 도입하기가 쉽지가 않습니다. POP를 병행해서 사용하던 사람이 아니라 저처럼 랩뷰만 거의 평생 써 오던 사람에게는 OOP의 기본인 클래스 개념을 이해하는 것 조차 어려울지도 모릅니다. 저 또한 랩뷰를 통한 OOP 프로그래밍에 도전한 적이 있지만, NI 한국지사의 교육 담당자님과 이런저런 논의를 하다가 '어차피 너무 어려워서 한국에서도 랩뷰로 객체지향 프로그래밍을 제대로 하시는 분이 몇 분 안 계신걸로 안다. 그리고 어떻게 이해해서 프로그래밍을 한다고 해도, 객체지향 프로그래밍으로 짠 코드를 연구원님 졸업하시면 아마 아무도 이해 못 할 텐데 그 때는 어떻게 할것이냐?' 라고 하시길래 바로 접었던 기억이 있다...

 

 

5. 다른 언어와 호환

랩뷰는 NI에서만 제공하는 언어이기 때문에 국제 표준을 따르지 않습니다. 어떻게 보면 굉장히 폐쇄적인 프로그래밍 언어라고 할 수 있습니다. 기본적으로 그림을 그리듯 프로그래밍 하는 방식과 텍스트 기반의 프로그래밍 방식이라는 차이점이 있고, 또한 5번에서 설명한 것과 같이 POP vs OOP 언어라는 차이점도 있습니다. 마치 춤과 글쓰기의 관계와 비슷하다고나 할까요. 둘 다 예술이지만 함께 섞기가 쉽지는 않습니다.

 

그러나 랩뷰가 만능 언어는 아니듯, 어느 순간은 랩뷰에 필요한 함수가 없고 구현이 어려워서 다른 텍스트 기반 언어의 함수와 기능이 필요할 때가 있습니다. 또는 랩뷰에서 제공하는 함수더라도 다른 언어를 사용하는 것이 훨씬 효율적일 때도 있습니다. 제가 처음 랩뷰를 시작하였을 때에는 이러한 부분이 효과적으로 제공되지 않았는데, 연구실에서 LabVIEW2020을 구매해준 뒤로 이러한 부분에 큰 개선이 이루어진 것을 확인할 수 있었습니다. 현재 랩뷰에서 제공하는 호환 가능한 다른 언어는 MATLAB, Python, Arduino, C, C++ 등입니다.

 

 

6. 줌 없음

하... 이건 저의 랩뷰 사용이 점점 고도화되면서 코드가 커지고 위아래 양옆으로 넓어지는 와중에 굉장히 답답한 부분 중 하나입니다. 랩뷰는 줌인/줌아웃 기능이 없습니다. 코드가 넓을 때 왼쪽 끝에서 오른쪽 끝까지 와이어를 연결해야 한다면 우리의 마우스는 굉장히 먼 여정을 떠나야 합니다.... NXG에서 제공된다고는 하지만, NI에서 NXG 개발을 공식적으로 중단했습니다. 사용은 계속 가능하지만요.

 

 

여기까지 제가 꾸준히 사용중인 랩뷰에 대해 소개해드렸습니다. 앞으로 랩뷰를 사용하면서 배웠던 것들을 하나식 포스팅해 나갈 예정입니다. 제 블로그에 방문하시는 분들께 조금이나마 도움이 될 수 있으면 좋겠습니다. 감사합니다.

반응형