THE DAO OF PROGRAMMING ─ Geoffrey James

┌==================┐
│這篇是間接從小風那邊讀到的一篇文章,│
│                  │
│有慧根的人,應該不難看懂才對 ^___^│
└==================┘


第一部《寂靜虛無篇》

 大師如是說:『學會從程式抓蟲子之後,就可以畢業了』

1。1 節

.寂靜虛無中有奧秘,不動不靜,乃程式之源,吾無以名之,

 故稱之為程式設計之道。

.若道至大,則作業系統至大;若作業系統至大,編譯程式亦然;

 若編譯程式至大,則應用程式亦復如是,是故使用人大悅,世有和諧存焉。

1。2 節

.程式設計之道無遠弗屆,雖晨曦微風而返。

.道生機器語言,機器語言生組譯程式。

.組譯程式生編譯程式,於是萬餘語言存焉。

.各語言有其目的,均表達軟體之陰陽;其在道中亦各得其所。

.但若能避免,就不要用 COBOL 寫程式。

1。3 節

.太初有道,道生時空,故時空乃程式設計之陰陽。

.程式員不悟道則時空永不敷使用,悟道者恒有充份時空完成目標。

1。4 節

.上智程式員聞道而行之,中智程式員聞道而求之,下智程式員聞道而笑之。

.若無笑聲則無道矣。

.至高之聲難以聽聞。

.前進就是後退之路;大智總是晚成;每一個完美的程式仍有BUG。

.道在所有知識之外。


第二部《古之大師篇》

 大師如是說:『三日不寫程式則生命無趣。』

2。1 節

.古程式員神秘而深奧,無以度量其思維,僅能描述其表象。

.像狐狸涉水般地小心;像戰場老兵般地警覺;像未經琢磨的木頭般地璞拙;

 像洞中深潭地不透明。

.誰能指出他們心靈中的秘密?

.答案全在道中。

2。2 節

.大師Turing曾經夢到他是一部電腦,醒後道:

 『不知是我Turing作夢變成機器,還是一部機器作夢變成我我Turing。』

.一家大電腦公司的程式員參加軟體會議後,向他的經理報告說:
 『你知道其他電腦公司有什麼程式員嗎?他們不修邊幅,頭髮長而邋遢,

 衣服既舊且皺,他們破壞了氣氛,而且我簡報時老是製造噪音。』

.經理說:『我根本就不應該派你參加會議,這些程式員超然物外,

 他們把生命看成無稽,意外的結合。

 他們往來而無藩籬,為他們的程式而活,

 為什們他們一定要受社會積習的約束?

 他們生活在道中。』

2。3 節
.生手問大師:『有一個程式員從不設計,測試程式,寫作文獻,

 但了解他的人都認為他是世間最好的程式員。 為什麼?』

.大師曰:『這個程式員已充份悟道,他超越了設計的需要;

 系統垮了不會生氣,而無條件接受這個世界。

 他超越了文獻的需要,他不再計較是否有人看他的程式。

 他也超越了測試的需要,

 他的每一個程式都圓滿無缺,清澈,優雅,目的自明。』

.是的,他已悟道,登堂入室。


第三部《設計篇》

 大師說:『到測試程式時再回頭修改設計就太遲了。』

3。1 節

.曾經有人在參觀電腦展每天進門時都向警衛說:

 『我是的妙賊,偷東西的技巧已臻化境,

 先告訴你,我絕不會放過這次展覽。』

.這段話刺激到警衛,因為展覽場有好幾百萬元價值的儀器,所以老是盯這他,

 不過卻只看到這個人一個攤位接著一個攤位看,哼著小曲而已。

.這個人出門的時侯,警衛把他帶到一旁搜身,但卻找不到什麼。

.第二天這個人又來了,而且教訓警衛說:

 『昨天我收獲不錯,不過今天會更佳。』

 所以警衛就更加注意他了,但是仍然沒有結果。

.最後一天警衛終於忍不住好奇心,問那個人:

 『賊大師,我給您弄得寢食難安,您是否以教我,究竟偷了些什麼?』

.這個人笑笑,說:『我偷的是概念。』

3。2 節

.從前有一位大師專寫沒有結構化的程式,一個生手模仿他,

 也開始寫沒有結構化的程式。 當這位生手要求大師評量進展時,

 大師卻批評他寫作沒有結構化的程式。

