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