老派程式設計師 徒手實現偉大成就

2021-06-08 08:15:38 字數 1477 閱讀 4804

當在讀peter seibel的精彩著作《程式設計人生:15位軟體先驅訪談錄(coders at work)》的時候,我發現一些老派的程式設計師(我是這樣尊敬的稱呼他們的)是非常的有趣,比如ken thompson, joe armstrong 和 jamie zawinski,他們開發軟體時幾乎不用任何現代的工具和技術技巧。

ken thompson是b語言(c語言的前身)的設計者,也是go語言的設計者(與 rob pike合作)。在貝爾實驗室工作的時候,他和dennis ritchie一起開發實現了c 語言和最初的unix作業系統。一次在紐澤西的晚飯上,當他在餐具墊上設計出來utf-8字元編碼方法後,他通宵工作,在貝爾實驗室的plan 9 作業系統裡實現了對utf-8的全面支援。就程式設計風格而言,他只通過printf語句來除錯,幾乎沒有單元測試,他開發軟體是先設計資料結構,然後從區域性開始實現,中間利用臨時的測試介面,最終到達整體完成,

jamie zawinski 在麻省理工的人工智慧實驗室使用lisp工作,之後他領導開發了lucid emacs,也是用的lisp語言,這個軟體就是後來被人們熟悉的xemacs。此後他加入了netscape項 目,開發unix版的netscape瀏覽器的前端部分,之後他又領導了netscape mail的開發(兩個專案都是用的c語言)。他也是只喜歡用print語句來除錯**。他的開發過程有時是先整體後區域性,有時是先區域性後整體,順其自然, 在必要的時候進行重構。開發時他幾乎不做單元測試,他認為單元測試會耽誤時間——他認為第一次就應該把**編對,他反覆這樣強調。在他的觀念裡,這是個優 先級問題,「你是願意去開發出乙個沒問題的軟體,還是願意下星期就把它完成,選擇乙個,你們不能兼得。」

joe armstrong開發了erlang程式語言,他還為愛立信開發開源的 open telecom platform(otp)框架。開發軟體時,他喜歡在寫**前寫盡可能完備的文件,特別是對有難度的專案,比如有關實時網路協議的。對於有難度的問題他喜歡先用原型解決,對於除錯,他只是有print語句。他是乙個物件導向程式設計的批評者,他喜歡像haskell這樣的函式式程式語言。他從未使用過ide,他喜歡使用的是emacs和命令列(不需要用鍵盤)這樣的開發工具。

所以,什麼樣的工具和技術技巧是你成為乙個偉大程式設計師的所必須的?是這些tdd、bdd、scrum、敏捷開發、設計模式、極限程式設計等現代技術嗎? 這些只是花瓶?還是為了用來實現更大的目標?或者這只是說明了有天賦的程式設計師不管使用什麼工具都能走上自己成為偉大程式設計師的道路?

我個人的觀點是,做一定程度的tdd、保證合適數量的單元測試,這些都是作用巨大的。因此這些現代技術才被看作是能夠讓我們工作更加容易、更有效率的科技進步——尤其是對那些非天才級別的程式設計師。

軟體史上偉大的程式設計師

1,john carmack 約翰.卡馬克 john是程式設計師的教父。他一直致力與推翻世界快速工業化的障礙,在引領時代浪尖的同時仍能將研究成果作為遊戲的一部分,它的貢獻令人敬畏。他在計算機圖形方面的創新給我們帶來了wolfenstein 3d,doom quake.6,bram cohen 布拉姆...

我心中最偉大的程式設計師

菲利普 卡茲 不名則已,一鳴驚人,這種名為pkzip的程式可以將乙個或多個檔案壓縮到乙個字尾為 zip 的檔案中,無論從壓縮比 壓縮速度方面都超過了商業軟體 arc。卡茲將pkzip作為自由軟體免費發放,使其如同草原上的星星之火般在全美的各大bbs上蔓延開來,使用者以幾何級數的增長,各大bbs的站長...

如何從優秀的程式設計師成為偉大的程式設計師 2

51cto.com 7 不斷公升級 偉大的程式設計師會積極主動地把自己的技術公升級。他們對知識的態度就像餓貓見著了牛奶,他們從不用上級催促給自己設定目標 不用經理要求他們完成任務,因為他們自己就已經安排ok了。他們發現自己想要參加的大會就會給公司寫email 本人非常想參加今年的tech ed大會。...