LabVIEW這麼反人類的東西到底哪些人在用?他們看中了LabVIEW的哪些優點?

接了一個項目,客戶要求用LabVIEW完成。可是我之前從來沒有用過LabVIEW,之前一直用labwindows/CVI(即C語言)來做的。在學習LabVIEW的過程中,感覺到LabVIEW的各種反人類特性,比如:寫了循環條件判斷甚至順序執行的時候,感覺特別麻煩和傻逼,進行條件判斷和數值比較的時候特別2,寫到最後的程序就是大圈圈套著小圈圈,變數拉線條走通道拖來拖去,最後就是煮爛了又攪在一起的一大碗麵條理不清扯不斷。難以想像用LabVIEW來完成一個大型項目。很好奇那些用LabVIEW很爽的人,大家來說說優點。讓我這個一直習慣了用C/python/matlab的人見識一下開開眼界。知乎的處女問就獻給LabVIEW了。

=============追加最新進展的分割線=================

好吧,我不修改以前的提問,下面是增加最新進展的情況。

我現在不再糾結於LabVIEW了。有個兄弟的答案說「LabVIEW做簡單的事情麻煩,做複雜的事情簡單」。我覺得還是很有道理的,所以我現在的摸索出了一個辦法,就是用C語言做了DLL,把matlab嵌入到LabVIEW中。都各自利用各自的優點,一下子所有的事情都簡單了。再也不糾結了。


知乎的處女答就獻給LabVIEW了,正好與題主對應。

LabVIEW這麼反人類的東西到底哪些人在用?他們看中了LabVIEW的哪些優點?

答問題之前,先從題主的很好奇那些用LabVIEW很爽的人,大家來說說優點這句話引出吧。

用LabVIEW很爽的人,工作上(純學習我就不說了),大部分人還是完成任務為主,爽這個詞,是取得成就感,突破了自我才會用上的。什麼人用LabVIEW會覺得爽呢?

本來想寫描述,忽然覺得引用更好,以下是

17i老師似乎不願意被稱為高老師,我還是叫高工吧。

高工,私自轉載了兩段內容,就不說「若您不喜,請聯繫我刪除」的話了,我覺得您不會反對。

(1)在人的一生中,能夠花費這麼多的時間、精力,用心去做一件自己認為喜歡作的事情,那是多麼的不容易呀!我絕對不是那種高智商、天資聰明的人,但憑藉一種毅力、韌勁、愛好、追求最終還是步入了LabVIEW圖形化編程語言的殿堂(儘管還是一個初學者)。

記得小時候,爸爸常對我講的話就是:「有志者立長志,無志者常立志」。可是我到了這個歲數才真正體會到這句話的真正含義。四年多的風風雨雨、苦苦煎熬,是苦、是樂?是熱愛?是緣份?是興趣?還是追求?或許都有。

我發自內心的感謝LabVIEW,是它讓我在退休前、乃至退休後都不會感到寂寞和孤獨。

感悟 - 《LabVIEW學習札記》Web版

(2)其實緣份到底指的是什麼?我實在是搞不清、也弄不懂。但是,我相信那是一種機會、一種渴望、一種關注、一種追求、一種執著、絕對是一種可遇而不可求的巧合。我與LabVIEW之間的緣份亦是如此。


2004年一個很偶然的機會使我與LabVIEW結識,我相信那就是一種因果的緣份所致。你相信也罷,不相信也罷,反正我是相信。


正因為如此,我為博客選擇的名稱就是:「 一切隨緣」。假果你偶然到訪了我的博客,來到這裡,並耐心的看過此《札記》,那就是與我們之間的緣份。


緣亦是聚,聚亦是緣!緣份絕不會分先後、亦不會分老少、當然也不會分什麼高低和貴賤。在這裡沒有寬敞、舒適的「沙發」,只有我認真、努力的結果——一行行呈現你面前的「粗文淡字」。


希望在這裡,不會浪費上帝賦予你我的時間。


在古人所稱道的人生「四大幸事」中:「金榜提名時」 我經歷過,「洞房花燭夜」 我也經歷過,同樣「他鄉遇故知」我也曾經歷過,與LabVIEW的結緣可以算作是「久旱逢甘霖」吧!