.大師說:

 『對大師適用的不一定適合生手,在能超越結構化之前,必須先悟道。』

3。3 節

.某長官問程式員:『設計會計系統與作業系統,那一個比較簡單?』

.程式員說:『作業系統。』

.長官發出不相信的驚呼:『很顯然的,會計系統不如作業系統複雜』,他說。

.『不!』程式員回答,

 『在設計會計系統時,程式員是各種不同主意的人之間的橋樑,

 這些主意不外乎:系統要如何作業?報表型式如何?要如何迎合稅法?

 。。。等等。

 反過來,作業系統卻不受外界表象的限制;

 在設計作業系統時,程式員尋求人與機器間最純的和諧,

 這就是為什麼作業系統容易設計。』

.長官點頭微笑稱是:『但是那一個容易偵錯?』

.程式員沒有回答。

3。4 節

.經理去見大師,並且告訴他一套新應用程式文件的需求規格,問道:

 『如果我給你五個程式員,要多久才能設計好這個系統?』

.大師很快回答:『一年。』

.『但是我們需要馬上用這個系統!

 如果我給你十個程式員,那要多久?』經理說。

.大師皺眉說:『這要兩年。』

.『如果我給你一百個程式員呢?』

.大師聳聳肩:『這個系統根本作不出來了。』


第四部《寫作篇》

 大師如是說:

 『寫作良好的程式本身自成天堂,寫得差的程式本身就是地獄。』

4。1 節

.程式要輕靈,副程式像一串珍珠。程式的精神與意圖應始終如一,不多不少;

 沒有多餘的迴圈,也沒有額外的變數,既不缺少結構,也不過份笨重。

.程式應該追隨『最低驚訝定律』+,這是什麼?

.簡單得很,使用人對程式的反應是驚訝的機會要愈低愈好。

.程式不管再複雜,應該以一個整體來作用;

 他應該用內部邏輯,而不是外在的表象來指導作業。

.如果程式不滿足這些要求,就會雜亂而易生混淆,唯一的補救就是重新寫過。

4。2 節

.生手問大師:『我有一個程式,有時侯作得很好,有時侯卻不行;

 我一直遵行程式設計的規律,但是卻把我弄得很困擾,其理安在?』

.大師答曰:

 『因為不悟道才會如此,只有笨蛋才會期望他的同儕有合理的行為,

 而你卻對人類生產的機器有所期望?!

 計算機只模擬了決定論,只有道才十全十美。

 程式設計的準則還是暫時性的,只有道才會進入永恒。

 所以,你在開竅前要先思索道。』

.『但我要如何才能知道已經開竅了呢?』生手問。

.大師回答:『從此以後,你的程式都能正確執行。』

4。3 節

.大師對弟子說:『不論軟體之為大為小,道在所有軟體中。』

.『桌上型計算機有道嗎?』弟子問。

.『有!』大師答。

.『電動玩具程式中有道嗎?』弟子續問。

.『也有!』大師說。

.『那個人電腦的 DOS 中有道嗎?』

.大師咳一下,輕輕挪動了位置,『下課』,他說。

4。4 節

.皇太子的程式員正在寫作軟體,指尖在鍵盤上飛舞,

 程式順暢無誤的編譯完成,執行起來像陣微風輕拂而完美的結束。

.『了不起!』,太子嘆曰:『你的技巧無懈可擊。』

.『技巧?』程式員從終端機上轉過頭說,

 『我所信從的是道,道超越任何技巧!

 我開始學寫程式時,在我眼前所見是混成一片的程式;

 三年後,不再見到這一大片程式了,我學會使用副程式;

 現在,眼前一片空靈,什麼都沒有了,所有東西都進入無型式的一片靜寂;

 所有感覺都不必作用。

.我的精神可以依直覺而不必依任何計劃行事,

 換言之,我的程式自己寫作自己。

 當然,有時會有困難的問題;我看著他們到來,

 我降低自已的速度,靜靜的看,

 改一列程式之後困難就會煙消雲散;我再重新靜靜坐著欣賞工作的歡樂。

 我閉上雙眼一會兒,然後關機。』

.皇太子說:『我的所有程式員都那麼聰明睿智嗎?』


第五部《維護篇》

 大師如是說:『雖然程式只有三列,但總有一天需要維護。』

5。1 節

.常用的門不必上油。

.急流不會淤塞。

.聲音與思想不能在真空中傳遞。

