Peter Seibel:coders At Work@2009
這本由 Peter Seibel 撰寫的《Coders at Work: Reflections on the Craft of Programming》一書,旨在透過對當代頂尖程式設計師及電腦科學家的深入訪談,闡明程式設計這個通常隱密不為人知的手藝的本質。書中引言部分提出了幾個核心論點:
程式設計作為一種隱密的手藝:
引言首先指出,程式設計是一個異乎尋常地晦澀難懂的手藝 (unusually obscure craft)。與許多其他專業不同,程式設計師通常獨自工作,或只與非常小的團隊合作。他們工作中最有趣、最有創造力的部分往往發生在他們的腦中 (in their heads),這是外人無法直接觀察的。此外,程式設計師的最終產物——程式碼 (code)——會被機器「咀嚼處理」(chewed up by a machine),最終以可執行的程式形式呈現。對大多數人來說,程式的行為 (behavior) 是他們唯一能了解程式設計師工作的窗口 (the only window)。這種工作模式使得程式設計的實際過程及其精妙之處對外界來說非常不透明。
自學成才的普遍性與視野的局限性:
引言提到,許多程式設計師,即使是那些在學校學習過電腦科學的人,在實際程式設計方面都是自學成才 (autodidacts)。這導致了一個重要的現象:大多數程式設計師僅了解「他們自己」以及可能少數幾位同事的程式設計方法、技巧,以及他們「自己」學習程式設計的過程。這意味著,關於程式設計的最佳實踐、有效的學習方法、以及不同程式設計哲學之間的比較,往往局限於小圈子內,缺乏更廣泛的交流與了解。這種個人化、孤立化的學習和實踐方式,進一步加劇了程式設計領域的隱密性。
本書的核心目的與方法:
基於上述程式設計的隱密性及程式設計師視野的局限性,本書的目標在於「闡明領域中這些被遮蔽的角落」(illuminate these obscured corners of the field)。作者 Peter Seibel 親自訪談了「當代最頂尖的十五位程式設計師及電腦科學家」(fifteen of the all-time greats)。這些受訪者擁有廣泛的經驗,涵蓋了系統駭客、學術界與業界結合的專家、工業研究人員、早期網路和語言開發者,以及與 Web 同世代的程式設計師等。透過與這些傑出人物的對話,本書試圖揭示程式設計的真實面貌。
訪談聚焦的核心議題:
訪談涵蓋了程式設計師們學習程式設計的經歷 (how they learned to do it)、他們實踐手藝的方法 (how they practice their craft)、以及他們對程式設計未來發展的看法 (what they think about the future of programming)。更具體地說,訪談深入探討了程式設計師們經常面臨的關鍵問題:如何設計軟體 (How should we design software?)?程式語言在提高生產力或避免錯誤方面扮演何種角色 (What role do programming languages play in helping us be productive or avoid errors?)?是否有更有效的方法來追蹤難以發現的程式錯誤 (Are there ways we can make it easier to track down hard-to-find bugs?)?
關於程式設計的未解之謎與普遍共識:
引言強調,上述許多問題至今仍「懸而未決」(far from settled questions)。透過訪談,本書呈現了受訪者們對這些問題「截然不同」(quite varied opinions) 的看法。例如,關於軟體設計,有人強調快速讓程式碼跑起來的重要性 (Jamie Zawinski, Dan Ingalls),有人則強調在實作前進行詳細設計和測試 (Joshua Bloch, Donald Knuth)。關於程式語言與錯誤或安全性的關係,有人將問題歸咎於特定語言如 C (Fran Allen, Bernie Cosell),有人則認為問題出在程式設計師本身或語言特性有其價值 (Ken Thompson, Donald Knuth)。關於形式化證明 (formal proofs) 的用處,受訪者們也持不同意見。
然而,儘管意見多樣,引言也提到了受訪者們之間存在一些「普遍的共同主題」(common themes)。幾乎所有人都強調了「編寫可讀程式碼的重要性」(importance of writing readable code)。大多數受訪者發現,「併發程式碼」(concurrent code) 中的錯誤是最難追蹤的。並且,幾乎沒有人認為程式設計是一個已經被完全解決的問題 (programming is not a solved problem);大多數人仍在尋找更好的軟體寫作方法,無論是透過自動程式碼分析、改進合作方式,還是尋找(或設計)更好的程式語言。最後,引言特別指出,受訪者們普遍認為「隨處可見的多核心CPU」(ubiquitous multi-core CPUs) 將迫使軟體寫作方式發生一些重大變化 (force some serious changes)。
歷史視角與核心價值:
引言承認這些對話發生在「領域的特定時刻」(a particular moment in our field’s history),一些討論的話題可能會隨時間演變成歷史的好奇。但即便在程式設計這個年輕的領域,歷史也能提供教訓。更重要的是,引言表達了希望受訪者們分享的見解,無論是關於程式設計的本質還是如何做得更好,都將對當今及未來幾代的程式設計師有價值。
關於書名「Coders at Work」的解釋:
引言最後解釋了書名的選擇,強調其呼應了「Writers at Work」和「Founders at Work」等訪談系列。作者認為,「coding」(寫程式碼)雖然可能被視為整個程式設計活動中較狹窄的部分,但他個人從不相信「能寫出好程式碼的人不是好的程式設計師」,也不相信「好的程式設計師不需要是好的設計師、溝通者和思考者」。他相信書中訪談的受訪者們都是多才多藝的人物,而這些訪談也反映了這一點。
總之,本書透過匯集頂尖程式設計師的個人經驗和觀點,試圖揭開程式設計這門手藝的神秘面紗,探討其核心挑戰、多樣化的實踐方法,並展望其未來發展,同時也展示了即使在快速變化的技術領域,一些基本原則和問題依然具有普遍性和持續的意義。
comments
comments for this post are closed