原文引用: 網址 http://www.ni.com/newsletter/51675/zht/
「為什麼 LabVIEW 比 C 語言好?」身為 LabVIEW 的產品經理,常常有人問我這個問題。
老實說,這個問題本身就有問題。但只要稍微修改一下,再加上充分的應用背景,就會變成有用的問題 (比如說:「就這些限制而言,LabVIEW 還是 C 比較適合這個情況?」)。如果不提供細節,這個問題就和「為什麼麵包比麵粉好?」沒什麼兩樣。
如果想要建置量測或控制系統,那麼 NI LabVIEW 系統設計軟體就會是理想的選擇,有助於避免風險、節省成本與人力,不必像使用 C 這類的初階語言來建置系統那麼麻煩。我並不是說相較於 C 語言,LabVIEW 是「比較好」的程式語言,更何況除了 G 以外,大部分的 LabVIEW 也會透過 C 和 C++ 撰寫而成。程式設計師必須了解兩者的優點,才能做出最佳決策。
LabVIEW 跟麵包有什麼關係?請繼續閱讀下文。
LabVIEW 和 C 之間的關係就像麵包和麵粉一樣。如果想要做一份三明治,就要有麵包;如果想要烤蛋糕,就要有麵粉。但如果要從頭開始用麵粉來製作麵包,不僅花錢,也非常浪費時間 (尤其是只想快點填飽肚子的情況下);但如果是蛋糕的話,麵粉就變得非常重要。一樣的道理,你可能會覺得很難選擇合適的程式語言。其實到頭來就只是要如何「物盡其用」而已。
C 提供初階控制功能
一般來說,C 比較適合資源有限、必須密切管理的應用項目。由於 C 是比較初階的語言,因此程式設計師不能放過任何一個小細節,例如記憶體指派與執行緒等。好的程式設計師會運用這種初階控制功能,減少高階實作項目的經常性成本。這時還可善用系統架構或主機作業系統的屬性,進而達到更出色的效能。
因此 NI 程式設計師都會選用 C 或 C++ 撰寫大部分的 LabVIEW 函式庫。LabVIEW 執行檔案 I/O 與分析等作業的速度就像 C 一樣快,因為這些作業項目以初階語言寫成,並且針對 LabVIEW 所支援的平台與作業系統經過優化。
效率 vs. 控制
就某方面而言,開發效率遠比手動優化程式碼來得重要。如果願意放棄一點控制功能,並且吸收前輩所遇過的類似經驗,就可以有效提高專案的生產力。程式語言會朝向更高階的抽象化穩定邁進。這樣可協助工程師專心解決眼前的問題,不必浪費時間在運算細節上面。
LabVIEW:適用於平行執行與實際 I/O
無論實作語言為何,高階系統設計與初階實作勢必要分開處理。
就量測與控制應用而言,程式設計只是系統設計師的其中一項工作而已。通常工程師不可能為了支援運算與量測硬體、作業系統等其中的改良技術與功能,而撥出時間熟悉舊軟體或重新撰寫舊軟體。他們會想辦法擷取、操作並顯示實際資料,進一步提升舊有軟體的價值,而不是找出新的方法來處理記憶體分配與執行緒集區。有了 LabVIEW,就可以運用 NI 的初階程式碼函式庫,根據這些經過測試/支援/維護的基礎工具來著手開發。如果選擇 C,就必須親手實作、支援、維護自己的初階函式庫,或是購買廠商的函式庫 (NI 也提供適用的 NI LabWindows ?/CVI 軟體與 NI Measurement Studio)。
而且 C 以語法為基礎,極適合以 CPU 可支援的最高速度來連續執行指令。這對純運算來說很方便,因為只要執行一項作業,而且指令也屬於基礎指令。另一方面來說,如果有平行執行多項作業與實際時序限制等需求,那麼 LabVIEW 的圖形化語法就會是理想的選擇。
LabVIEW 可略過基礎建置步驟,直接開始客制化。
LabVIEW 不只是程式語言和相關函式庫而已。如果使用 LabVIEW 整合式開發環境 (IDE) 搭配 NI 硬體,就可以享有更出色的加乘效應,遠超過不同工具湊合起來的效果。此軟體可搭配現有的硬體資源,還可透過下拉式功能表與專案項目來顯示可用的 I/O 通道與執行系統。編輯時即可防止或修正錯誤設定,進而避免代價高昂且難以除錯的執行階段錯誤 (Runtime Error)。新一代的量測硬體 (例如 NI PXIe-5644R 向量訊號收發器) 甚至還能讓 LabVIEW 重新定義硬體本身的韌體,其效能遠超過傳統的程式語言和儀器。
許多專案會超出預算或進度延後,就是因為專案團隊低估了整合不同資源所需的時間與心力。使用 LabVIEW 時,硬體驅動程式回傳的資料格式與分析函式庫所接收的資料格式相同,而且 UI 小工具顯示的技術資料格式也與分析函式庫所產生的格式相同,所以不必費心整合多項元件。
到底哪個比較好?LabVIEW 還是 C?
答案可能是「42」。在此引用《銀河便車指南》(The Hitchhiker’s Guide to the Galaxy) 這本科幻小說的概念:只有確實知道自己的問題或有待解決的困難是什麼,才會找到有意義的答案。LabVIEW 與 C 都是很實用的工具,如果交到熟練的使用者手上,幾乎可解決各種問題:LabVIEW 適合高階測試、量測、控制應用;C 適合密集運算作業的初階實作。
如果下次有人問你 LabVIEW 是不是比 C 好,你就回答「42」吧。這或許是唯一能引導至有效討論的回應。