當我慢慢進入技術生涯的衰落期時,能夠有幸與LabVIEW結緣。從而導致,煥發出了技術生命的「第二春」,難道還不算是「久旱逢甘霖」嗎?


歷經人生「四大幸事」如此這樣說來:我應該是「此生足矣」!!!!!

與LabVIEW結緣

2、阮大俠,《我和LabVIEW》一書,「LabVIEW 中的泛型容器」章節

LabVIEW 的主要方針是簡化工程師們編寫程序的難度,以前用 LabVIEW 編寫的程序大多是工業領域流程式控制制類型的。這種類型的程序用不到太複雜的數據結構和演算法,因此,LabVIEW 中對我們在計算機課程中學到的那些經典數據結構以及演算法的支持並不多。

但是在我自己用 LabVIEW 多了之後,用它比用 C++ 要順手,任何類型的程序都喜歡使用 LabVIEW 來編寫,包括一些通常用途的程序。

原文是這樣的,但我印象中是「作為一名LabVIEW fans,任何類型的程序都喜歡使用 LabVIEW 來編寫。無奈找不到這句話的原文了,可能是答讀者問還是什麼環節看到的。跟原文可能不一樣,但大致是這個意思。

總之,是這句話點亮了我,心頭也默默給自己貼了一個LabVIEW fans的標籤。

總之,是這句話點亮了我,心頭也默默給自己貼了一個LabVIEW fans的標籤。

總之,是這句話點亮了我,心頭也默默給自己貼了一個LabVIEW fans的標籤。

慣例,重要的事情說三遍。

到這裡我自己感知,似乎不用再回答LabVIEW這麼反人類的東西到底哪些人在用?他們看中了LabVIEW的哪些優點?這個問題了。

還是補充一點文字吧。硬體領域(硬體開發測試)的工程師們,一般不懂軟體。

所以,本來在硬體工程師眼中「寫程序這麼反人類的事情」

突然間,硬體工程師們發現,自己用LabVIEW居然可以編寫程序了。

「哎,居然特么實現了」

「哎,程序跑起來了」

「哎,我擦,出結果了」

這種感覺真是太酷了,奏這樣!


胡亂寫就的LabVIEW程序,當然是亂麵條, 其實沒有按照結構化個軟體工程的思考方式去寫程序, 不論什麼語言都是亂麵條, LabVIEW是按照數據流的模式來組建程序的, 完全按照科學家和工程師的思考方式來建構模塊化的程序. 是建立測量和自動控制系統的最佳語言, 並且是天生的並行語言.


C要完成一整個項目也不是容易的事情吧,對於不熟悉C語言的人來說難道不就是看到了滿屏的代碼而不知所措么?樓主本身只是因為熟悉C,所以才覺得labview反人類

對於labview,首先他是NI公司開發的和硬體結合度非常高的語言,你學過不同的語言應該有所體會:語言本身自然有各種優勢和劣勢,其中其庫的豐富程度佔了很大的比例。在儀器控制方面Labview的認可度非常高,case非常豐富,就這一點來說,labview已經做到了在這個領域裡的無可取代的地位。

其次,不同意「LabVIEW做簡單的事情麻煩,做複雜的事情簡單」的觀點。答主有幸教過幾年Lego機器人編程,教育的受眾是小學生,從3年級開始就能學,教的器材是mindstorms系列的NXT和EV3,你可以簡單百度了解一下這個兩款產品。這個系列官方提供的編程環境都是lego和labview合作開發的,界面長成這樣:

沒錯就是和labview很像。年級很小的學生在沒有任何編程基礎的前提下也能學會,編程就和搭積木一樣簡單,應該可以反駁「LabVIEW做簡單的事情麻煩」這個觀點(雖然也不是真正的labview)

如果要編大項目,貼一張官微的圖來說明style的重要性


沒有一個巨大的顯示器最好別用labview了,拖來拖去累死你


據我的經驗來看,LabVIEW做簡單的事情麻煩,做複雜的事情簡單。


