Monday, June 6, 2011

刻板的電腦軟件

(轉載自CUP magazine 2011年6月號)


            最近有位多年沒見的朋友,刹有介事地問我可否替他找名程式編寫員(programmer),因為他設計了一個劃時代的電腦軟件,想找人替他寫。他不是IT從業員,炒樓發達退了休,閒時玩玩電腦而已。
            「什麼?」我一連串反問他:「找人寫program?你設計了個什麼電腦軟件?為什麼自己不寫?這是什麼時代呀?今天要找人寫的不是apps嗎?」
            他說這電腦軟件是商業秘密,自己懂寫program才不用找人寫啦!我再問他:「你認為不懂寫program也可以設計電腦軟件嗎?」他斬釘截鐵的答:「當然啦!因為architect不用自己起樓也可以劃則,不懂寫program為什麽不可以設計電腦軟件?」
            以上可說是一樁太美麗的誤會。我一方面慶賀這朋友退了休也一頭葱倒栽進電腦世界去,姑勿論他設計的電腦軟件是不是劃時代,我佩服他的野心;另一方面,他還是習慣沿用老闆的一貫行事思維,就是我有的是錢,也有「橋」,更不怕蝕,有什麽可以難到我?故此,以為只要重金禮聘一名或多名programmer,他的電腦軟件便會橫空出世。
            我給他打了個比喻。很多年前(那時PC剛面世),我找鐵版神數占卜,真神奇,師傅屈指一算我的時辰八字,問了我一些背景是否正確,之後便從他那本殘舊不堪的《鐵版神數》條文命書抽了一條出來,叫我到隔鄰鋪位花兩元影印一份才回去;我的流年他說得很準確,但批命批了什麼今天已不復記。但記得的是我問師傅,我可以用一台PC,把他的條文全儲進去,只要他把心中的運算程式告訴我,我可以programPC內,他要多少錢我也願意付。我的目的當然是想擁有一套鐵版神數軟件,怎樣解讀條文可以後加。他的反應當然是不相信我,便說天機不可洩漏來敷衍我算了。
            我以此為例向朋友解釋,那鐵版神數師傅是否就是他所指的電腦軟件設計師,只要找到一個像我的編寫程序員便可以寫到一套鐵板神數軟件,他說正是!
            我終於明白了。他口中的設計電腦軟件,其實是指任何人一想到一種方法或程序來解決某種問題,希望用電腦作為運算工具,只須找來一名程序員編寫便可以水到渠成,懂不懂編寫程式與設計電腦軟件無關。這想法有沒有錯?
            嚴格來說是沒錯的,因為一直以來,很多不懂編寫程式的老闆也喜歡吩咐他的電腦部員工,例如他每星期需要知道他的存貨值、公司應收未收的金額、負債額和一切最新的財務性比率等報告,電腦部怎樣工作他不管,反正他認為花了錢在電腦上就是替他解決問題。久而久之,若他的電腦部團隊辦事得力,老闆當了自己是軟件設計主腦人也不足為奇!所以老闆大多傾向神化電腦,而我的朋友就是用這種思維去肯定他也能設計軟件。
            而問題發生在什麽地方?就是我們先要懂得什麽是program,才知道什麽可以program,什麼不可以program。在宏觀層面上來說,program是把心中的flowchart用電腦語言去表達,電腦系統軟件例如compilerinterpreter 便把它們化為指令,令硬件執行一連串邏輯任務而已。所以program的根源是flowchart。而flowcharting說穿了只是把你想做的事細分化為很多基本步驟,一步也不能少。學寫program的第一課是關上電腦,拿起筆來,把自己想program什麽的flowchart劃在紙上(當然現今已有方便你畫flowchart的軟件,不用紙筆)。
            舉一個骯髒例子。如果我們要像日本人發明一個大解後會自動擦屁股的馬桶,flowchart是一、拿起新廁紙;二、對準目標;三、擦;四、看廁紙上的穢迹留下多少;五、滿不滿意?如不滿意,看廁紙還有沒有「淨土」?有,移位,回到二;沒有,回到一;如滿意,停,沖廁。這例子強調的是一個如此簡單的日常動作,如要flowchart起來一步也不能苟且才能保證還原一個潔淨的屁股,亦可見除了一個有效擦屁股軟件外還要很多技術配合包括電腦怎樣去「拿」、「對準」和「看」等等才能自動化。這再扯下去便涉及人工智能和機械人的領域去。
            生活上很多的動作的flowchart很複雜,可幸大部分正常人的腦經後天訓練經已攪掂,無需吹毛求疵;然而,如要達到某種學術上或商業上的應用目的,program一些物理性包括文字和數字等資訊,我們也需要flowchart。而 flowchart需要一個既定的pattern來開始,一些沒有pattern的現象我們怎去畫flowchart,沒flowchart哪怎去program?這便引伸至另一個更廣的命題:這世界有沒有pattern
            很多人認為世界上一切都有pattern。牛頓的三大力學定律計算出以前一些人類以前預測不到的現象,令到他們以為今天六合彩的結果也有pattern,只是第二個牛頓未出現,更反駁說這個世界存著一個巨大的pattern,只是我們接觸不到而已;但他們不知道近代的量子物理學、混沌學、熱力學第二定律和熵(Entropy)等研究,正一步一步揭開這雜亂無章世界的奥秘。令我相信我們看到的pattern只是世界極小部分,把不同的pattern加起來不會演變成一個更大的pattern,隨機(Randomness)可能才是宇宙的起源,亦是令人類滅亡的原因。
            我也不知道為什麽從我的朋友想找人替他寫電腦軟件可以說到宇宙的起源,可能對我來說電腦軟件太刻板,但同時令我心有不甘的是,我不能否認刻板的電腦軟件每天也主宰著我們刻板的生活規律和思維,我需要解放!不要告訴我你的電腦軟件有多劃時代,生活是program不到的。(完)