程式設計之道 3

2021-03-31 08:56:59 字數 4544 閱讀 6143

維護(mainteance)

掌握了道的程式設計師這樣說:

"即使乙個程式只有三行長,某天它也不得不被維護"

5.1

乙個正常使用的門不需要在折葉上加油.

乙個噴射出的激流不會產生停滯.

無論聲音還是思想都不能在真空中傳播.

軟體如果不用就會腐爛.

這裡有偉大的神秘.

注釋:這些都是自然現象,沒有任何的神秘可言.

5.2

乙個經理問乙個程式設計師需要多長時間來完成他正在工作的程式."我將在明天完成"程式設計師迅速回答.

"我想你太不認真了"經理說道,"說真的,需要多長時間?"

程式設計師想了一會兒,"我有一些新特性,我想加進去.這將會需要至少兩個星期."他最後說."這也超出了我的預料",經理堅持道:"我會滿意的,如果你簡單地告訴我什麼時候程式將會完成."

程式設計師同意了.

幾年過去了,經理退休了.在退休午餐時,他發現程式設計師在終端上睡著了.他整夜都在程式設計.

注釋:經理不相信程式設計師,這是乙個普遍問題.外行是不能夠正確領導內行的.

5.3

乙個初學程式設計師一次被分配給乙個簡單的財務軟體包編碼.

初學者瘋狂地工作了很多天,但當主管檢查他的程式時,他發現,它包含乙個編輯器,乙個概念化的圖形集,和人工智慧的介面,但是沒有任何財務的東西。

當主管談到這些時,初學者變得憤慨."不要這麼沒耐心,"他說,"我會在最後加進財務的東西."

注釋:程式設計師忘記了自己的真正目標,迷失在軟體開發的編碼之中.就象有時我們自己迷失在某項技術中一樣,忘記了技術是為人服務的.

5.4

乙個好的農夫會忽略他所種下的一顆莊稼嗎?

乙個好的教師會略過哪怕最下等的學生嗎?

乙個好的父親會容許乙個孩子挨餓嗎?

乙個好的程式設計師會拒絕維護他的**嗎?

注釋:不能.絕對不能.

管理(management)

掌握了道的程式設計師這樣說:

"讓程式設計師多而管理者少---這樣他們都會有效率"

6.1

當經理們舉行無盡的會議時,程式設計師寫遊戲.當會計們討論季度利潤時,開發預算將被銷減.當資深科學家談論藍天時,雲彩將要來臨.

確實,這不是程式設計之道。

當經理作出約束,寫遊戲的程式設計師被忽略.當會計做長期計畫時,協調和秩序將被恢復.當資深科學家注意道手頭的問題,問題將很快被解決.

確實,這才是程式設計之道。

6.2

程式設計師為什麼沒有效率?因為他們的時間被浪費在會議上。

程式設計師為什麼反抗?因為管理的干預太多。

程式設計師為什麼乙個接乙個地放棄?因為他們被累壞了。

在可憐的管理下工作,他們不再尊重工作。

6.3

乙個經理將要被解雇,但乙個為他工作的程式設計師發明了乙個新程式,它變得流行而且銷售很好.作為乙個結果,經理保住了他的工作.

經理試圖給這個程式設計師一些紅利,但程式設計師拒絕了,他說:"我寫那個程式因為我想它是乙個有趣的想法,所以我並不期望報答."

但是當談到這些,程式設計師再一次拒絕了,說道:"我存在所以我可以程式設計.如果我被提公升,我什麼都做不了,除了浪費別人時間.我可以走了嗎?我有乙個程式,我正在寫它."

注釋:真正的程式設計師並不是為了錢財,為了利益,為了權利而程式設計的.他們不求名利,所以可以專心致志來程式設計.凡事都需要用心來做,否則不可能有真正的成就.

6.4

所以經理說:"好吧,在這種情況下你們可以設定你們自己的工作時間,只要你們按照日程表來完成你們的專案."程式設計師現在滿意了,中午來到,工作到凌晨時分.