樓主你肯定沒看過ni公司自己內部寫的教程,很系統很規範,三本,這個教程很難搞到就是了,否則你用它編程絕對不是麵條。。。。你得學框架和編程風格。市面上的那些非權威的學習法典還是不用看了,看那些學起來的代碼就是麵條粉絲啊。。我有同事就是看那些野史一樣的寶典學的,編超大程序時候他的代碼平鋪起來能有幾百平米了。。。維護時他自己都要吐了。。再推薦一本美國人寫的labview style 看了這些你會上手很快並且代碼易懂,比文字型代碼易讀多了,維護起來特別方便。。。labview的優點只有用多了用深了的人才能體會,前提是你得框架和編程風格要規範,這種圖形化編程語言也算是代碼界的一次革命吧,用在工業上大大降低了研發周期呢~


其實樓主的問題中已經包含了答案「讓我這個一直習慣了用C/python/matlab的人見識一下開開眼界」

也就是說,樓主是因為熟悉文本編程語言,所以喜歡labwindows。但如果我不會C/python/matlab,但是想最快的學會一門可供控制儀器的語言,則我會選labview.

因為對於靠編程為生的,編程是吃飯的傢伙,當然靈活性創造性越高越好,這才能體現出操縱編程的手後面的大腦的價值,簡單地說才能賺更多的錢。

而對於我們非靠編程為生的人,軟體只是輔助我們最快完成本職工作的工具。因此我們要盡量短的在編程上話費時間,然後把大量的時間用在本職工作上。

所以因為大家屬於各自不同的圈子,有各自不同的利益最大化需求,所以才會做出不同的選擇。——這很正常。


學會用框架,一切都變的不一樣了。show 一下自己編寫的一個系統界面和Block Diagram。功能都在子Vi和消息VI中實現。


一不小心原來的回復以及新的貼圖都沒有了。重新做。

---------------------------2015-08-23 11:41:26---------------------------

多引擎方式,也是看了《The Style Of LabVIEW》有了整體的印象。然後到現在也大致理解運用了。

---------------------------2015-08-23 11:46:06---------------------------

提交的都木有了。

重新提交吧。

1:Project;The LabVIEW Style book 官網有。需翻牆。

AF,調用各個子類TopVI。

OP10:AF結合隊列狀態機的方式。

AMC和JKI結合之後的隊列狀態機,解析字元串。上圖的DAQ模塊。

AF停止所調用的隊列模塊。

OP60完全用AF的方式編寫。

Initialize模塊

Data Process Method模塊。JKI方式。


首先,它是G語言的發展最好的一個。HP或者agilent,或者是德科技的那個vee,個人估計已經死透了。

其次,以它為代表的G語言,初衷是為不懂軟體的人快速控制儀器而創立的。

巴特,經過這麼多年,NI已經把它發展到無法令人輕視。

讓競爭對手每開發一個儀器,都得為你的某個軟體提供一個對應的驅動,是什麼樣的體驗……


與其說labview是一種給工程師用的建模方法。做系統集成的工程師一般都不是程序員,而且編程的時間也很少,有時候現場會有成百上千個感測器,這種時候最能體現labview的威力。有時候系統需要跟蹤上千個數據,還有可能面對不同的介面,如果你對現場布線和系統鏈路熟悉,labview可以最快的幫你將系統虛擬化,讓自動測試跑起來。您誰用cvi替代的問題,可以參考一下羅德施瓦茨或者安捷倫(現在叫keysight)寫的儀器驅動,在它們的網站就可以下載 免費開源的。比較一下c實現(僅有visa和math之類的基本c庫)和labview實現,就會發現即使簡單的儀錶比如計數器和直流源用c實現的話,代碼也是很繁瑣的。

至於您說會寫成麵條代碼,我只能說你應該多學習工程師本職業務和labview實現,個人感覺labview真心適合自動控制或者電氣工程專業的來寫,我們最喜歡條條框框和反饋了 。遙想當年只有mfc的時候,看見labview那種感覺就像從紅白機一下跳到ps2一樣。


關於代碼風格的,推薦一本書The_LabVIEW_Style_Book_美Peter.看完再來說代碼變成麵條的問題!


