老派程序員——徒手實現偉大成就

摘要:本文介紹了三位非常著名的程序員:Ken Thompson,Joe Armstrong 和 Jamie Zawinski,他們是如何發明一門新語言,他們開發軟件時會像我們一樣使用當今流行的開發工具嗎?

當讀Peter Seibel的精彩著作《編程人生:15位軟件先驅訪談錄(Coders at Work)》的時候,我發現一些老派的程序員(我是這樣尊敬的稱呼他們的)是非常的有趣,比如Ken Thompson,Joe Armstrong 和 Jamie Zawinski,他們開發軟件時幾乎不用任何現代的工具和技術技巧。

ken_thompson

Ken thompson

Ken Thompson是B語言(C語言的前身)的設計者,也是Go語言的設計者(與Rob Pike合作)。在貝爾實驗室工作的時候,他和Dennis Ritchie一起開發實現了C語言和最初的Unix操作系統。一次在新澤西的晚飯上,當他在餐具墊上設計出來UTF-8字符編碼方法后,他通宵工作,在貝爾實驗室的Plan 9操作系統里實現了對UTF-8的全面支持。就編程風格而言,他只通過printf語句來調試,幾乎沒有單元測試,他開發軟件是先設計數據結構,然后從局部開始實現,中間利用臨時的測試接口,最終到達整體完成,

Jamie_Zawinski

Jamie Zawinski

Jamie Zawinski在麻省理工的人工智能實驗室使用Lisp工作,之后他領導開發了Lucid Emacs,也是用的Lisp語言,這個軟件就是后來被人們熟悉的XEmacs。此后他加入了Netscape項目,開發Unix版的Netscape瀏覽器的前端部分,之后他又領導了Netscape Mail的開發(兩個項目都是用的C語言)。他也是只喜歡用print語句來調試代碼。他的開發過程有時是先整體后局部,有時是先局部后整體,順其自然,在必要的時候進行重構。開發時他幾乎不做單元測試,他認為單元測試會耽誤時間——他認為第一次就應該把代碼編對,他反復這樣強調。在他的觀念里,這是個優先級問題,“你是愿意去開發出一個沒問題的軟件,還是愿意下星期就把它完成,選擇一個,你們不能兼得。”

joe_armstrong

Joe_armstrong

Joe Armstrong開發了Erlang編程語言,他還為愛立信開發開源的Open Telecom Platform(OTP)框架。開發軟件時,他喜歡在寫代碼前寫盡可能完備的文檔,特別是對有難度的項目,比如有關實時網絡協議的。對于有難度的問題他喜歡先用原型解決,對于調試,他只是有print語句。他是一個面向對象編程的批評者,他喜歡像Haskell這樣的函數式編程語言。他從未使用過IDE,他喜歡使用的是Emacs和命令行(不需要用鼠標)這樣的開發工具。

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

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

譯文來自:aqee

英文原文鏈接:Old school developers - achieving a lot with little


本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/450792.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/450792.shtml
英文地址,請注明出處:http://en.pswp.cn/news/450792.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

互聯網大廠項目研發流程

文章目錄階段一:階段二:階段三:階段四:階段五:開發人員:測試人員:設計師:階段六:階段七:總結:本文章學習自:https://www.bilibili.com…

centos常見錯誤 Failed to set locale, defaulting to C

錯誤描述: 當在centos中使用yum命令時,輸出錯誤: [rootlocalhost yum.repos.d]# yum list |grep prceFailed to set locale, defaulting to C 用locale檢測,出現如下提示: rootlocalhost yum.repos.d]# localelocale: …

圖片上傳知識點梳理

在日常項目開發中,圖片上傳是一個十分常見的場景。而現在的各種UI框架都提供了自己的上傳組件,網上第三方的上傳組件也多如牛毛。可能你早已習慣了直接使用這些現成的組件,然而對于其具體的實現,卻并未深入解析。本文將通過簡單的…

解決 java.lang.IllegalArgumentException: Repository interface must not be null on initialization!

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 報錯:Caused by: java.lang.IllegalArgumentException: Repository interface must not be null on initialization! Cause…

【狂神說】JVM

文章目錄1.JVM的位置2.JVM的體系結構3.類加載器4.雙親委派機制(重要)5.沙箱安全機制(了解)6.native(核心)7.PC寄存器(了解)8.方法區9.棧10.三種JVM11.堆(Heap)12.新生區、老年區13.永…