注釋:經理是為程式設計師好,提供乙個良好的工作習慣和生活習慣,程式設計師盲目的反抗表面上成功了,實際上使自己的生活陷入了無邊的無規律的生活之中,不經意中破壞了自己的生活.

****的智慧型(corporate wisdom)

掌握了道的程式設計師這樣說:

"你可以降乙個公司主管演示乙個程式,但你不能使他象計算機一樣思考."

注釋:人和計算機是兩種不同的東西,計算機尤其獨特的文化,不是計算機的專業人員往往難以理解這種獨特的文化.

7.1

乙個初學者問掌握了道的程式設計師:"在東方,有乙個巨大的樹狀結構,人們叫它總部.它被副總裁和會計所脹滿.它發出大量的備忘錄,每個都寫著"去,然後"或者"去,這裡",沒有人知道是什麼意思.每一年新的名字被加到樹枝中,但是所有的都沒有用處.這麼乙個不自然的實體怎麼會存在呢?

掌握了道的程式設計師回答道:"你發現了這個巨大的結構而且被它沒有合理的目的而困擾.難道你不能從它無盡的活動中得到享受嗎?你難道不喜歡在它隱藏的樹枝下享受沒有打擾的程式設計嗎?為什麼你要為它的沒有用處而打擾呢?"

注釋:每個人有自己關心的東西,不要去關心很自己沒有關係的事情.不是自己應該關心的問題,不要用它來打擾自己.

7.2

在東方,有乙隻鯊魚,它比所有其他魚都大.它變成了乙隻鳥,它的翅膀象雲彩一樣充滿了天空.當這個鳥穿越陸地時,它帶來乙個從總部的訊息.它把這個訊息掉到程式設計師中間,象乙隻海鷗在沙灘上做了個標記.鳥隨風上公升,藍天在它的背上,它回了家.

初學者程式設計師疑惑的盯著那只鳥,因為他明白它不是鳥.一般的程式設計師懼怕鳥的到來,因為他懼怕它的訊息.掌握了道的程式設計師繼續在終端上工作,因為他不知道鳥的來去.

7.3

象牙塔的魔法師帶著他最新的發明給掌握了道的程式設計師來檢查.魔法師將乙個大的黑盒子推進程式設計師的辦公室,程式設計師在安靜中等待.

"這是乙個整合的,分布式的,通用的工作站",魔法師開始了,"有效地設計,有乙個專用地作業系統,第六代語言,多種狀態的藝術人機介面.它花了我的助手幾百個人年來構建.它不是令人驚異嗎?"

掌握了道的程式設計師輕蔑地抬起了眉頭."它真的令人驚異."他說.

"總部已經命令了",魔術師繼續道,"每個人都使用這個工作站作為新的程式的平台.你同意這樣嗎?"

"當然",程式設計師回答,"我將立刻把它運到資料中心去!"魔法師返回到塔中,非常高興.

幾天後,乙個初學者走到程式設計師的辦公室說"我找不到我的新程式的列表了,你知道它可能在那裡嗎?"

"是的",程式設計師回答,"列表被堆放在資料中心的平台裡."

7.4

掌握了道的程式設計師從乙個程式轉到另乙個程式而沒有恐懼.沒有管理上的改變能傷害他.他不會被解雇,甚至當專案被取消時.為什麼是這樣呢?他被道所填滿.

硬體和軟體(hardware and software)

掌握了道的程式設計師這樣說:

沒有風,草不移動.

沒有軟體,硬體是無用的.

8.1

乙個初學者問掌握了道的程式設計師:"我發現一家計算機公司被其他所有的都大得多.它塔一樣壓在它的競爭對手上,象巨人在侏儒中一樣.任何乙個它的分支都可以包含乙個完整的企業.為什麼是這樣呢?"

程式設計師回答道,"為什麼你問如此愚蠢的問題呢?那個公司是大的因為它是那麼大.如果它只做硬體,沒有人會買它.如果它只維護系統,人們會象對待僕人一樣對待它.但是因為它組合了所有這些事情,人們認為它是眾神之一!不再試圖去奮鬥,它不用努力而征服."

