프로그래밍 사이트 선정 프로그래밍 언어 순위 목록 | ||||
{{{#!wiki style="margin: 0 -10px -5px; word-break: keep-all" {{{#!wiki style="display: inline-table; min-width: 25%; min-height: 2em;" {{{#!folding [ IEEE Spectrum 2024 ] {{{#!wiki style="margin: -5px 0" |
<rowcolor=#fff> 스펙트럼 부문 상위 10개 프로그래밍 언어 | 직업 부문 상위 10개 프로그래밍 언어 | ||
1 | Python | 1 | SQL | |
2 | Java | 2 | Python | |
3 | JavaScript | 3 | Java | |
4 | C++ | 4 | TypeScript | |
5 | TypeScript | 5 | SAS | |
6 | SQL | 6 | JavaScript | |
7 | C# | 7 | C# | |
8 | Go | 8 | HTML | |
9 | C | 9 | Shell | |
10 | HTML | 10 | C++ |
}}}
}}}
- [ Stack Overflow 2024 ]
- ||<tablewidth=100%><width=9999><-4><bgcolor=#FFA500><tablebgcolor=#fff,#222> 2024년 Stackoverflow 설문조사 기준 인기 상위 25개 프로그래밍 언어 ||
1 JavaScript 14 Rust 2 HTML, CSS 15 Kotlin 3 Python 16 Lua 4 SQL 17 Dart 5 TypeScript 18 어셈블리어 6 Bash 19 Ruby 7 Java 20 Swift 8 C# 21 R 9 C++ 22 Visual Basic 10 C 23 MATLAB 11 PHP 24 VBA 12 PowerShell 25 Groovy 13 Go
- [ TIOBE 2024 ]
- ||<tablewidth=100%><width=9999><-4><bgcolor=deepskyblue><tablebgcolor=#fff,#222> 2024년 8월 기준 검색어 점유율 상위 20개 프로그래밍 언어 ||
1 Python 11 MATLAB 2 C++ 12 Delphi / Object Pascal 3 C 13 PHP 4 Java 14 Rust 5 C# 15 Ruby 6 JavaScript 16 Swift 7 SQL 17 Assembly language 8 Visual Basic 18 Kotlin 9 Go 19 R 10 Fortran 20 Scratch {{{#!wiki style="margin: 0 -10px -5px; min-height: calc(1.5em + 5px);"
{{{#!folding [ 21위 ~ 50위 펼치기 · 접기 ]
{{{#!wiki style="margin: -5px -1px -11px"21 COBOL 36 Scala 22 Classic Visual Basic 37 Transact-SQL 23 LISP 38 PL/SQL 24 Prolog 39 ABAP 25 Perl 40 Solidity 26 (Visual) FoxPro 41 GAMS 27 SAS 42 PowerShell 28 Haskell 43 TypeScript 29 Dart 44 Logo 30 Ada 45 Wolfram 31 D 46 Awk 32 Julia 47 RPG 33 Objective-C 48 ML 34 VBScript 49 Bash 35 Lua 50 Elixir
- [ PYPL 2024 ]
- ||<tablewidth=100%><width=9999><-4><bgcolor=green><tablebgcolor=#fff,#222> 2024년 8월 기준 검색어 점유율 상위 20개 프로그래밍 언어 ||
1 Python 11 Objective-C 2 Java 12 Go 3 JavaScript 13 Kotlin 4 C# 14 MATLAB 5 C/ C++ 15 PowerShell 6 R 16 VBA 7 PHP 17 Dart 8 TypeScript 18 Ruby 9 Swift 19 Ada 10 Rust 20 Lua
}}} ||
프로그래밍 언어 목록 · 분류 · 문법 |
1. 개요
LabVIEW는 미국 NI(National Instruments)[1][2]사에서 제작한 시스템 디자인 및 하드웨어 제어에 특화된 그래픽 기반 프로그래밍 툴이다. 보통 '랩뷰'라고 발음한다.1986년 매킨토시용 GUI 프로그래밍 툴로 처음 출시되어 후에 기능이 확장되고 윈도우와 리눅스도 지원하게 되어 지금에 이른다. 다른 메이저 프로그래밍 툴과는 달리 G라고 하는 그래픽 기반 프로그래밍 언어를 사용해 알고리즘을 짜기 때문에 초보자도 매우 쉽게 프로그램을 다룰수 있다. 한국에서는 2000년대 중반까지만 해도 MATLAB같은 메이저 툴에 밀려 인지도가 낮았지만, 현재는 쉬운 난이도와 막강한 외부장치와의 호환성을 장점으로 철도, 기계, 전자 장비들을 제어하는 현장에서 많이 쓰이며, 이공계 학생들의 프로그래밍 입문용 툴로 주목받고 있다.
Community Edition이라는 무료 버전이 있다. 더 이상 체험판 기간 버그를 사용할 필요도 없이 비영리적인 용도에 한해서 무제한으로 사용할 수 있으며 학교 또는 기관 이메일 외의 개인 이메일로 회원가입하면 사용할 수 있다. 다만, Vision, FPGA와 같은 유료 에디션의 경우는 여전히 인증을 해야하거나 체험판을 사용해야 하므로 유의하는 것이 좋다. 비영리적인 상황에서 사용한다면 LabVIEW Community Edition과 인증 된 유료 에디션을 혼용하는 것도 가능하다. 다만, 아직까지는 커뮤니티 에디션이 영어 밖에 없다는 것이 단점.
2. 특징
NI 소프트웨어를 사용하는 그래픽 기반 프로그램 언어이다.프로젝트를 만들면 두 개의 창이 뜨는데, 한쪽은 프로그램의 겉모습을 디자인하는 패널이고, 다른 한쪽은 프로그램의 알고리즘을 디자인하는 패널이다. 비주얼 베이직과 비슷해 보이지만 LabVIEW의 경우 아예 다른 창으로 각자 나뉘어져 있다. For문, If문, While루프를 상자 모양의 "구조"로 구현한다.
LabVIEW 자체는 분명 프로그램 언어가 맞으나 사용을 위해서는 코드를 구동시키기 위한 NI 소프트웨어가 필수적으로 설치되므로 VScode와 같은 프로그램 에디터도 함께 겸한다고 생각하는 것이 좋다.[3]
2.1. 언어로서
앞서 말했듯 그래픽 기반 프로그래밍 툴로 그냥 마우스로 이것저것 삽입해서 연결하기만 해도 알고리즘을 짤 수 있다. 프로그래밍을 처음 해보는 사람이라도 몇 분만 다뤄보면 간단한 프로그램을 만들 수 있을 정도.[4] 텍스트 기반의 프로그래밍 언어처럼 작동시키기 위한 순서에서 자유롭다[5]는 장점도 있다.대학에서 LabVIEW를 가르치는 교수가 자신이 가르치지 않아도 그냥 책이나 도움말 보고 며칠 간 따라서 만들어보면 마스터할 수 있다고 할 정도니 말 다했다(...)
프로그램이 작동할 때, 어디에서 어떤 데이터가 어떻게 처리되는지 차례차례 확인할 수 있는 기능이 있다. 블록 다이어그램 탭에 있는 "Highlight Execution"(전구 모양) 버튼을 누르면 확인할 수 있다. 디버깅 시 편리한 부분.
프로그램을 그래픽 형식으로 짜다 보니 당연히 직접 키보드로 입력하는 것보다 프로그램을 섬세하게 짜는 게 어렵다는 단점이 있다. 설령 섬세하게 짠다고 해도 수많은 구조나 함수들을 그래픽으로 입력해야 하기 때문에 편집하기가 더 어려워진다. 이보다 더 큰 문제는 쉽다고 막 짜다 보면 구조적으로 프로그래머가 예측하기 어려운 문제들이 많이 터진다는 점이다. 즉, LabVIEW로 간단한 프로그램을 짜는 건 쉽지만, 약간이라도 깊이 있는 프로그램을 짜려면 어떤 상황에서 이런 구조나 기능이 내부적으로 어떻게 동작하는지를 경험적으로 알고 있어야 한다.[6]
사용이 쉽다는 특징을 가진 프로그램 언어답게 생산성은 뛰어나지만 그만큼 무겁다. 때문에 코어 프로그램으로서는 사용을 그다지 권장[7]하지 않는다. 단, PC가 아닌 DAQ, RIO 등의 NI 하드웨어의 FPGA와 RT를 이용한 경우에는 코어프로그램으로서도 충분히 활용 가능하다. NI 하드웨어는 애초에 LabVIEW 사용을 전제로 만들어져 있는데다가 연산자체도 NI 하드웨어에서 진행하기 때문.
정말 간단한 UI를 구현하기는 쉽지만 조금만 복잡하게 들어가려면 정말 어렵고 까다롭다. 그래픽 기반의 언어이다 보니, 일반적인 텍스트 기반의 언어 같은 프로그램을 객체지향 및 함수 지향적으로 짜기가 쉽지 않아 모듈화가 쉽지 않다. 물론 모듈화가 불가능하다는 뜻은 아니지만 vi를 일일이 만들어줘야 한다.[8] SubVI, FGV, 다형성 VI등 LabVIEW 나름대로의 함수 제작 기법이 있으므로 너무 기존의 텍스트 기반의 언어에 얶매이지 않는 것이 좋다.
또한 UI는 손쉬운 측정 모니터링 프로그램을 만든다는 느낌에 가깝기에 역시 마우스 몇 번 까딱거리는 걸로 쓸만한 걸 간단하게 만들 수 있다 정도지 정말 각 잡고 세련된 UI를 만든다고 하면 기능이 제한적이기에 마이크로소프트사의 Visual Studio 같은 전문 IDE 툴이나 UX/UI툴을 함께 쓰는 것이 좋다. 애초에 LabVIEW의 목적을 생각하면 굳이 UI에 공을 들일 없긴 하지만.
다른 언어에 비해서 데이터 베이스가 적은 것도 단점이다. 유료 언어답게 자체적으로 지원하는 예제들이 빵빵하긴 하지만 예제 외의에서 코드를 검색하고자 한다면 깃허브는 커녕 구글링에 들어가도 내가 원하는 코드를 못 찾을 확률이 매우 높다. 엄연한 프로그램 언어답게 많은 것들을 할 수 있는 것은 맞으나 사실상 NI와 연결하여 사용해야만 제대로 쓸 수가 있다. 그나마 LabVIEW 자체적으로 예제를 많이 지원해주기는 하지만[9] 아무래도 오픈 소스의 빈 자리가 느껴질 수 밖에 없다. 많이 사용하지 않는 프로그램 언어이기 때문에 커뮤니티도 제한적이며, 깃허브를 뒤지는 것 같이 남이 짠 코드를 분석하여 자신이 사용해보는 것 같은 보편적인 프로그래밍 실력 키우기 방법으로는 Labview의 숙련도를 키울 수가 없다. 비전, DAQ, 통신, 엑츄에이터 같이 본격적으로 활용적인 실력을 키우기 위해서는 직접 책을 읽거나 공식 강의를 수강하는 것으로 기초를 다지고 LabVIEW에서 지원하는 예제들을 파는 것을 추천한다. 다만, 지원비를 받거나 어쩌다가 NI 파트너쉽 회사에 취직한 것이 아니라면 랩뷰교육원과 같이 비싸고 질 좋은 오프라인 강의는 꿈도 꾸지 못한다.
어쨌든 책을 읽고 강의를 수강하는 방법은 정석적이지만 부족한 커뮤니티의 한계가 명확하기 때문에 숙련된 LabVIEW 개발자는 되기 어려울 뿐더러, 찾는 것 또한 상당히 어렵다. 계측분야에서 상당히 강력해서 중요한 부분에서 현역인 것은 맞지만, 반대로 계측분야가 아니면 건들일 일도 없기에 수요가 부족한 것도 또한 단점.
2.2. 계측 분야에서
LabVIEW의 알파이자 오메가라도 봐도 좋다. 프로그램언어로서 할 건 다할 수 있지만, LabVIEW는 범용적인 용도보다는 계측 장비에 연결하여 사용하는 것이 주 목적이다. 덕분에 각종 휴대폰, 자동차, 심지어 원자로 등의 계측 시스템 제작에 적극적으로 활용되고 있다.기본적으로 잘 호환되는 것은 NI 하드웨어이다.[10] NI-DAQ의 성능이 매우 뛰어난데가, 타 회사의 계측장비도 호환되는 덕분에 비주류 언어치고는 LabVIEW는 계측공학에서 현역으로 머무를 수 있다.
실험장비와의 호환성이 매우 좋다고 되어 있었는데, DAQmx나 myRIO등 호환되는 장비들도 비싸다. 물론 비싼만큼 성능은 제 값을 한다. 100만원 정도는 기본. 다만, 장비를 잘 갖췄다고 해도 LabVIEW와 버전이 안 맞는다[11]는 둥, 초심자들의 속을 끊임없이 썩히곤 한다.
결론적으로 잘 쓸 수만 있다면 마우스질 몇번으로 뚝딱 계측 프로그램 만들고 exe, install 프로그램[12]까지 만들어 배포까지 가능하다. 편리한 시스템 구축 능력은 LabVIEW를 통틀어 NI 소프트웨어의 커다란 장점이지만, 앞서 말한 이유들 때문에 연구소 자체적으로 개발 공부를 하여 원하는 프로그램을 구축하는 것은 굉장히 어렵다. 이는 프로그래밍 언어로서 보편화되기 상당한 걸림돌로 작용한다. 최근 랩뷰를 개발한 NI에서 랩뷰를 교육보다 산업에 더 투자하느라 교육생 확보가 줄어든 것도 한 몫 하는 듯하다.
2.3. 그 외
가격이 많이 비싸다. 2016년 최소 150만원이 넘고 패키지 좀 붙이면 600만원은 그냥 넘는다. 따라서 학생들이 사용하기에 부담된다. 그래서 저렴한 교육용 버전이 따로 있고 홈페이지에서 15일 체험판도 배포한다.[13] 2022년에 들어서 정책이 바뀌며 구독제로 바뀌며 좀 저렴해지긴 했지만 유지 비용이 무지막지하게 들게 되었다.상위 버전에서 작성/수정한 파일은 하위 버전에서 못 연다. 하위 버전에서 사용해야 하는 파일은 미리 "File" - "Save As Previous Version" 기능을 활용해 저장해야 한다.
각 버전별로 런타임 패키지 구조가 달라서 상위 버전의 런타임 패키지가 하위 호환이 안 된다. 예를 들어서 2013 버전으로 작성된 프로그램을 실행하려면 반드시 2013 버전 런타임을 설치해야 하며, 상위 버전의 런타임 패키지나 랩뷰를 설치해도 정확하게 2013 버전의 런타임 패키지가 필요하다. 런타임 패키지 하위 호환이 가능해진 것은 2018년 버전부터이고 그나마도 2019 버전은 2018 컴파일러까지만 지원한다.
2023년 10월 11일 제작사인 NI가 EMERSON에 인수되면서 앞으로 EMERSON 타이틀을 달고 나올지에 대해 사용자들과 유저들이 촉각을 곤두세우고 있다. 24년 공식 홈페이지에서 EMERSON 로고가 정식적으로 박혀있다. 다만, NI 아이콘은 그대로 사용 중.
3. 관련 프로그램
- NI Measurement Studio: NI사에서 개발. Visual Studio에 종속된 라이브러리. LabVIEW 관련 UI 라이브러리를 제공해준다. 대개 VB/ VB.NET이나 C#에 능숙한 개발자들이 많이 사용한다.
- NI LabWindows/CVI: NI사에서 개발. ANSI C언어 기반 개발 툴이다. NI Measurement Studio와는 다르게 아예 통합 개발 환경로 되어있다. Real-Time Module로 개발하지 않는 이상 보통 개발자들은 Visual Studio(VB.NET or C#) + NI Measurement Studio 조합으로 가던가 아니면 처음부터 랩뷰로 개발하기 때문에 이를 사용하는 사람은 많지 않다.
- Visual Basic/ Visual Basic .NET: Visual Studio 내에 있는 프로그래밍 언어로 현재 LabVIEW와 더불어 산업현장 및 FA 등에서 가장 많이 쓰이는 개발툴이다. VB 6.0을 가장 많이 사용지만 세월이 지날수록 VB.NET 2010/2012의 사용이 늘고 있다. 2012 버전 이후로는 Windows XP에서 동작이 원활하지 않기 때문. LabVIEW 만큼, 아니 C언어 같은 기초적인 내용만 알아도 LabVIEW보다 더 쉽게 FA 제어/계측 프로그램을 개발할 수 있다. 앞서 기술한 NI Measurement Studio 과 함께 사용하면 편리하다.
- Keysight VEE Pro: Keysight(구 Agilent)사에서 개발한 그래픽 기반 프로그래밍 언어. 'Agilent VEE'라고도 불린다. LabVIEW에 비해 인지도가 많이 낮다. 2013년 9.32 버전을 마지막으로 업데이트가 중단된 상태이다.
- NI TestStand Evaluation Software: 자동화 테스트 관리 솔루션. 반복되는 자동화 테스트 시스템을 사용하고, 개발자와 운영자가 다른 경우, 개발 코드를 재사용하여 유지보수 할 경우 등에 최적화된 소프트웨다. 레포트 작성 혹은 데이터베이스 로깅과 가은 일반적으로 공통으로 쓰이는 작업들과 특정 테스트를 분리해서 관리한다. 각 단계의 시퀀스를 자동화하기 위한 기능을 지원하고, LabVIEW 뿐만 아니라 LabWindows/CVI, Visual Basic, C++, C#, Python 등 다양한 테스트 코드를 불러올 수 있도록 지원함으로서, 작성한 테스트 코드의 자동화가 필요한 모든 어플리케이션의 사용을 지원한다.
[1]
Texas Instruments와는 다른 회사다. 랩뷰 외에도 각종 실험,실습용 전자장비를 제작하는 회사로 이 회사의 유명 제품중 하나는 학계에서 널리 쓰이는 USRP
SDR 장비가 있다.
[2]
2023년 10월 11일에
EMERSON에
인수되었다.
[3]
때문에 자체적으로 C++, 파이썬, 매틀랩 등을 구동할 수 있는 툴도 내장되어 있어서 다른 언어의 예제를 이식하여 사용하는 테크닉이 가능하다.
[4]
예를 들어, 배열을 오름차순으로 정리하고 최댓값을 추출할 때, 다중 for으로 코드 몇 줄을 짜야 되지만, LabVIEW는 그냥 '배열 정리'랑 '배열 최대, 최소' 아이콘 단 두 개만 끌어서 연결하기만 하면 된다. 게다가 부족한 기능은 따로 다운 받아서 더 추가할 수 있다. 물론 LabVIEW 내에서도 C언어를 쓸 수 있지만, 굳이 C언어를 쓸 필요 없을 만큼 간단한 프로그래밍이 특징이다.
[5]
예를 들어 일반적으로 While 루프를 여러 개 써서 동시에 돌리는 것은 불가능하지만, LabVIEW에서는 여러 프로그램을 동시에 돌리고 싶으면 그냥 While 루프 여러 개 만들면 된다. 한 프로그램에 독립적인 루프를 10개를 넘게 만들어도 알아서 개별적으로 돌아간다. 다만, 이건 동시에 단점이기도 한데, 뭐가 먼저 돌아갈지 알 수 없다는 것. 때문에 필요에 따라서는 플랫 시퀀스라고 하는 순서 결정 구조 함수를 추가해주는 것이 좋다.
[6]
이를 위해 LabVIEW에서는 디자인 패턴이라는 개념이 존재한다. 쉽게 말해 코드를 그리는 방법인데, 가장 기본적인 디자인 패턴은 상태머신 디자인 패턴이다. 조금이라도 어려운 프로그램을 짠다면 이 상태머신 구조를 이용하여 프로그램을 짜는 것이 좋다. 애초에 LabVIEW 국제 자격증 테스트에서도 이 상태머신 구조를 사용 안 하면 점수가 확 깎인다. LabVIEW 개발에 있어서 필수적으로 알아야하는 LabVIEW 코딩 기법이지만, 보통 학생들은 이러한 디자인 패턴에 대해서 까지 배우질 못하기 때문에 앞서 말한 섬세하지 못한 프로그램을 제작하는 것에 그치고 만다. 여러모로 아쉬운 상황.
[7]
이는 파이썬과 C++의 관계와 동일하다. 파이썬은 무거워서 코어 프로그램으로서 어울리지않지만 뛰어난 생산성을 가진다. 반면 C++ 어려워서 영 쓰기가 어렵지만 대신 코어 프로그램 구축에 적합하다.
[8]
참고로 하나의 VI로 각각 다른 용도로 사용하고 싶다면 VI 프로퍼티에서 실행 설정을 '복제 재호출 실행'으로 바꿔줘야 한다.
[9]
애초에 LabVIEW 컨셉이 '완벽하게 동작하는 예제를 지원하는 것으로 개발자들이 편하게 쓰는 것'이기 때문. 사실 계측 장비를 쉽게 쓰는 게 LabVIEW의 진정한 목적이기 때문에 이런 컨셉으로 나가는 것이다. 정말로 LabVIEW 내에서 지원하는 코드들은 오류 없이 완벽하게 동작한다. 그리고 NI 계측장비 외에도 타사의 계측장비도 지원이 된다면 완벽하게 동작한다.
[10]
측정기가 엄청나게 비싼데 수천~수만 Hz에 정밀 센서를 장착해서 자체 트리거까지 달려있는 장비가 괜히 수백~수천 만원을 호가하는 것이 아니다. 아두이노로는 연구실에서 원하는 측정 데이터를 절대 얻을 수 없다. 안 그래도 다루기 어려운 계측장비 시스템을 간단하게 구성해서 작동 시킬 수 있는 것은 LabVIEW 큰 장점이다. 물론 LabVIEW를 어느정도 쓸 줄 아는 사람에 한하지만, 다른 장비들에 비하면 엄청나게 간편하게 구축 할 수 있다.
[11]
내부 프로그램도 NI MAX 지원 소프트웨어를 통해서 버전 맞춰서 설치해줘야 한다. 이런 것들이 노하우라서 경험자의 손길이 필요하다. 문제는 안 그래도 적은 커뮤니티와 LabVIEW 개발자들의 수가 적은 탓에 직접 써먹기가 어렵다는 것. 직접 부딪히며 고생하는 것보다 NI 홈페이지나 NI 커뮤니티, 전문가를 찾아서 조언을 듣는 것이 좋다.
[12]
근데 배포 프로그램을 만들어도 애드인이 구독제 유료라서 만약 NI Vision 같은 것을 쓴다면 그냥은 실행이 안 된다(...) 사용할 애드인 구독하고 인증 후 사용해야 한다. 덕분에 민간 영역에서 취미용으로는 잘 쓰이지 못 한다. 이유는 비싸서.
[13]
하위 버전, 대략 2018년 이전 버전 체험판의 경우 처음 실행한 뒤 날짜를 설치하기 전으로 설정하면 그만큼 사용 가능 기간이 늘어나는 버그가 있었다 2099년 12월 31일로 하면 끝. 2020년 버전에서는 정품 인증을 위해 로그인을 요구하기 때문에 막혔다. 다만, 전술했듯이 비영리적으로 사용하는 용도에 한해서 무료로 제공하는 LabVIEW Community Edition이 출시하여 더 이상 버그를 사용하지 않아도 마음대로 LabVIEW를 쓸 수 있게 되었다. 영어라는 점이 단점이긴 하지만.