.不用的軟體會生鏽。

.這就是至大的奧秘。

5。2 節

.經理問程式員究竟要多久才能把手上的程式寫完。v
 『明天』,程式員很快的回答。

.經理說:『我想你不太踏實;真的要多久?』

.程式員想了一會兒:

 『我希望在程式中加上一些東西,這至少要兩週。』程式員終於說

.『時間還是短了一些』,經理堅持說:

 『如果你能簡單的告訴我什麼時後能寫完我才會滿意。』

.程式員同意這一點。

.幾年後經理退休了,在歡送餐會上發現那個程式員伏在終端機上睡著了,

 因為他寫程式寫了整夜。

5。3 節

.一個生手被分派去寫一個單純的財務軟體。

.這個生手狂熱地工做了幾天,但是當大師看他的成品時,卻發現這個程式中包

 含一個螢光幕編修程式,一組一般性的繪圖程式,

 一個人工智慧界面,但卻沒有什麼與財務方面有關。

.大師就問他,這個生手卻變得很激動:『不要那麼沒耐心』,他說,

 『我最終會把財務部份加上去。』

5。4 節

.好農夫會忽視他種的穀子嗎?

.好老師會忽略他最差的學生嗎?

.好父親會容許他的孩子挨餓嗎?

.好程式員會拒絕維護自己的程式嗎?


第六部《管理篇》

 大師如是說:『程式員要多,經理要少,生產力就會增加。』

6。1 節

.經理有開不完的會的話,程式員就會寫電玩;主計部門想到利潤,發展經費

 就會被刪減;高級科學家談到藍藍青天,那麼青天一定會有浮雲飛過。

.當然,這不是程式設計之道。

.當經理許下承諾,程式員就不理會電玩;當主計部門有長程規劃,就會回復

 和諧與秩序;當高級科學家處理手上的問題,問題很快就會解決。

.這才是程式設計之道。

6。2 節

.為什麼程式員沒有生產力?因為他們的時間都花在開會上頭。

.為什麼程式員難以駕御?因為管理階層干預太多。

.為什麼程式員一個接一個辭職?因為他們精力耗光了。

.在不良管理下工作,程式員不會覺得他的工作有價值。

6。3 節

.某個經理快被炒魷魚了,

 但是他底下的一個程式員寫了一個叫好又叫座的程式;

 當然,這位經理因而保住了飯碗。

.經理打算給這位程式員一點獎勵,但他拒絕接受,並且說:

 『因為我覺得這是個有趣的概念,才會寫這個程式,所以我不希望有獎勵。』

.經理聽了之後說:

 『這個程式員雖然職位不高,但卻充份了解做為一個職員的責任,

  讓我們把他升成崇高的管理顧問吧!』

.在告訴程式員時,他再度拒絕,說:

 『我之存在是因為可以寫程式,如果升了我,

 那除了浪費每一個人的時間外而成不了事。我可以走了嗎?我還得寫程式。』

6。4 節

.經理告訴程式員們說:

 『下面是你們的工作時間: 早上九點來上班,下午五點鐘下班。』

 所有程式員都很生氣,有幾個馬上辭職。

.於是經理說:

 『好吧! 這樣好了,只要能夠如期完工,工作時間由你們自定。』程式員現

 在滿意了,每天中午開始工作,直到第二天早上。


第七部《公司智慧篇》

 大師如是說:『你可以對主管示範一個程式,但無法讓他通曉電腦。』

7。1 節

.生手問大師:

 『遙遠東方有一個叫“公司總部”的偉大樹狀結構,

 上面滿滿地標上了些副總裁,會計長等的圖案。

 它發出大量的備忘錄,每張上面都寫了“收文!”、“發文!”,

 沒有人知道是什麼意義。 每年都會把新的名字加到新的分枝上,但似乎全

 都徒勞無功。 為什麼這樣一個不自然的組織還能繼續存在?』

.大師回答說:『你已經體認到這個龐大的結構,而被它不合理的目的困擾。

 不過你能不從它無休止的迴旋而得到樂趣嗎?

 能夠不欣賞深藏在枝葉底端毫無困難的程式設計嗎?

 為什麼要被他的無用而困擾呢。』

7。2 節

.東方海上有大魚曰鯤,鯤能變成雙翼遮天的大鵬。

 當大鵬飛越陸地時帶來一道公司總部的訊息,

 這道訊息正好掉在一群程式員中央,然後大鵬折起雙翼乘風而歸。