注釋:有些事物是歷史形成的,不完全是由現實可以解釋的,如果考察其發展歷史,就會得到正確的解釋和結論,如果只考慮現在的狀況,就難免會感到迷惑.

8.2

一天乙個掌握了道的程式設計師遇到了乙個初學者程式設計師.掌握者注意道初學者在出神地玩手持計算機遊戲."對不起",他說,"我可以看一下它嗎?"

初學者脫離了注意力將裝置交給掌握了道的程式設計師."我看這個裝置聲稱有三個層次的玩法:容易,一般和難",程式設計師說道."可是每個這種裝置有另外一層的玩法,在那時裝置不試圖去征服人,也不被人所征服."

"請問,偉大的程式設計師",初學者懇求道,"怎樣乙個人尋找到這種神秘的設定呢?"

程式設計師將裝置掉到地上,在腳下壓碎.突然初學者受到啟發.

注釋:軟體開發的種種規則,種種方法,種種理論,都是可以被踩碎的.軟體和人應該和諧相處, 人不去想征服計算機,計算機也不想征服人.計算機是人的創造物,是人的工具而已.

8.3

有乙個程式設計師他在微處理器上工作."看我在這裡多好啊"他對乙個來訪問他的主機程式設計師說,"我有我自己的作業系統和檔案儲存裝置.我不必須和其他人共享資源.軟體是自包含的而且容易使用.你為什麼不退出你目前的工作而且加入我這裡呢?"

大機程式設計師於是開始向他的朋友描述他的系統,說道:"大機坐在那兒,象乙個古代的智者,在資料中心的內部進行沉思.他的磁碟裝置端端相連,象乙個巨大的機器海洋.軟體是多面的,象乙個鑽石,象遠古的叢林一樣令人費解.程式,每乙個都獨一無二,在系統中移動象快速流動的河流一樣.這就是為什麼我很滿意我所在的位置."

微機程式設計師聽完了這些,陷入了沉默.但這兩個程式設計師仍然是朋友,直到生命的盡頭.

8.4

硬體和軟體在去改變山的路上相遇了.軟體說,"你是陰我是陽.如果我們一起旅行,我們將變得有名而且掙大量的錢."這樣這一對起身動程,想著征服世界.一會兒,他們遇到了韌體,他穿著破舊的衣服,拄著一根荊棘的拐杖前進.韌體對他們說:"道超越了陰和陽.它是沉默的,而且靜止的,象一池水一樣.它不追求名聲,所以沒有人知道他的存在

.它不追求財富,因為它自已內部完整.它存在,超越了時間和空間."

軟體和硬體,羞愧地返回了他們的家.

注釋:這裡的軟體和硬體是比喻,比喻軟體廠家和硬體廠家,試圖用這技術作為手段來征服世界 .作者對此進行了諷刺。

收場白(epilogue)

掌握了道的程式設計師這樣說:

「你離開的時間到了.」

程式設計之道 1

目錄 book 1 the silent void book 2 the ancient masters book 3 design book 4 coding book 5 maintenance book 6 management book 7 corporate wisdom book 8 h...

隨想程式設計之道

程式是怎麼寫出來的呢?今天好像突然頓悟了。作為乙個dev,程式設計工作可以分為三類吧 new features,refactoring,fixing bugs.其實,每一次coding,都是首先考慮了use case或者叫做乙個個的workflow,然後,順著對應流程,順勢邏輯思考,很容易就寫出了程...

程式設計之道 繁體版

static 函式私有,在第一次引用函式時開闢記憶體,一直到程式結束都占用 satic令乙個用法,是定義靜態全域性變數和函式,標誌從這裡開始到本檔案結束時,下面的東西都看的見這個外部變數,但其他原始檔中函式就看不見這個外部變數 區域性變數 全域性變數 外部變數 同一類資料不同提法,作用域,儲存空間 ...