在軟件開(kāi)發(fā)中,不同的編程語(yǔ)言往往會(huì)對(duì)特定類型的軟件開(kāi)發(fā)帶來(lái)便利,本文以VB(VBA)、Python、C++、C#等幾種常見(jiàn)的編程語(yǔ)言為例,介紹其特點(diǎn)和適用的范圍。
個(gè)人興趣和工作的原因,寫(xiě)過(guò)一些計(jì)算機(jī)輔助設(shè)計(jì)、數(shù)值計(jì)算的軟件,有的軟件層層傳播,甚至有了可觀的用戶,一些無(wú)心插柳之作現(xiàn)在還會(huì)收到用戶的感謝。以我的體會(huì),現(xiàn)在的工程師熟悉一些程序開(kāi)發(fā)的基礎(chǔ)知識(shí),用來(lái)解決實(shí)際遇到的問(wèn)題,或是替代繁瑣的重復(fù)工作,或是借助計(jì)算機(jī)來(lái)得到精確解,是很有益的。
編程并非一個(gè)優(yōu)秀工程師必需的素質(zhì),但如能掌握,會(huì)讓你擁有一個(gè)強(qiáng)有力的手段來(lái)實(shí)現(xiàn)你的構(gòu)想,打開(kāi)另一面天地。對(duì)于我個(gè)人來(lái)說(shuō),編程讓我對(duì)工程的理解更加深刻,同時(shí),看到我的軟件改變他人的工作流程和習(xí)慣,那種喜悅和成就感是難以替代的。
初入工程軟件開(kāi)發(fā)的工程師往往會(huì)問(wèn),選哪種編程語(yǔ)言好?選一門語(yǔ)言重要嗎?
其實(shí)編程語(yǔ)言和我們平時(shí)用的自然語(yǔ)言一樣,從實(shí)用角度講,只是表達(dá)思想的一個(gè)載體,只要熟練掌握一種編程語(yǔ)言,你幾乎可以做任何事,就像用中文和英文都一樣能表達(dá)喜怒哀樂(lè)嘛。講個(gè)故事,有段時(shí)間我跟一個(gè)哥們兒經(jīng)常討論算法問(wèn)題,用的是山東話和英文,也一樣解決了很多問(wèn)題。
有點(diǎn)需要了解的是,有些編程語(yǔ)言可能特別擅長(zhǎng)做某種類型的軟件開(kāi)發(fā),比如有的特別適合寫(xiě)界面,或者有的對(duì)做圖軟件的接口做的特別好。如果能結(jié)合所開(kāi)發(fā)軟件的類型選擇編程語(yǔ)言,會(huì)有事半功倍的效果。
其中,VBA是內(nèi)嵌在office中的,如果你想在現(xiàn)有的文檔上加一個(gè)程序,利用VBA會(huì)很容易實(shí)現(xiàn),簡(jiǎn)單幾行代碼就可以操作Word的文字或者Excel中的單元格,你甚至可以利用“錄制宏”的功能,把鼠標(biāo)、鍵盤(pán)的操作錄制成代碼。
同時(shí),VB(VBA)可以很方便的調(diào)用AutoCAD的接口,在dwg文檔中畫(huà)圖、從文檔中讀取圖形修改、標(biāo)注、導(dǎo)出數(shù)據(jù)都很方便,接口也很成熟,支持的操作多,穩(wěn)定性好。
它的缺點(diǎn)有幾個(gè),首先,它是門相對(duì)落寞的語(yǔ)言,用的人越來(lái)越少,意味著如果遇到問(wèn)題你可能很難搜到答案,其次,實(shí)現(xiàn)復(fù)雜的功能比較難。
還有一個(gè)我不贊同的缺點(diǎn),有的人覺(jué)得VBA寫(xiě)的程序比較土,尤其是在一個(gè)Excel上加一個(gè)界面,不夠高大上,我倒覺(jué)得在Excel上加一個(gè)VBA插件對(duì)大多數(shù)工程軟件來(lái)說(shuō)是很好的選擇,因?yàn)镋xcel本身就提供了強(qiáng)大的功能,比如批量復(fù)制,寫(xiě)公式等,而且大多數(shù)工程師經(jīng)常使用Excel,很容易使用。至于外觀,畢竟不是我們的主要目的,功能更重要。
Python適用的范圍很廣,在工程領(lǐng)域,Python比較適合編寫(xiě)科學(xué)計(jì)算類的程序,如果你的程序中需要用到大量數(shù)值運(yùn)算,如果你想做一些優(yōu)化,更高端些來(lái)說(shuō),如果你要做機(jī)器學(xué)習(xí),那么Python的一些工具包會(huì)給你強(qiáng)大的支持,常見(jiàn)的有Numpy、TensorFlow等,我曾經(jīng)幫一位老先生推導(dǎo)動(dòng)力學(xué)的一些公式,基于公式他又用Fortran做了些數(shù)值計(jì)算,當(dāng)時(shí)我就想,用Python會(huì)更合適。
Python的缺點(diǎn)
第一,它對(duì)AutoCAD等一些工程軟件支持并不好,有些開(kāi)源的接口,往往是個(gè)人開(kāi)發(fā)的,功能和穩(wěn)定性有待驗(yàn)證,第二,工程師用的大多是Windows,需要的是exe文件,Python程序編譯成exe的過(guò)程不那么方便,有時(shí)編譯的文件很大,并且運(yùn)行速度慢,如果你想把自己寫(xiě)的軟件用exe的方式發(fā)給大家,它不是個(gè)很好的選擇。
如果你想更好的理解計(jì)算機(jī)世界,感受編程之美,建議你學(xué)習(xí)C++,它簡(jiǎn)潔而高效,貼近于數(shù)學(xué)和邏輯的本身,很多其他的編程語(yǔ)言都植根于此;它用途廣泛,從電飯煲到火箭都在使用C++代碼。
在工程領(lǐng)域,C++適合編寫(xiě)計(jì)算規(guī)模大、對(duì)性能要求高的程序,我曾經(jīng)用它寫(xiě)過(guò)一些計(jì)算類的軟件,后臺(tái)計(jì)算模塊用C++編寫(xiě),寫(xiě)來(lái)語(yǔ)義明確、邏輯清晰,計(jì)算效率高,界面用VB編寫(xiě),代碼量小,各取所長(zhǎng)。
C++是我最喜歡的語(yǔ)言,我想,它的優(yōu)點(diǎn)和缺點(diǎn)都是復(fù)雜和抽象吧,就像玩游戲,需要用到的鍵多了,操作起來(lái)自然就復(fù)雜了,但也更有樂(lè)趣,如果你想把某一類操作歸結(jié)成一類,也就抽象啦。
C#是微軟開(kāi)發(fā)的,它的構(gòu)想是成為一種簡(jiǎn)單、現(xiàn)代、通用,以及面向?qū)ο蟮某绦蛟O(shè)計(jì)語(yǔ)言,當(dāng)然直接的原因還是與Java抗衡。
如果你想對(duì)AutoCAD進(jìn)行二次開(kāi)發(fā),C#是首選的語(yǔ)言,它可以直接操作軟件的圖形數(shù)據(jù)庫(kù),執(zhí)行效率高,同時(shí),它建立在微軟 .Net 框架之上,屬于比較高級(jí)的開(kāi)發(fā)語(yǔ)言,學(xué)習(xí)起來(lái)比較簡(jiǎn)單。
工程行業(yè)Windows系統(tǒng)依然是主流,而你能看到的桌面應(yīng)用,看不到后臺(tái)服務(wù),可能是C#開(kāi)發(fā)的,所以它也適用于其他桌面軟件的開(kāi)發(fā)。
說(shuō)了那么多,我想會(huì)有兩類不同類型的開(kāi)發(fā)者。
如果你是拿來(lái)主義者,達(dá)到基本的解決問(wèn)題即可,你可以選擇VBA 和 Python,一個(gè)用來(lái)界面相關(guān)的軟件,一個(gè)解決數(shù)值問(wèn)題,足夠工程軟件開(kāi)發(fā)所用。
如果你有更高的目標(biāo),建議你再學(xué)習(xí)C++,它會(huì)讓你更懂計(jì)算機(jī)。