“為什么LabVIEW優(yōu)于C語(yǔ)言?” 作為L(cháng)abVIEW產(chǎn)品經(jīng)理,我被很多次問(wèn)到這個(gè)問(wèn)題。
老實(shí)說(shuō),這么提問(wèn)實(shí)際上是錯誤的。必須要有具體的應用環(huán)境,這么提問(wèn)才有意義(例如,“在這些限制條件下,哪一種語(yǔ)言更適合這個(gè)任務(wù)?”) 若沒(méi)有這些細節,這個(gè)問(wèn)題就像為什么面包比面粉好一般無(wú)意義。
如果您想創(chuàng )建一個(gè)測控系統,不同于C語(yǔ)言等低級語(yǔ)言,使用NI LabVIEW系統設計軟件能夠幫助您降低風(fēng)險、節省開(kāi)支并免除不必要的麻煩。在這里我并非暗示LabVIEW是比C語(yǔ)言“更好”的編程語(yǔ)言——特別是考慮到LabVIEW大部分內容不僅僅由G語(yǔ)言編寫(xiě),還由C和C++語(yǔ)言組成。 恰恰相反,這兩種語(yǔ)言各自具有不同的優(yōu)勢,程序員應合理?yè)袢〔拍苓_到自己的目的。
為什么要把LabVIEW比作面包? 請繼續閱讀
LabVIEW和C語(yǔ)言相比起來(lái)就好比面包和面粉的關(guān)系。 如果您想做一個(gè)三明治,就必須先選用面包。 如果您想做一個(gè)蛋糕,先用的自然是面粉。 如果用面粉從頭烘烤面包,即昂貴又費時(shí)(尤其是當你只想吃些小點(diǎn)心時(shí)),但若做的是蛋糕,面粉就必不可少了。 同樣的,你會(huì )發(fā)現,要選擇最適合的編程語(yǔ)言并非易事,它歸結為使用正確的工具來(lái)完成適合的工作。
C語(yǔ)言提供了低級別的控制
當應用資源有限,必須嚴格管理時(shí),C語(yǔ)言的使用效果更好。 由于C語(yǔ)言是相對低級別的語(yǔ)言,因此,即便是最細微的細節,如內存分配和線(xiàn)程,都必須考慮周全。優(yōu)秀的程序員能夠使用低級別的控制,省去大部分高級別應用帶來(lái)的間接開(kāi)銷(xiāo)。此外,還能充分利用目標體系構架或主機操作系統屬性,實(shí)現更高的性能。
正是由于上述原因,NI程序員使用C或C++編寫(xiě)了LabVIEW庫中的大部分內容。LabVIEW與C語(yǔ)言在文件I/O和分析等操作的運行速度上旗鼓相當,因為這些操作都是基于低級語(yǔ)言編寫(xiě)的,并對LabVIEW支持的不同平臺和操作系統進(jìn)行了優(yōu)化。
效率Vs控制
有時(shí),若開(kāi)發(fā)人員的效率足夠高的話(huà),就無(wú)需手動(dòng)優(yōu)化代碼了。 減少一點(diǎn)控制,借鑒類(lèi)似問(wèn)題的解決方案,可極大地促進(jìn)項目的高質(zhì)量開(kāi)發(fā)。 編程語(yǔ)言不斷朝更高級抽象方向發(fā)展,讓您更專(zhuān)注于手頭的問(wèn)題,而不是被計算細節所困擾。
LabVIEW: 并行執行和真實(shí)I/O
無(wú)論使用何種語(yǔ)言,高級系統設計與低級執行都是獨立的。
在測控應用中,編程只是系統設計者的任務(wù)之一。 工程師很少有時(shí)間為了計算和測量硬件,或是操作系統上的改進(jìn),去更新或重寫(xiě)舊版本軟件。 他們通過(guò)獲取、處理和呈現真實(shí)數據進(jìn)行改進(jìn)——而不是去挖掘新方法處理內存分配和線(xiàn)程池。 使用LabVIEW,您可以使用經(jīng)測試、支持、維護的NI底層代碼庫來(lái)創(chuàng )建應用。 而選擇C語(yǔ)言意味著(zhù)您需要實(shí)現、支持和維護自己的底層庫,或從供應商處購買(mǎi)(NI提供NI LabWindows ™/CVI 軟件與NI Measurement Studio)
從語(yǔ)法角度來(lái)說(shuō), C語(yǔ)言指令連續執行的能力非常強,CPU能以最快的速度處理它們。 對于純粹的數據計算,在執行單一任務(wù)且指令相對基本的情況下,C語(yǔ)言非常適用。 而LabVIEW采用的是圖形化語(yǔ)法,更適用于有真實(shí)時(shí)間約束的并行執行任務(wù)。
使用LabVIEW,您可以跳過(guò)基礎構建的步驟,直接進(jìn)行自定制。
LabVIEW不僅僅是一種編程語(yǔ)言及相關(guān)的代碼庫。 結合使用LabVIEW集成開(kāi)發(fā)環(huán)境(IDE)與NI硬件,由此所帶來(lái)的開(kāi)發(fā)體驗是各個(gè)部分的總和無(wú)法企及的。LabVIEW可以準確識別可用的硬件資源,并以下拉菜單和項目名稱(chēng)顯示可用的I/O通道與執行目標。 在編輯過(guò)程中,您可以防止或察覺(jué)錯誤的配置,以避免代價(jià)高昂、又難以調試的運行時(shí)錯誤。 新一代測量硬件(如NI PXIe-5644R矢量信號收發(fā)器)甚至可以允許LabVIEW對其固件進(jìn)行重新定義,達到傳統、不同的編程語(yǔ)言和儀器無(wú)法實(shí)現的性能水平。
有很多項目都會(huì )延期或超預算完成,主要是因為工程師低估了聚集所有資源所需的開(kāi)銷(xiāo)。 若您使用LabVIEW,硬件驅動(dòng)程序會(huì )以與數據分析庫相同的格式返回數據,UI小部件則以相同的格式顯示技術(shù)數據,無(wú)需再拼湊不同組件。
到底哪個(gè)更好: LabVIEW還是C語(yǔ)言?
這個(gè)問(wèn)題的最佳答案是:“一切皆有可能。” 正如《銀河系漫游指南》中所說(shuō)的, 除非您明確自己的問(wèn)題或了解正試圖解決的問(wèn)題,否則得到的答案也是無(wú)意義的。 對于熟練的用戶(hù)來(lái)說(shuō),LabVIEW和C都是非常有用的工具,幾乎可以解決任何問(wèn)題: LabVIEW適用于高級測試、測量和控制應用,而C更容易實(shí)現低級計算密集型任務(wù)。
若再有人問(wèn)起LabVIEW好還是C語(yǔ)言好,您就回答一切皆有可能。 這也許是將問(wèn)題朝著(zhù)正確的方向引導的唯一途徑了。
進(jìn)一步了解LabVIEW與NI集成開(kāi)發(fā)環(huán)境,請訪(fǎng)問(wèn)ni.com/labview/zhs。