我的影像辨識事業做得不錯,完全自行研發的車牌辨識商品,早已廣泛被稅務、監理與警政單位採用,還因為抓贓車逃稅車的績效驚人頻頻登上媒體版面。在閱卷辨識技術開發市場也佔有重要地位,各式各樣不同目的的辨識專案研發就是我們的日常生活。
因為影像辨識是典型的高科技演算法研發,所以常被有資訊背景的客戶詢問我們是用甚麼語言開發的?C++?Java?還是最夯的Python?答案卻是「令人失望」的VB!我是個教了十幾年程式設計,教學內容涵蓋多種語言,還寫了好多電腦暢銷書的教授兼作者,但是當我開了軟體公司,專注研發影像辨識產品時,我只會選擇使用VB!我也只需要VB!
除非客戶要求技術轉移,要我交付原始碼,希望是他們比較容易接手的語言,我們才會將VB程式翻譯成C#、C++或Java,開發過程中完全不會使用其他語言,因為沒必要!VB各項功能資源充分夠用,語法容易寫複雜的程式,執行效能也跟其他常用語言如C#或C++寫的軟體一樣好,如果跟流行的Python比的話是速度更快!Python執行很慢,甚至是最慢!你知道嗎?
這可能讓大多數略懂,或自認很懂電腦語言的人感到懷疑迷惑?網路上,甚至學校老師,不都是說C語言效能最好?開發AI演算法一定要用Python嗎?VB根本是「早期」初學者用的簡陋語言,效能遠不如C語言,跟新的大神Python更是不能相比的好不好?
因為大家都這麼說,我以前也曾半信半疑,但是我只用VB開發演算法軟體,以此營業七年產品也行銷全台灣之後,我也找不到任何理由反對自己了!期間是有試過用其他語言如C#;C++與Java開發過部分產品,經驗都是非常不好!過程比VB辛苦,成果還更差!好像出國必須講英文,回到家可以講國語一樣,能回頭使用VB,我們都會覺得如釋重負。
反正不管外面說法如何,我是務實的工作者,我只是告訴各位我不同意外界流行的說法,我還是會以自己的經驗需求,選擇對我來說最佳的演算法開發語言!那就是唯一指名的VB!稍早有人說VB已被微軟放棄,以後不會再更新了?但是上面看到的網頁好像沒這回事?應該VB還是會與時俱進很多年!我們多數軟體怕與客戶較老舊的作業系統不相容,甚至只停留在2010年的VB版本,連較新版本的VB都不需要。
其實做演算法研發,就是依據目標現象研究數學方法,甚麼程式語言都可以完全精準的表達出任何數學運算,以此觀點根本沒有語言優劣的差別!執行效能方面,在微軟視窗作業系統之下,任何語言包括VB在內都是使用同一個.NET函式庫,執行速度是完全相同的!所以語言不同效能有差?也是胡說八道!
唯一與開發演算法好壞有關的語言特質,其實是「好不好寫?」就是能夠盡量「心想式成」,腦袋裡想到的演算法,可以很輕鬆快速地實現為程式碼,有如寫文章時可以下筆成章那樣!前面幾十年資訊領域的主流都是C語言,但是很不幸的!C是一個非常不友善很難寫的語言!
所以當開發AI演算法變成現在程式設計最主流重要的項目時,繼續堅持用傳統的C語言,不論是C++或C#寫起來都很卡,有如逼使一個說英語的人一定要用拉丁文或希臘文做長篇大論的演講一樣!就是在這種壓力之下,才造就了Python的橫空出世,它的優點其實只有一個:跟VB一樣好寫!
其他甚麼資源豐富?適合演算法開發?等等都是胡謅的屁話!像C#或VB這種成熟的語言周邊資源早就很多,也整合好了,隨時要引用外來資源也都很容易,是Python這種比較新的語言才需要特別多外在資源,也還沒充分整合好。能把新語言的缺點說成優點?我也只能驚嘆他們的推銷話術高超了!我就是以開發演算法維生,而且相當成功的業界人士,但是我怎麼看都看不出用Python比用VB好的理由?
事實上是資訊領域也未必都是聰明人,跟一般網路社群一樣,盲目跟著流行亂跑的人比較多,越多人用的語言未必表示越好,只是這些人能力有限也沒自信,必須群聚互享資源,多一點人就多一點安全感而已!但是演算法研發不像Web的世界,很多介面與通訊功能網路上都有,當然撿免費現成的程式碼來用就好,用組裝的方式開發就可以很快。即使用的模組程式片段不太洽當,也只是降低一點效率而已,多半不會完全死當不能跑,亂摳程式來用沒事的!
但影像辨識演算法開發的成敗關鍵在「對症與否」?並不是你有一個免費大藥房可以隨時抓取各種成藥亂吃,你就會比較容易成功的!你不懂,也無法掌握的程式資源其實毫無用處,不會幫你真正達到目的。演算法程式很像精密儀器,裡面如果任何一個零件不到位不精準,整個程式就算毀了!不是無法辨識,就是算得太慢,或辨識率低到無法接受!根本無法像Web專案一樣鬆散的組裝完成堪用軟體的!
反之,如果你會診斷病情,對症下藥,自己寫出對症準確的演算法即可,根本不需要那麼多外部程式資源的!所以我們這個以影像辨識為唯一專業的公司,我們的電腦裡面完全沒有OpenCV,沒有任何CNN、ML或DL的任何相關模組或軟體,即使我們也持續學習那些技術,我們的程式中也確實局部有用到這些技術的概念,但按照課本論文敘述的原理自己寫程式就好了!
我們並不需要去下載或買所謂的AI程式庫,安裝軟體,因為真的不需要!即使我們趕流行去買或下載了那些「資源」我們也不敢任意使用黑盒子程式模組的!因為我們就是做汽車的生產者,看不懂或不確定效能的零件,我們敢亂用嗎?我們自己就可以作精準的元件,何必冒險用別家的零件呢?
所以信不信由你!我們公司就是這樣過日子的!不依賴任何外界的影像辨識相關程式模組!我們是專作影像辨識的,而且做得非常好!我不用大家炒作盛傳很神奇的AI模組,這是我比較厲害?還是我落伍了呢?看產品效能見真章吧!我的產品就是很好!不服氣嗎?來咬我啊?
如果你也是像我們一樣使用VB的瀕危動物,我奉勸你不必太擔心,就繼續用!我估計十年後還是一樣能用好用,甚至會復甦變熱門!因為VB實在太適合開發演算法了!怕死的話就改用C#,你用VB開發的程式要遷移到C#非常容易,他們幾乎像雙胞胎,只是穿著不一樣。但是用C#就會回頭開始「享受」C語言的缺點,寫作必須兼顧的細節太多容易分心,我寫一樣功能的程式,用C#的疲勞度是VB的兩倍,即使我兩種語言都很熟!
這個世界就是會有很多愚蠢的事情,連資訊領域也一樣,還特別多!你我都管不了!所以別管別人怎麼說,你自己覺得方便好用,能作出好的軟體,能順利達到目的賣得出去,也確定可以在最通用的Windows作業系統上繼續運作就好了!我還需要在意VB是在全球程式語言使用率第幾名嗎?那些都跟我的工作無關的!