labview——Laboratory Virtual Instrument Engineering Workbench(實驗室虛擬儀器集成環境)應該包含兩種含義:其一,LabVIEW是一種圖形化的程式語言,所以LabVIEW也被稱為:G(graphical)語言;其二,LabVIEW也包含了支持圖形化程式語言進行應用軟體設計開發的開發環境(開發平臺)。
LabVIEW經過二十多年的發展已經充分證明:LabVIEW是極具威力的自動化測試、測量工程設計、開發、分析及仿真試驗的最佳軟體系統。現在已被廣泛應用在汽車、電子、化工、生物及生命科學、航空、航天等等許許多多的領域。
當前,隨著LabVIEW本地化進程的不斷深入,許多大學(大專)都相繼開始設置LabVIEW課程,越來越多的人們(學生)希望更多地了解和深入學習LabVIEW。同時,為什麼要學習LabVIEW?誰應該學習LabVIEW?學習LabVIEW會給我們帶來什麼好處?等等這些問題也會困擾著他們,我想根據幾年來的學習體會談談自己的認識與看法。
既然LabVIEW是一種程式語言,那麼不妨就從程式語言的一些基本概念來開始討論。
語言:
語言是用來表達我們的思想及進行相互交流和溝通的一種手段。
程序語言:
程序語言是用來指揮計算機表達我們的想法(意念)並能夠被計算機執行的程序代碼。
程序語言(直接面對物理層的程序語言)我們稱之為:機器語言。
機器語言(Machine language):
機器語言,也就是機器碼是可被處理器(CPU)加載並執行的由0和1組成的序列。由於硬體處理器的不同,所以機器碼序列也會是不一樣的。可以講,機器碼是處理器(CPU)可識別的唯一語言,並且是執行速度最高的語言。它與計算機的硬體(CPU)有著最為直接的關係。
但是,當人們看到或使用由0和1組成的序列(程序),實在是感到毫無規律、枯燥無味,並且無法理解和記憶。特別是,當計算機處理器的性能不斷提高時(位數增加),機器語言可能被視為世界上最無法讀懂和記憶的語言。試想一下,由64位0和1組成代碼,如何記憶和理解它們。
為了解決這個問題,使更多地人能夠使用計算機,並提高編程效率充分發揮計算機的作用,人們對機器語言進行抽象處理,從而導致了彙編語言的誕生。
彙編語言(Assembly language):
彙編語言,是從機器語言中抽象出來的使用縮寫或助記符進行編程的低級程式語言,並且提供較少的控制指令和數據類型,其中的每一條語句都對應於一條相應的機器指令(代碼)。通過彙編程序開發環境可以將彙編語言翻譯成機器語言,彙編語言同樣與給定的處理器相關。
在早期,包括作業系統在內的許多系統軟體都是用彙編語言編寫的(比如:UNXI作業系統)。使用彙編語言的好處在於可以提高執行速度,並且程式設計師還可以直接訪問系統硬體。但是,彙編語言由於其開發環境和彙編程序都依賴於給定的處理器,並且其指令和數據類型很少,同時程序的可讀性和可移植性都很差無法廣泛使用。於是人們再次對彙編語言進行抽象處理,從而導致了高級語言的誕生。
高級語言:
高級語言,是從低級的機器語言抽象而來的電腦程式語言。高級語言通常使用和英文單詞類似的關鍵詞,這些關鍵詞可以被翻譯成多條機器指令。實際上,比彙編語言高級的計算機語言都是高級語言。
C語言是目前最為廣泛使用的高級語言。它既具有一般高級語言的特性,同時又具備了一些低級語言特性(某些彙編語言的特點)。
當然,高級語言還有很多種比如像我們所熟悉的:面向對象的C++、Java及具有可視化編程環境的VC、VB、Delphi等等。這些高級程式語言的存在和發展說明,除了各自的特點不相同,應用領域不同外,還有編程方式的不斷改進的推動。
比如:從Basic演變到Quick Basic然後又演變到Visual Basic。
從C演變到C++然後又演變到Java(號稱沒有指針和頭文件的C++)及後來的VC。
這些已不在我們討論的範圍內,有興趣者可以看相關的書籍自來了解。
從「機器語言」抽象到「彙編語言」,又從「彙編語言」抽象到「高級語言」。那麼問題是:「高級語言」是否還可以進一步進行抽象出「某種超級程式語言」呢? 從計算機語言的發展規律來看,回答是肯定的。並且,二十年前這種語言就已經出現,那就是:LabVIEW——一種圖形化程式語言。
圖形化程式語言:
LabVIEW發展到今天,我認為:LabVIEW是從「高級語言」中抽象提煉出來的超級程式語言(到目前為止我還沒有從哪本中外LabVIEW書籍中看到這樣的提法或概念)。
這種將「高級語言」傳統的寫代碼的編程方式,抽象變為以「圖形、節點、連線」方式的程式語言,的確具有超級程式語言的特點。
用C和C++編寫的LabVIEW具有比C和C++更明顯得優點。
LabVIEW本身的易學易用、即學即用的特點也充分的證明了這個觀點。
問題在於:圖像化的編程方法是否真的就會比「高級語言」代碼編程方法更高級?我的回答應該是肯定的。下面通過兩個例子來進一步說明:
例1:
小時候,在我們剛剛開始會說話時,大人通常是用「看圖說話」的方式來教我們認識什麼是蘋果?什麼是梨?什麼是香蕉?顯然,利用圖形或圖像的概念使我們很快認識了這些水果。試想如果用文字或拼音來教我們認識這些水果,效果決不會好的。換句話說,圖形或圖像由於簡潔明確,的確要比文字或拼音更適合初學者來認識和區分。事實上,程式語言也是具有相同的規律。
對於學習過某種高級語言的人來講,對複雜的語法規則、指針、內存、類庫等等的掌握根本談不到輕鬆易學。
LabVIEW做到了這一點,用LabVIEW編程根本無需考慮什麼:語法規則、指針、內存、類庫等。LabVIEW這種圖形化語言將許多複雜的事情抽象的極為簡單明了。
例2:
時光倒退回二十多年前,那時人們對計算機的操作、控制還基於稱為DOS的磁碟作業系統(Diskette Operating System),即便是一個很簡單的操作人們也會噼噼啪啪的敲擊一陣鍵盤,對於複雜操作人難免還要認真仔細的查閱DOS手冊。那時的MicroSoft還是一個編寫DOS的小公司。後來,Mac(蘋果電腦)首先實現了計算機的圖形化操作,點擊滑鼠、利用拖拽即可完成對計算機的一些操作控制。LabVIEW大概也是受到了圖形作業系統的啟發(不知是否真的如此),開始了LabVIEW的設計,並在Mac機上完成了LabVIEW1.0版的發布。直到MicroSoft也設計出圖形化作業系統時,LabVIEW才發布了Windows版。這大概是LabVIEW2.0,到LanVIEW3.0發布時它已經全面支持跨平臺使用了。
計算機作業系統的圖形化無疑加快了計算機使用的普及和使用的大眾化(當然也包含硬體發展的推動),使計算機由過去的專供專業人員操作使用,而真正變成了不分年齡、不分專業的大眾工具。其中,真正起核心作用的還是圖形化作業系統得簡潔、方便和易學。
程式語言的圖像化應該與作業系統圖形化一樣,給那些不善於使用代碼編程的人帶來了實現複雜程序設計的機會(我就是其中的一個受益者)。
其實許多學習過LabVIEW的人都回有這樣的體會:圖形化編程的確大大降低了程序設計的複雜度,LabVIEW的確是比那些「高級語言」更好的超級程式語言。
LabVIEW的跨平臺特點,以及在同一個平臺下對FPGA、DSP及嵌入式微處理器的開發提供圖形化編程的支持,難道不可以稱之為:超級程式語言嗎。
LabVIEW是從「高級語言」中利用圖形化的抽象方法抽象出來的超級程式語言。那麼,還能對它繼續進行抽象處理,進一步提高它的簡潔性和方便性嗎?
Express VI
DAQ助手
儀器I/O助手
視覺助手
難道這些不是嗎?
這就是我給出的:為什麼要學習LabVIEW的理由之一。