字體:小 中 大 | |
|
|
2010/12/24 15:29:21瀏覽3063|回應0|推薦0 | |
http://www.piece2ec.com.tw/news.asp?ID=112 (詳聞) 走進任何一家書店,你會看到如《7天自學爪哇語言》這類的書,擺了長長一排幾乎看不到盡頭。這些並排的書還有視窗作業系統、網際網路、視覺化培基語言等。有些甚至強調只要幾天甚至幾個小時。我在亞馬遜網路書店,以下列關鍵字,進行條件交叉的強力搜尋: 我找到了248個條件相符的結果。前78個是電腦書(排第79的是《30天學會孟加拉語》)。我把關鍵詞『天數』換成了『小時』,得到近似的結果;這次有253本,前77本是電腦書籍,第78本是《24小時自學文法與風格》。排名前200本書中,有96%是電腦書籍。 我得到的結論是,人們要不是急著想學會電腦,就是電腦太簡單了,比其他事物都要容易學得會。沒有一本書是要在幾天裏,就教會如何欣賞貝多芬或量子物理學,甚至是幫狗兒打扮。 讓我們分析像《三天學會巴斯卡語言》這樣書名想傳達什麼意旨: ◎學會 ◎巴斯卡語言 另一個可能的觀點是,你必須學會一點點巴斯卡語言(或是像視覺化培基語言、爪哇描述語言),因為你需要跟現成的工具配合,用它來完成特定的工作。不過這個時候,你可不是在學怎麼寫程式,而是要學會完成工作。 ◎三天
再看另一種類型的代表,披頭四樂團,他們似乎是在1964年的艾德˙蘇利文劇場表演,突然地成為熱門樂團首席。其實他們從1957年開始,就在利物浦、漢堡等地的小型俱樂部表演了。雖然他們很早就顯現強大的吸引力,但他們具決定性的成功作品《胡椒中士》也要到1967年才首次發行。山姆爾˙強森則認為十年根本不夠:「任何領域的卓越成就,只能用一生的努力才能取得;稍微低一點的代價是換不到的。」喬瑟抱怨說:「生命如此短促,學習技藝卻要這麼地長。」 以下是我在程式設計這個領域獲致成功的秘訣: ˙對程式設計感興趣,因為樂趣而寫程式。確信你自始至終都能樂在其中,這樣你才願意將十年光陰投入。 ◎與其他程式師交流;閱讀其他人的程式。這比任何書、任何訓練課程都來得重要。 ◎不斷地寫程式。最好的學習方式是做中學。更專業地說,「在特定領域的個人最高績效,並不是經驗夠久就會從天下掉下來;但若個人極具經驗,那麼可以透過有計劃的努力來改進並提昇這種層次的績效。」(第366頁) 而「最有效的學習需要,定義明確的任務,特定人則有其相應難度,能增進知識的回饋,還有重複及修正錯誤的機會。」(第20~21頁)《實踐中認知:心智、數學與日常生活的文化》是這個觀點的一本有趣參考書籍。 ◎如果你想,你可以去讀四年大學(或再讀研究所)。這是你找工作時所需的資格,同時也可讓你對這個領域有更深的認識。但如你不喜歡學校,你還是可以(得有犧牲)透過工作獲得類似的經驗。就任何情況來說,只從書本上學是不夠的。「電腦科學的教育無法讓人成為程式設計的專家,正如研究畫筆跟顏料,也不會讓人成為專業畫家。」艾瑞克˙雷蒙,《新駭客辭典》的作者這麼說。 我曾聘請最優秀的程式師之一,他只有高中畢業;但他寫出一堆很棒的軟體,還有他自己的新聞群組。毫無疑問的,股票選擇權讓他變得富有,他的財力令我難以企及。 ◎跟其他的程式師一起完成專案。在某些專案成為最佳的程式師;在某些專案中則變成最差的一個。當你是最佳的,你要測試自己領導專案的能力,並以你的真知灼見鼓勵他人。當你是最差的,你要學的是,高手做些什麼,還有他們不喜歡做什麼。(因為他們會叫你去幫他們做。) ◎接手別的程式師完成專案。全心投入並理解別人所寫的程式。當原作者已不在,看看在理解與修改時有什麼要注意的。想想如何設計程式,能讓後來維護的人容易上手。 ◎至少學會五、六種程式語言。其中一種要支援類別抽象的語言(如Java或C++),一種支援函數抽象(如Lisp或ML),一種支援語法抽象(如Lisp),一種支援宣告規格(如Prolog或C++樣板),一種支援並行常式(如Icon或Scheme),還有一種支援並行處理(如Sisal)。 ◎記住在『電腦科學』中包括電腦這個詞。要知道你的電腦執行一條指令需時多久,到記憶體中取一個字組需時多久(快取內有無資料的情形),到磁碟機讀取邏輯相連的字組需時多久,而磁碟的定位又需要多久。解答在此。 ◎參加語言標準化的工作。可以像是ANSI C++委員會,或由你自己的團隊,來決定你們的編碼風格,譬如說縮排是2或4個空格。兩者選一,你都能學到別人到底喜歡什麼,感受有多深,又或許只是稍微瞭解到他們為什麼有這樣的感覺。 ◎儘快從語言標準化工作中抽離,並具備良好的判斷力。 自從有了這些想法,我不禁要問究竟能從書上學到多少。在第一個孩子出生前,我讀完了所有的『怎樣…』的書,仍覺得自己是個一無所知的生手。30個月後,第二個孩子出世,我要重回這些書當個好的複習生嗎?不!相反的,我憑著自己的經驗,重拾自信;這些個人難得的經驗,比專家寫的幾千頁手冊還要有用。 佛雷德瑞克˙布魯克在他的論說文《沒有銀子彈》中指出,發掘卓越軟體設計者的三部曲: 這是假定某些人已具備成為卓越程式設計師的必要潛能;要做的工作只是誘導他們前進。艾倫˙柏立士說得更簡潔了。「你可以教任何人學雕塑,但對米開朗基羅而言,要教他的反倒是有那些事不要做。卓越的程式師也一樣。」 Java那些書儘管買吧!你或許能從中找到點兒用處。在未來可預見的日子裏,或許是24小時,幾天,甚至是幾個月吧!你都毋需改變你的生活,或做為一個真正的程式設計師應該具備的全能本領。 作者:Peter Norvig (Copyright 2001) 參考文獻 1.Bloom, Benjamin (ed.) Developing Talent in Young People, Ballantine, 1985. 2.Brooks, Fred, No Silver Bullets, IEEE Computer, vol. 20, no. 4, 1987, p. 10-19. 3.Hayes, John R., Complete Problem Solver Lawrence Erlbaum, 1989. 4.Lave, Jean, Cognition in Practice: Mind, Mathematics, and Culture in Everyday Life, Cambridge University Press, 1988.
朝向高品質十二步驟的程式設計 最新文章 程式設計師要有所謂的五育 |
|
( 休閒生活|網路生活 ) |