鄉下老師
原文網址:http://blog.udn.com/yccsonar/170596901
列印日期:2022/05/20
AI與Python的超連結是胡說八道!
2021/11/25 08:31:28


我除了對於以機器學習為基底的所謂AI科技,高姿態地跨足(霸凌)影像辨識的領域很感冒之外,對於一提到AI就必須用Python語言這個現象也大為反感!因為真的毫無根據也沒有道理。如果你信了這個說法只會讓你的AI開發工作變得更困難!我不是隨便說說的,為了學習這個熱門語言,我花了大約兩個月將很厚的這本書幾乎逐頁的K完了!



我是個教過程式設計十幾年的資深教授,舉凡C#VBJavaSQLASPHTMLJavaScript我都教過,還寫過很多暢銷至今的電腦書,所以不要低估我對於學習與理解一個新程式語言的能力!另一方面,我目前也是以影像辨識為主業的軟體公司老闆,當下就是以實務AI產業維生的人!在此之前,公司甚麼軟體都作過,App、資料庫、語音廣播、櫃台管理系統、聲納資料處理程式,你想得到的軟體類別我們都作過。


簡單說,我不認為那些說AI必須使用Python的人,比我更有資格說研發製作AI軟體應該使用甚麼程式語言!我的說法是:甚麼語言都一樣可以做所有的AI研發!沒有一種語言是「不能」作AI的!用Python事實上還是一個很爛的選擇!比使用任何其他已經成熟的VBC#JavaC++甚至JavaScript都還糟糕!


Python對於AI程式設計來說,並沒有真正優於其他程式語言的DNA,就跟人類語言一樣,魔戒的作者在他的小說中發明了一種精靈語,很好玩有趣,但絕對不可能立即就優於歷史悠久的英語、法語或中文的!Python是商業炒作出來的神話,你信了只會破財傷神而已。一個還很「原始」的程式語言,會在幾年內就超越已經發展升級擴充幾十年的所有成熟程式語言?你信了你就是笨蛋!


程式語言就是人用來與電腦溝通的語言,是將我們的想法實作為有效軟體的一個媒介,越能夠有效快速準確完成這個工作的語言,就是較好的程式語言。在視窗時代VBC語言一開始分開演化,C的函式庫與Windows作業系統共用,VB則是間接使用,所以執行速度較慢,功能也受到較多限制,所以大家就說CVB好?其實這跟語言好壞根本無關!只是C語言跟政府(作業系統)關係比較好,可以走後門而已!


但是到了.NET時代,兩者的函式庫統一了!所有VB程式都跟C語言,甚至C++一樣快了,卻沒人替VB翻案講句公道話?其實VB的優勢是語言編寫環境很友善,容錯率較高,寫程式很輕鬆,就可以很專注在希望實現的程式邏輯上。相對的,C語言規矩太多,以括號而非文字界定程式區塊的方式讓一般人很難閱讀。當兩者執行效率變成一樣時,應該是VB可以淘汰C的!


但是大家都知道,幾十年來所有資訊科技專業的領域,都是將C語言當作英語一樣使用也膜拜的!C語言再難用,都還是維持住了主流程式語言的地位!要讓大家承認錯誤,說法文或中文比英文好?國際通用語言改成法文或中文?這太難了!要說成是語言歧視都可以!C是美國的白人,VB就是永世不得翻身的黑人或亞裔!


這個矛盾到了AI演算法需求興起時就被放大了!C語言真的非常不適合寫複雜的演算法邏輯,光是那些重重疊疊的大括號造成太多的程式碼行數,就讓人很難一眼看清整體邏輯,更深層的邏輯就寫不下去了!還動不動就警告你資料格式不對,光是寫那些「必要」的資料型態轉換程式,就讓設計者渾然忘了剛剛在想甚麼演算法了!資料型態轉換真的有必要嗎?VB、JavaScript,甚至Python都不必管那些鳥事,不也活得好好的?


如果你真的跟我一樣老,學過VB也學過Python,你就會知道,Python所以能橫空出世的原因是它跟VB一樣友善!這正好是C語言最大的缺點!現在的主流派只是因為實在無法繼續忍受C語言開發AI程式的困擾,找到Python來解套的!並不是Python夾帶了更多的「智慧」,其實完全沒有,只是更原始更粗糙的VB而已!


這和手機App興起之後JavaScript變得很紅有點像,JavaScript語言也是很簡陋粗糙難用的語言,但是因為可以在跨平台的網頁語言HTML中使用,而其他較佳的語言反而無法與HTML一起運作,就有很多人努力給JavaScript加值進化,如HTML5與jQuery之類的,讓它可以做更多事情。


Python目前的「優勢」也是這樣,因為C實在很難開發複雜邏輯的AI程式,大家急於找到一個替代語言,資訊領域沒有人願意面對當初否定VB的錯誤決策,明明可以直接回頭使用VB來解套,可以用來開發複雜的AI邏輯,又可以直接使用VB已經發展數十年的軟體製作周邊資源,但他們就是覆水難收,不惜讓整個AI產業進度拖慢也要等待支持Python成長!其實像我一樣用VB設計研發到封裝產品去賣,就甚麼問題都沒有了!他們都知道,但是拉不下這個臉認錯。


大家可以去學學Python就會知道我所言不虛,傳統的VBC#Java要將程式封裝成軟體去賣是很簡單的事情,但是Python完全不是這樣!不然你就試試看寫一個Python版的小畫家,作成安裝檔讓你的小孩去玩!保證會讓你作到吐血!Python甚至還不是一個視窗程式?我們作軟體生意不能(也不必)這樣無謂地等待個十年八年,等到PythonC#VB一樣成熟的!笨死了,會倒店的!


前面說到這是商業炒作,我自己就是電腦書的作者,還有十幾年各種程式語言的教學經驗,我知道的!任何人初學一種程式語言都會很辛苦,想靠新語言賺錢的人,如果可以製造某種語言的神話,讓夠多的初學者「以為」用Python作AI有優勢?一開始就學Python,上當的人根本沒有舊經驗可以作比較,完全不知道這個語言其實很難用,但想到初學的痛苦,以後都會很不願意換其他語言,那Python就算成功攻佔灘頭堡,有一群死忠顧客了!


簡單說,要成為一個可以製作出商用軟體的AI產業的演算法設計師,如果你用Python其實會非常痛苦!程式本身設計環境支援遠不如VB或C#,要找相似的程式範例資源也遠不如其他成熟的語言。而且Python設計出來的程式是又笨重跑起來也很慢的!你知道嗎?如果你還是堅持要用Python開發你的AI產品?辛苦了!祝你寫的程式賣得出去!