Labview優勢在硬體介面集成,便於系統級軟硬體協同設計,但在佔用資源和運行速度上和matlab是一個貨色。。。


從來不懂編程,畢業設計用LabVIEW寫的,界面做的漂亮然後導師很開心就給過了


LABVIEW被稱為「工業界的Windows」。足以見其地位。

我本科和研究生都是學儀器科學的,對這個軟體相對來說用得比較多。我覺得這個軟體厲害之處有以下幾點:

1、G語言的編程方式。

編程語言不說有成千上萬種,幾百種至少還是有的。對於同樣一個問題或者過程,每一種語言可以將其描寫出來,只是有的語言會簡單一些有的會麻煩一些。所以世界上沒有完美的語言,只是不同的語言適用於不同的場合。LABVIEW的G語言編程形式就非常適用於「數據流式」的編程,可以很清楚地看到自己程序運行過程中的數據流向,便於編程和調試。

2、豐富的函數庫和強大的與儀器交互的能力

這一點應該是LABVIEW最強大的地方。與 C 等編程語言一樣,LabVIEW也是通用的編程系統,有一個可以完成任何編程任務的龐大函數庫。包括數據採集、GPIB、串口控制、數據分析、數據顯示及數據存儲,等等。另外,LABVIEW還集成了滿足 GPIB、VXI、RS-232和 RS-485等協議的硬體及數據採集卡通訊的全部功能。它還內置了便於應用TCP/IP、ActiveX等軟體標準的庫函數,這就使得LABVIEW可以極為方便地與所有可通訊的儀器進行交互,只需要改變軟體,就可以實現不同的儀器儀錶的功能 。

3、靈活的儀器面板設計

LABVIEW不論是在G語言的編程模式還是前面板的控制項布局上都給編程增添了樂趣。虛擬儀器(Virtual Instrument)的特點使得開發者能隨心所欲地對儀器的功能和按鍵布局進行設計。上圖是我在一個實驗中編寫的一個LABVIEW程序的前面板,根據自己的喜好調整,用起來非常舒服。

利用LABVIEW可以充分發揮計算機的能力,創造出功能更強的儀器。對於搞儀器的人來說,沒有比LABVIEW更好用的軟體啦。


1,首先我要聲明,針對工控行業,labview一點也不反人類,而是順應時代的產物。在項目開發中比起C++,VC,VB效率不知要高多少倍,一拖即用的方法還有比這更快捷的嗎,整個程序框圖一目了然,豐富的工業介面,簡直是工控領域和實驗室的福音,

2,labview精髓所在是其數據流的驅動執行,選擇好框架還是很重要的,至於各個功能塊的實現就靠自己的水平了。一般會經歷 只實現功能其他啥也不管---考慮下如何提高下代碼重複使用率--考慮下節點分配和內存使用提高執行效率。一步步循序漸進。


labview側重於測試,儀器設備等,要看你用她做什麼,你總不能用女神去給你耕地吧


模塊化的東西 連線就能出程序 小孩子都能輕易寫出一個for循環 況且在信號調理輸出採集方面 NI是王者 這樣的程序你還有什麼不滿意呢


樓主的煮麵條形容簡直很贊!但是LabVIEW帶ad採集啊,Matlab木有這個功能呀,所以本著能少一份是一份的原則,就用labVIEW 了


就目前用到的情況而言:

1、labview對於沒有編程基礎的用戶而言,上手入門要相對簡單一些;

2、labview對於沒有編寫軟體基礎的用戶而言,寫GUI與調試要方便一些;

3、labview對於要用到各種介面進行通信(比如通過RS232、USB、RJ45、Wifi等連接到電腦的各種讀數儀器或者感測器)的情況,有現成的通信模塊可以用,編寫起來比自己手動敲代碼要方便許多;

4、NI公司有成噸的配套數據採集卡,都是專門配合labview使用的。


推薦閱讀:

Matlab 與 Labview 哪個對電氣控制工作更有幫助?
學labview對學嵌入式有什麼幫助嗎?
labview的數據流編程思想是什麼意思?

TAG:LabVIEW | 儀器分析 | 數據處理 | 測量儀器 | 儀器儀錶 |