穿越馬路

 

接觸程式設計兩年了,如果你覺得自己有一些心得的話,看到要求應該能夠一步一步地轉為程式,然後一定可以一步一步地幫你的程式除錯,也許你會讓『走地下道』這個想法自然地取代『穿越馬路』這個想法

如果你體會到物件導向的設計方法讓你設計的軟體有比較好的擴充性維護性,你會發現需要強制自己遵循封裝的規範(還有其它的設計規範, 比如說 DRY, SOLID, ...),這些規範編譯器不會強迫你遵循,不遵守的時候雖然安全性降低,但是也不會立即發生不好的事情,可是你在小地方犧牲一下,會換來更大的好處『走地下道』讓人車分道其實也是個在海大資工生活中不錯的規範,好的軟體工程師其實是會接受有道理的規範的,『穿越馬路』這個想法自然地消失了

 

這是系館前面風和日麗的北寧路

也不知道學校為什麼把電資學院這邊正對著貴族和 OK 的矮牆拆了 (以前曾經是高牆,後來變成矮牆,後來就變成現在的樣子了), 和社區融為一片吧, 不曉得你在看上面這張圖的時候是不是也看到了下面這張圖裡面隱隱若現的橘色虛線?

不太清楚齁,朦朦朧朧才誘人吧! 這是你會選擇的路線嗎? 時間很趕的時候走的? 悠閒時走的? 一群人嘻嘻笑笑時走的? 沒有車的時候走的? 車子來來往往的時候展現敏捷性時用的? 還是怕不走被同學會笑所以才走的?

馬路上總是有車輛慢慢地走,沒有效率地運用馬路,既然每天都這樣穿來穿去了,這個車又開那麼慢,自己又要趕著上課,何不先跑過去吧?

會不會有這種狀況發生呢? 剛才不是都看好沒有車了嗎? 怪了,哪裡來的? 沒有退路啦,小黃又是給他時速 100 這樣.... 他沒有守交通規則吧! 應該是,右側超車顯然違反道路交通管理處罰條例第47條第1項第3款,罰他,罰他,罰他,可是如果你就在這兩台車前面,罰他有意義嗎?

這應該是意外吧! 這根本是意想不到的啊,沒有那麼常發生吧!

你在寫程式的時候,對於每一列敘述應該都會假設執行時會有什麼效果的,一旦有一個假設錯了,你的程式執行起來就不會如你所想像的,就會發生錯誤,這些假設在撰寫程式的時候其實都覺得是一定是對的,但是事實就不是這樣,否則你的程式都應該是一寫完就是對的,你所做的假設錯了當然是意料之外的狀況,只是你在寫程式的時候會發現意外狀況還真多,墨菲定律還真準。通常在除錯時怎麼看都看不到錯誤,怎麼想都沒有辦法想到原來某一個敘述不是那樣子運作的,這都是意外啊,所以你常寫程式,你就會知道不要假設意外狀況不會發生。

那現實生活裡呢? 不要再賭意外不會發生吧,你的運氣真的那麼好的話,為什麼不去買個樂透呢? 何必把好運浪費在過馬路這種小事?

這這這,怎麼會這樣? 有這麼多意外? 你看過你自己寫的程式就知道意外永遠不嫌多?

這些開車的人也太不守規矩了吧? 不曉得要開在馬路右邊嗎? 不曉得雙黃線不能超車嗎? 是啦,他們真是糟糕,可是你能不能不要給這些人犯錯的機會呢? 如果這樣穿越馬路,其實也是違規,也沒有好到哪裡去,駕駛看到你出現在馬路上,也是當場飆三寶兩個字而已啊,不會覺得雙黃線超車有什麼錯啊? 氣到,到底誰才是三寶啊? 不過行人是弱勢,這年頭弱勢有比較好嗎? 只能說和你一樣沒有耐心等這班公車慢慢走的人還真多啊!

上面寫的,絕對不是要教你怎樣安全地穿越馬路,不管白天晚上晴天雨天,要跟車子搶路,『安全』是在你的選擇下犧牲掉的,如果人車分流該有多好?

不曉得你有沒有自己開車的經驗,你知道在開一段時間以後駕駛疲勞的程度有多高嗎?

這應該不會很難體會,想想上課的情況就知道了,

想想把書拿起來要讀的時候就知道了, XD

北寧路是台二號公路由蘇澳過來 108 公里的終點,開車的人甚至可能是從花東上來的...

又累、又精神不濟,不是說好馬路是給車子走的嗎? 看到這些路上閒逛的鳥真的傻眼

Blue Jay bird walking on the road

這是一種很喜歡在馬路上閒逛的鳥? 台灣看不到 (因為小黃比較多R物競天擇哪有生存空間,ㄜ,不是啦這是一種分佈在北美洲很美麗很有氣質的鳥),你也想在馬路上逛逛創造台灣最美麗的風景齁

你覺得那些車子都是停著的嗎? 這種狀況是顯示時間很重要還是大家很沒有水準呢?

不要吧,提早三分鐘出來,走個地下道,水準自然就出來了

寫軟體的人想要靠這行吃飯,不會讓自己的程式裡處處有危機,會在各個地方設下安全的檢查點,有點像是走鋼索時的安全網,也會由最基礎的地方就開始建立比較不會出錯的習慣,很多習慣久了以後甚至不見得講得出原因,但是就是會遵守,因為不遵守帶來的破壞性有可能很大,因為一層一層的防護,所以寫出來的系統不是玩具,可以禁得起很多的考驗。

有些習慣一開始要你遵守的時候,你會覺得這樣子做笨笨的,你會舉出不這樣子做的優點 (程式得到的答案都一樣,比較快得到答案,程式的生命週期很短,提供軟硬體升級的動機, 提昇消費力道促進經濟發展, 開發的人常常都不是維護的人,我寫的何必讓別人看得懂,...),想盡辦法解釋自己不那樣子做的原因;很多時候這些理由都是很聰明的人才會想到的,有人戲稱中國人太聰明了,所以寫的程式碼別人很難看得懂,印度人寫軟體比較中規中矩,所以程式碼看起來笨笨的,可是印度的軟體外包業早在 2012 就已吃下超過全球 60% 的市場,為什麼???

呵呵,希望這份文件有傳達一些你沒有想過的觀點!!

C++ 物件導向程式設計課程 首頁

製作日期: 06/12/2017 by 丁培毅 (Pei-yih Ting)
E-mail: pyting@mail.ntou.edu.tw TEL: 02 24622192x6615
海洋大學 電機資訊學院 資訊工程學系 Lagoon