我們真的需要統一的編程規范?

摘要:仁者見仁智者見智,編碼風格的不同,對項目也會有不同的影響,統一的編碼規范有益于項目的維護。俗話說,沒有規矩不成方圓,在2004年,UNIX創始人之一的Ken Arnold就發表了一篇很幽默文章&#…

百度云重磅發布ABC 3.0 尹世明如何詮釋百度云的“新”打法

雷鋒網9月4日消息,2018百度云智峰會正式召開,百度總裁張亞勤發表題為《新技術驅動,全面進入Cloud2.0》的演講并表示,經歷了PCClient/Server到MobileCloud 1.0,再到如今的AICloud 2.0過程,新技術推動云計算產…

EcmaScript對象克隆之謎

先談談深拷貝 如何在js中獲得一個克隆對象,可以說是喜聞樂見的話題了。相信大家都了解引用類型與基本類型,也都知道有種叫做深拷貝的東西,傳說深拷貝可以獲得一個克隆對象!那么像我這樣的萌新自然就去學習了一波,我們能…

開發人員眼中最好的代碼編輯器是誰?

摘要:對開發人員來講,開發工具就好比戰場上的“兵器”,不同領域的開發人員他們所使用的“兵器”也不完全相同,本文從友好性、功能性、擴展等多方面總結了最受開發人員歡迎的“兵器”。你最愛的那個在這里嗎? 如果我們把…

關于RESTful一些注意事項,接口開發規范

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 最近在研究restful,公司開發要使用,所以自己就去網上找了好些資料,并整理了一套公司開發的接口規范。…

【老杜】MySQL—day01

文章目錄day01課堂筆記1、數據庫概述及數據準備1.1、什么是數據庫1.2、什么是數據庫管理系統1.3、SQL概述1.4、安裝MySQL數據庫管理系統。1.4、MySQL數據庫的完美卸載!1.5、MySQL的服務1.6、用命令來啟動和關閉mysql服務1.7、登錄mysql數據庫2、MySQL常用命令&#…

【轉載】DRuid 大數據分析之查詢

轉載自http://yangyangmyself.iteye.com/blog/23217591、Druid 查詢概述上一節完成數據導入后,接下來講講Druid如何查詢及統計分析導入的數據。Druid的查詢是使用REST風格的HTTP請求查詢服務節點(Broker、Historical、Realtime),這…

記錄 Parameter with that position [1] did not exist; nested exception is java.lang.IllegalArgumentExce

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 報錯如題: Parameter with that position [1] did not exist; nested exception is java.lang.IllegalArgumentException: Pa…

[轉]簡單的動態修改RDLC報表頁邊距和列寬的方法

本文轉自:http://star704983.blog.163.com/blog/static/136661264201161604413204/ 1.修改頁邊距 XmlDocument XMLDoc new XmlDocument();XMLDoc.Load(System.Windows.Forms.Application.StartupPath "\Report_try-2.rdlc");XmlNamespaceManager xmn n…

函數式編程語言天生就慢嗎?

摘要:近期,函數式編程得到了越來越多的關注,Lisp不僅重獲青春還涌現出了一批新函數式編程語言。因此開發者們對函數式編程語言的運行快慢各抒己見,展開激烈討論。本文將和大家一起討論,函數式編程語言真的就慢嗎&#…

【老杜】MySQL—day02

文章目錄day02課堂筆記1、把查詢結果去除重復記錄【distinct】10、連接查詢10.1、什么是連接查詢?10.2、連接查詢的分類?10.3、當兩張表進行連接查詢時,沒有任何條件的限制會發生什么現象?10.4、怎么避免笛卡爾積現象?…

vue根據數組對象中某個唯一標識去重

由于在vue中,會自動在數組和對象中加入_obser__觀察者模式的一些屬性,所以直接用數組的filter去重(下面這種),indexOf不能準確識別 var arr [1, 2, 2, 3, 4, 5, 5, 6, 7, 7]; var arr2 arr.filter(function(x, index…

Springsecurity之AuthenticationProvider

2019獨角獸企業重金招聘Python工程師標準>>> 注意:AuthenticationProvider與Authentication緊密聯系,關于Authentication,看我的這篇博客。 先上一張圖,如下圖1 圖1 AuthenticationProvider的類圖 AuthenticationProvi…

Postman使用入門

前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。 Postman測試管理的單位是測試集(Collections),測試集內可以創建文件夾(Folder)和具體的請求(Requests…