從LabVIEW到C++

來源:互聯網
上載者:User

標籤:語言   代碼   相同   其他   view   核心   優秀   管理   讀寫   

前言最近一段時間一直沒有更新,一方面是時間精力的問題(PS:懶癌犯了),另一方面是小黑大部分的時間都在學習C++相關知識,惡補了許多的知識(從大學C語言水平強制拔高了一段)。
本文談談自己近期的一些感受和感悟,算是對一段時間的總結和記錄。為什麼要去學習C++用LabVIEW好多年,在利用LabVIEW做開發,解決問題方面,深感LabVIEW的強大,但是為什麼還去學習另外一門語言呢?
事實上,隨著項目越來越大,LabVIEW中的一些限制會慢慢暴露出來。一方面,LabVIEW為我們做了很多封裝的工作,簡化我們的工作,但需要去接觸底層時,LabVIEW的便捷性反而限制了軟體的設計。另一方面,LabVIEW編程讓我們很容易的上手,卻也將軟體設計的很多核心概念屏蔽掉,讓我們在軟體設計思想上的深入變的非常困難
總結一下自己的問題和客戶的問題,發現LabVIEW在開發到不同的階段,普遍會遇到下述的問題。
1. LabVIEW寫出來的程式效率比較低效率問題我見過N多次,從學校畢業的學生,航天、汽車、電力等行業的客戶,很多人都遇到了相關的問題。羅列幾個常見的描述:
  • 訊號量特別多,介面重新整理特別慢
  • 功能全部都好使,但是控制周期不知道為什麼特別長
  • 程式越寫越大,也越寫越卡,卡到編程開發人員根本不知道原因在哪裡
  • 演算法的執行時間比想象中的長....

2.LabVIEW寫的程式拓展非常困難遇見很多客戶來諮詢,大部分的問題是程式添加一個功能非常困難,有的甚至可以說異常困難。
舉例兩個情境,我覺得肯定不陌生:案例一:編程經驗不足導致程式拓展困難公司招來幾個應屆生,開發一個新業務程式,不長時間開發的有模有樣,要介面有介面,要功能有功能。領導很開心,發現原先只能想一想的項目也能實現,迅速推出產品計劃,需求也源源不斷。
LabVIEW工程師賣力維護,程式越來越大,但添加一個功能的時間卻越來越長,添加到一段時間後,整個程式就是意大利麵條,無論是單個的代碼框圖還是整個的軟體架構全都混亂不堪.....案例二:頻繁換人,團隊風格不一致導致拓展困難公司讓一個老員工開發LabVIEW程式,老員工用過很多的程式設計語言,熟練也懂業務。開發程式一段時間後,程式迅速的跑起來了。
一段時間後,老員工休假,讓另外做LabVIEW相關開發的去接手這個項目,再過一段時間這個員工由於其他原因沒時間維護,再換一個人。
每次領導都認為LabVIEW開發程式比較簡單,一個人就可以搞定,當換了2次之後,程式已經難以維護,混亂的編程風格讓維護者不堪代碼修改的重負,整個項目處於半吊子狀態無法繼續。
這兩個案例不說人人都會遇到,但大部分LabVIEW工程師中都會存在這些問題,而且越是遇到問題的工程師,越認為LabVIEW編程非常簡單...這也是很多研究所,甚至好多小企業的通病。在項目中,如果沒有很好的開發風格和團隊管理,單槍匹馬不注重軟體品質的開發,只能讓軟體始終停留在勉強能用的階段。
3. LabVIEW有天花板,有需求實現不了
LabVIEW寫程式的問遇到的最多題是軟體能力的問題,這些問題是由LabVIEW高度封裝的特性導致,為了方便工程師使用,做出了很多反軟體工程的一些設計。
LabVIEW初衷為工程師降低語言依賴,關注核心業務,在快速原型和解決研發性質項目的時候,它可以讓我們加速項目進度,是研發的利器。
但隨著軟體功能的強大臨,測控軟體也面著所有軟體開發通用的問題,原型驗證與產品研發在需求和最終效果上都有很多的差別。那C++比LabVIEW好用嗎?既然你說這麼多LabVIEW的壞話,那C++好用嗎? 
答案非常遺憾,C++還不如LabVIEW好用,在解決問題方面,C++是LabVIEW萬分之一都不到。C++學習初期,大量的時間都在解決指標問題,文法問題,學習曲線很陡峭。即使你懂了一些基本文法,在解決問題上也很困難,還需要學習物件導向思想,泛型程式設計等一系列的概念,等所有內容學完出師,LabVIEW工程師都做完好多重專案了。
以我親身經曆而言,用慣LabVIEW再去學習C++反而更難入手,有一次,讀寫設定檔讀取的程式都花費了我1天的時間,而LabVIEW只要幾分鐘。
以前寫LabVIEW程式大家都努力做成Windows風格,而使用C++之後發現不是Windows風格好,而是VC++只能做成這樣子...做其他介面的代價太大...
以前寫LabVIEW多線程沒覺得有什麼難,而用C++去做,感覺就是難於上青天,線程之間的概念理解不清楚,還不如不用多線程。
很多優秀的軟體概念已經封裝到LabVIEW的基本文法,使用C++需要我們重新把理所當然的東西深入的學習一遍。

那你學C++幹嘛
雖然C++各種不便於工程。但,正所謂,尺有所短,寸有所長,不同的軟體工具在不同的地方各有優劣。C++雖然學習曲線陡升,但是在效率和設計思想上的書籍,非常豐富。長期的軟體工程思想都能在這裡找到影子。
我們能找到大量的資料探討,如何去使用指標,如何節約記憶體,如何避免複製。
我們可以通過C++可以擺脫很多低效的編程操作,如LabVIEW中大量的表徵圖設計和右鍵操作
我們可以實現相同的功能,開發的程式都在K層級,而LabVIEW至少要上M
當然,世界總是公平的,上帝為你關了一扇門,就會開一扇窗,仔細尋找不同工具之間帶給你的便利性,你會找到最適合自己的問題的解決方案。
後記後續小黑還會繼續充電C++,在陡峭學習曲線上攀爬。
記得很有意思的兩個段子對我感觸很深,分享給大家:1. LabVIEW硬體領域(硬體開發&測試)的工程師們,一般不懂軟體。所以,本來在硬體工程師眼中“寫程式這麼反人類的事情”。突然間,硬體工程師們發現,自己用LabVIEW居然可以編寫程式了。“哎,居然特麼實現了”“哎,程式跑起來了”“哎,我擦,出結果了”這種感覺真是太酷了,奏這樣!
2.C++C++跟其他語言有一點區別,就是早期你才剛學習一點點的時候,什麼靠譜的程式都寫不出來,等到你學的差不多了,突然就變的牛逼了





來自為知筆記(Wiz)

從LabVIEW到C++

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.