前言
最近一段時(shí)間一直沒(méi)有更新袁铐,一方面是時(shí)間精力的問(wèn)題(PS:懶癌犯了),另一方面是小黑大部分的時(shí)間都在學(xué)習(xí)C++相關(guān)知識(shí)横浑,惡補(bǔ)了許多的知識(shí)(從大學(xué)C語(yǔ)言水平強(qiáng)制拔高了一段)剔桨。
本文談?wù)勛约航诘囊恍└惺芎透形颍闶菍?duì)一段時(shí)間的總結(jié)和記錄徙融。
為什么要去學(xué)習(xí)C++
用LabVIEW好多年洒缀,在利用LabVIEW做開發(fā),解決問(wèn)題方面欺冀,深感LabVIEW的強(qiáng)大树绩,但是為什么還去學(xué)習(xí)另外一門語(yǔ)言呢?
事實(shí)上隐轩,隨著項(xiàng)目越來(lái)越大饺饭,LabVIEW中的一些限制會(huì)慢慢暴露出來(lái)。一方面龙助,LabVIEW為我們做了很多封裝的工作砰奕,簡(jiǎn)化我們的工作,但需要去接觸底層時(shí)提鸟,LabVIEW的便捷性反而限制了軟件的設(shè)計(jì)军援。另一方面,LabVIEW編程讓我們很容易的上手称勋,卻也將軟件設(shè)計(jì)的很多核心概念屏蔽掉胸哥,讓我們?cè)谲浖O(shè)計(jì)思想上的深入變的非常困難
總結(jié)一下自己的問(wèn)題和客戶的問(wèn)題,發(fā)現(xiàn)LabVIEW在開發(fā)到不同的階段赡鲜,普遍會(huì)遇到下述的問(wèn)題空厌。
1. LabVIEW寫出來(lái)的程序效率比較低
效率問(wèn)題我見過(guò)N多次,從學(xué)校畢業(yè)的學(xué)生银酬,航天嘲更、汽車、電力等行業(yè)的客戶揩瞪,很多人都遇到了相關(guān)的問(wèn)題赋朦。羅列幾個(gè)常見的描述:
- 信號(hào)量特別多,界面刷新特別慢
- 功能全部都好使,但是控制周期不知道為什么特別長(zhǎng)
- 程序越寫越大宠哄,也越寫越卡壹将,卡到編程開發(fā)者根本不知道原因在哪里
- 算法的執(zhí)行時(shí)間比想象中的長(zhǎng)....
2.LabVIEW寫的程序拓展非常困難
遇見很多客戶來(lái)咨詢,大部分的問(wèn)題是程序添加一個(gè)功能非常困難毛嫉,有的甚至可以說(shuō)異常困難诽俯。
舉例兩個(gè)場(chǎng)景,我覺(jué)得肯定不陌生:
案例一:編程經(jīng)驗(yàn)不足導(dǎo)致程序拓展困難
公司招來(lái)幾個(gè)應(yīng)屆生承粤,開發(fā)一個(gè)新業(yè)務(wù)程序暴区,不長(zhǎng)時(shí)間開發(fā)的有模有樣,要界面有界面密任,要功能有功能颜启。領(lǐng)> 導(dǎo)很開心,發(fā)現(xiàn)原先只能想一想的項(xiàng)目也能實(shí)現(xiàn)浪讳,迅速推出產(chǎn)品計(jì)劃缰盏,需求也源源不斷。
LabVIEW工程師賣力維護(hù)淹遵,程序越來(lái)越大口猜,但添加一個(gè)功能的時(shí)間卻越來(lái)越長(zhǎng),添加到一段時(shí)間后透揣,整個(gè)程序就是意大利面條济炎,無(wú)論是單個(gè)的代碼框圖還是整個(gè)的軟件架構(gòu)全都混亂不堪.....
案例二:頻繁換人,團(tuán)隊(duì)風(fēng)格不一致導(dǎo)致拓展困難
公司讓一個(gè)老員工開發(fā)LabVIEW程序辐真,老員工用過(guò)很多的編程語(yǔ)言须尚,熟練也懂業(yè)務(wù)。開發(fā)程序一段時(shí)間后侍咱,程序迅速的跑起來(lái)了耐床。
一段時(shí)間后,老員工休假楔脯,讓另外做LabVIEW相關(guān)開發(fā)的去接手這個(gè)項(xiàng)目撩轰,再過(guò)一段時(shí)間這個(gè)員工由于其他原因沒(méi)時(shí)間維護(hù),再換一個(gè)人昧廷。
每次領(lǐng)導(dǎo)都認(rèn)為L(zhǎng)abVIEW開發(fā)程序比較簡(jiǎn)單堪嫂,一個(gè)人就可以搞定,當(dāng)換了2次之后木柬,程序已經(jīng)難以維護(hù)皆串,混亂的編程風(fēng)格讓維護(hù)者不堪代碼修改的重負(fù),整個(gè)項(xiàng)目處于半吊子狀態(tài)無(wú)法繼續(xù)眉枕。
這兩個(gè)案例不說(shuō)人人都會(huì)遇到愚战,但大部分LabVIEW工程師中都會(huì)存在這些問(wèn)題娇唯,而且越是遇到問(wèn)題的工程師,越認(rèn)為L(zhǎng)abVIEW編程非常簡(jiǎn)單...這也是很多研究所寂玲,甚至好多小企業(yè)的通病。在項(xiàng)目中梗摇,如果沒(méi)有很好的開發(fā)風(fēng)格和團(tuán)隊(duì)管理拓哟,單槍匹馬不注重軟件質(zhì)量的開發(fā),只能讓軟件始終停留在勉強(qiáng)能用的階段伶授。
3. LabVIEW有天花板断序,有需求實(shí)現(xiàn)不了
LabVIEW寫程序的問(wèn)遇到的最多題是軟件能力的問(wèn)題,這些問(wèn)題是由LabVIEW高度封裝的特性導(dǎo)致糜烹,為了方便工程師使用违诗,做出了很多反軟件工程的一些設(shè)計(jì)。
LabVIEW初衷為工程師降低語(yǔ)言依賴疮蹦,關(guān)注核心業(yè)務(wù)诸迟,在快速原型和解決研發(fā)性質(zhì)項(xiàng)目的時(shí)候,它可以讓我們加速項(xiàng)目進(jìn)度愕乎,是研發(fā)的利器阵苇。
但隨著軟件功能的強(qiáng)大臨,測(cè)控軟件也面著所有軟件開發(fā)通用的問(wèn)題感论,原型驗(yàn)證與產(chǎn)品研發(fā)在需求和最終效果上都有很多的差別绅项。
那C++比LabVIEW好用嗎?
既然你說(shuō)這么多LabVIEW的壞話比肄,那C++好用嗎快耿?
答案非常遺憾,C++還不如LabVIEW好用芳绩,在解決問(wèn)題方面掀亥,C++是LabVIEW萬(wàn)分之一都不到。C++學(xué)習(xí)初期示括,大量的時(shí)間都在解決指針問(wèn)題铺浇,語(yǔ)法問(wèn)題,學(xué)習(xí)曲線很陡峭垛膝。即使你懂了一些基本語(yǔ)法鳍侣,在解決問(wèn)題上也很困難,還需要學(xué)習(xí)面向?qū)ο笏枷牒鹩担盒途幊痰纫幌盗械母拍钜芯郏人袃?nèi)容學(xué)完出師,LabVIEW工程師都做完好多個(gè)項(xiàng)目了凿可。
以我親身經(jīng)歷而言惑折,用慣LabVIEW再去學(xué)習(xí)C++反而更難入手授账,有一次,讀寫配置文件讀取的程序都花費(fèi)了我1天的時(shí)間惨驶,而LabVIEW只要幾分鐘白热。
以前寫LabVIEW程序大家都努力做成Windows風(fēng)格,而使用C++之后發(fā)現(xiàn)不是Windows風(fēng)格好粗卜,而是VC++只能做成這樣子...做其他界面的代價(jià)太大...
以前寫LabVIEW多線程沒(méi)覺(jué)得有什么難屋确,而用C++去做,感覺(jué)就是難于上青天续扔,線程之間的概念理解不清楚攻臀,還不如不用多線程。
很多優(yōu)秀的軟件概念已經(jīng)封裝到LabVIEW的基本語(yǔ)法纱昧,使用C++需要我們重新把理所當(dāng)然的東西深入的學(xué)習(xí)一遍刨啸。
那你學(xué)C++干嘛
雖然C++各種不便于工程。但识脆,正所謂设联,尺有所短,寸有所長(zhǎng)存璃,不同的軟件工具在不同的地方各有優(yōu)劣仑荐。C++雖然學(xué)習(xí)曲線陡升,但是在效率和設(shè)計(jì)思想上的書籍纵东,非常豐富粘招。長(zhǎng)期的軟件工程思想都能在這里找到影子。
我們能找到大量的資料探討偎球,如何去使用指針洒扎,如何節(jié)約內(nèi)存,如何避免復(fù)制衰絮。
我們可以通過(guò)C++可以擺脫很多低效的編程操作袍冷,如LabVIEW中大量的圖標(biāo)設(shè)計(jì)和右鍵操作
我們可以實(shí)現(xiàn)相同的功能,開發(fā)的程序都在K級(jí)別猫牡,而LabVIEW至少要上M
當(dāng)然胡诗,世界總是公平的,上帝為你關(guān)了一扇門淌友,就會(huì)開一扇窗煌恢,仔細(xì)尋找不同工具之間帶給你的便利性,你會(huì)找到最適合自己的解決問(wèn)題的方案震庭。
后記
后續(xù)小黑還會(huì)繼續(xù)充電C++瑰抵,在陡峭學(xué)習(xí)曲線上攀爬,寫文章可能會(huì)偏向于C++和一些碎片化的心得器联,共勉之二汛。
記得很有意思的兩個(gè)段子對(duì)我感觸很深婿崭,分享給大家:
1. LabVIEW
硬件領(lǐng)域(硬件開發(fā)&測(cè)試)的工程師們,一般不懂軟件肴颊。
所以氓栈,本來(lái)在硬件工程師眼中“寫程序這么反人類的事情”。
突然間婿着,硬件工程師們發(fā)現(xiàn)颤绕,自己用LabVIEW居然可以編寫程序了。
“哎祟身,居然特么實(shí)現(xiàn)了”
“哎,程序跑起來(lái)了”
“哎物独,我擦袜硫,出結(jié)果了”這種感覺(jué)真是太酷了,奏這樣挡篓!
2.C++
C++跟其他語(yǔ)言有一點(diǎn)區(qū)別婉陷,就是早期你才剛學(xué)習(xí)一點(diǎn)點(diǎn)的時(shí)候,什么靠譜的程序都寫不出來(lái)官研,等到你學(xué)的差不多了秽澳,突然就變的牛逼了