.生手程式員瞪眼望著大鵬,因為他們不認得;

 中智程式員憂大鵬的來臨,因為他們害怕它帶來的訊息;

 只有大師才能繼續坐在終端機前工作,因為他不知大鵬的來去

7。3 節

.象牙塔的魔術師帶著他的最新發明去見大師,

 他推了一個大黑盒子走進大師的辦公室,

 大師正在靜靜的等著。

.『這是一套整合性,分散式,一般用途的工作站』,魔術師如是說,

 『還有一套專屬的作業系統,第六代語言,多項最先進的使用人界面,

 再加上人體工學的設計;這花了我的助手們好幾百人才造出來的,

 不是很了不起嗎?』

.大師抬了下眼珠子,『的確了不起。』大師說。

.魔術師繼續說:

 『公司總部已經下令每個人都要用這台工作站做發展新軟體的基石,

 您同意嗎?』

.『當然。』大師答道:『我馬上會把它放到資訊中心去。』

 於是魔術師高高興興的回到象牙塔去。

.幾天後,一個生手在大師的辦公室裡團團轉,說:『我找不到新程式的報表,

 您知道會在那兒嗎?』

.『當然』,大師答道,『報表就堆在資訊中心裡頭的基石上!』

7。4 節

.大師可以毫無憂慮的從這個程式轉入另一個程式,管理上的改變傷不到他;

 縱使計劃中止了,也不會被炒魷魚。 為什麼?因為他充滿了道。


第八部《硬體與軟體篇》

 大師如是說:『沒有風,草不會動,沒有軟體,硬體就是廢物。』

8。1 節

.生手問大師:

 『我知道一家電腦公司比其他的大得多,高高在上就像巨人之比侏儒;

 它的任一部都可以單獨成為一個企業。 為什麼會這樣?』

.大師回答:『你為什麼問這個笨問題?這家公司就是因為它大才會這麼大。

 如果它只知道硬體,沒有人會買它;如果只生產軟體,沒有人會用它;

 如果只維護系統,人家會把它看成修理員;

 但是因為他把所有的合在一起,人們就把它當神一樣看待了

.它根本無需競爭,因為贏來不費吹灰之力。』

8。2 節

.大師有一天經過一個生手旁邊,發現生手迷上一台手掌型的電玩,

 『對不起』,大師說,『我可以看看它嗎?』

.生手停下來,並且把這台機器交給大師。

 大師說:『我看到這台機器玩起來有三個層次:

 初級,中級,高級;不過這種機器通常都有另一個層次的說法,

 使機器贏不了人類,而人類也勝不了機器。』

.『啊!大師』,生手說:『這個奇妙的開關在那裡?』

.大師把機器摔到地上,用腳把它踏爛。

.突然地,生手開竅了。

8。3 節

.從前有一位微電腦的程式員對一位來拜訪他的大型電腦程式員說:『你看,

 在我這兒多好k我有我自己的作業系統與案儲存設備,我不必與任何人共用任

 何電腦資源;軟體本身自給自足,而且容易使用。

 為什麼你不辭掉目前的工作來加入我們?』

.於是大型電腦的程式員就對他的朋友解釋:

 『大型電腦就像古之聖哲般的穩穩座落在資訊中心中央,

 磁碟一個接一個蔚為奇觀,軟體像鑽石般地有多種面目,

 像古森林般的濃密茂盛。各個程式像一片急流般地湧入系統,

 而這就是我在那兒工作的樂趣.』

.聽了這段話之後,微電腦程式員靜默無聲;

 但是這兩個人卻結為好友,至死不渝。

8。4 節

.Hardware與Software走在路上,Software說:

 『你是陰我是陽,如果我們能一條心,一定會成大名賺大錢。』

 所以,他們就聯合在一起而想征服世界。

.走了一段路之後,碰到Firmware,穿得破破爛爛,拿著根柺杖,

 並且對他們說:

 『道在陰陽之外,寂靜不動如古井之不生波瀾;

 道不求名,故無人知曉其存在;

 道不逐利,因它圓滿無缺。道超乎時空之外。』

.Hardware和Software聽了之後倍感慚愧而打道回家。


第九部《尾聲》

 大師如是說:『這是下課的時候了!』

arrow
arrow
    全站熱搜

    Today 發表在 痞客邦 留言(7) 人氣()