網路城邦
上一篇 回創作列表 下一篇  字體:
我寫程式到六十歲才真的用到物件導向,你急甚麼?
2023/01/20 05:17:35瀏覽1896|回應0|推薦9

我是個半路出家的電腦人,不是資訊相關科系,此生唯一上過的電腦課是兩學分的大四Fortran語言選修課!40歲才從業餘玩家的身分,靠著專長不符的海洋博士學位,硬擠進大學電腦教師的行列,現在以電腦為業20多年了!我的所有資訊專業知識技術都是自己讀書、練習與上網摸索出來的!

回想起來讓我最痛苦的部分是:會寫程式的人多半很聰明,也非常樂於賣弄自己的聰明!所以非常多其實很簡單,或是不急於一定要馬上學會的概念或技術,都會被誇大渲染到好像你不懂或不會,你就完蛋了?絕對無法走上專業之路了?即使你真的能寫出很好用的程式,也會被暗示只是外行玩家?難登大雅之堂?

資訊領域和我之前熟悉的物理、海洋或地質等傳統科學最大的不同之處,是傳統科學是研究明確存在的真實世界,但資訊科技基本上是一個虛擬的空中樓閣!任何技術理論只是幫助我們盡快寫出可以實用的程式,隨時可以整個打掉重練的!不像F=MA的公式,你可以比信教還虔誠地相信它,它絕對不會變的!

因為我是受過完整傳統科學訓練的海洋博士,所以很容易被誤導迷惑,以為資訊領域的東西也是物理公式?譬如物件導向(Object-oriented programming,縮寫:OOP)就是曾經困擾我很多年的一個問題!每一本電腦書每一個專家都把這個說得很嚴重?非懂不可!這情況好像我近年常批評的:不會ML的人就不能做AI?有這麼嚴重嗎?

那些強調OOP的書上舉的例子與一大堆抽象名詞我都似懂非懂?甚麼叫繼承?委派?看得莫名其妙?我那時已經寫了好多實用的程式,從來沒感覺我需要它們(OOP)?需要「物件」嗎?從工具箱找個合用的拷貝一下就有了!屬性、事件與方法都很直覺好用,我管它們是怎麼作出來的?難道我不會手工做出一輛汽車,就沒資格開車了嗎?考駕照有必要考怎麼製造引擎嗎?

還好我大部分的教學生涯也不是教那些台清交成的資優生,不太懂的抽象理論就簡單講講相關實例就混過去了!學生學得輕鬆,該會寫的程式也都會寫!一個一個都蹦蹦跳跳畢業就業去了!我那些不強調理論,完全不想嚇人的電腦書,市場上也賣得嚇嚇叫,還歷久不衰!我不是否定那些資訊理論,只是覺得它們沒有這麼重要!還沒真的需要用到時急甚麼?

大概在十多年前,我開始寫複雜的聲納資料處理軟體時,我開始用到一些半套的物件導向技術,就是任何一筆聲納資料的內容都好複雜,有經緯度、溫度、壓力、音訊強度陣列等等!把它們當作一個靜態的「物件」來統整,就容易處理多了!也算是一種封裝資料的概念!

又經過了十多年,寫到如上的貨櫃裝載規劃程式,才真的讓我連委派等等奇怪少用的技術都真的必須實作了!如上圖中看到的一大堆貨物圖形,甚至每一個貨櫃資料佔據的標籤頁面,都是我用程式碼「創造」出來的物件!這些物件不僅有外型,還有屬性、方法、事件等等!都不是來自工具箱的物件複製修改的!但是它們被滑鼠點擊時都會有動作反應(觸發事件)的!

但我真的不想賣弄知識,老氣橫秋地跟晚輩初學者說:「物件導向」是如何如何重要?因為那就像是跟小學生解釋微積分如何重要一樣無聊!微積分當然很重要!如果你讀到大學,讀到理工專業,遲早一定要會的!但是人家還在快樂度童年時,你就急著說這個?會不會太無聊?太故意嚇人?太倒胃口啊?

還好!二三十年前的程式教育風貌,到現在已經改變很多了!以前那些討厭的電腦專家好像唯恐他們的專業太簡單,深怕人家不夠尊敬他們?就是不怕學生讀者看不懂!嚇唬初學者不遺餘力!但是其實任何複雜的知識技術理論,時候到了,你真的需要用到時都是很容易被理解使用的

反之,根本沒需求沒用過沒看過的東西,你硬要教會學生?那就會讓聽者覺得是天書了!很像跟古人在古代環境解釋手機是甚麼?還說不懂手機你就完蛋了?聽者當然不懂!但是讓古人到現代世界生活一兩個月,一定就會用手機用得跟一般人一樣好了!

現在的程式語言已經推廣到小學程度了,深怕小孩子會怕太難不肯學,當然不會一開始就拿這些理論嚇人了!這也支持了我寫那麼多電腦程式書的理念!就是資訊領域的理論沒那麼重要他們通常只是事後諸葛,真正重要的是達到程式使用的目的

反正絕對沒有不懂物件導向你就無法寫出好程式的這種事!那是嚇唬人的說法。只要認真思考掌握常識邏輯,熟悉寫程式的基本環境特性就夠了!即使你完全不學物件導向,在實際經驗需求下,你寫的程式也會越來越物件導向的!

( 心情隨筆工作職場 )
回應 推薦文章 列印 加入我的文摘
上一篇 回創作列表 下一篇

引用
引用網址:https://classic-blog.udn.com/article/trackback.jsp?uid=yccsonar&aid=178116897