世界頂級的Linux大神們告訴你:這些書才是你應該看的!
程序員書庫(ID:OpenSourceTop) 編譯
鏈接:https://www.hpe.com/us/en/insights/articles/top-linux-developers-recommended-programming-books-1808.html
Linux可以說是21世紀的操作系統,Linus Torvalds在構建開源社區方面做出了巨大的貢獻,網路專業人員和開發人員採用Linux的主要原因是它的代碼質量和實用性。毋庸置疑,Torvalds是一個編程天才。
Steven J. Vaughan-Nichols詢問了Torvalds以及其他世界頂級的Linux開發人員,是哪些書幫助他們實現了卓越的編程。以下這就是這些大神們推薦給我們的書:
耀眼的C語言
Linux是在20世紀90年代開發的,其他基礎開源應用程序也是如此,開發人員選擇使用的工具和語言與時代有關,這意味著當時的開發者大多選擇C語言編程。雖然如今C語言不再流行,但對於許多老牌開發者來說,這是他們的第一門語言,因此對他們影響最大的書籍中,一定有C語言相關的。
「你不應該用我學習編程的路線去學習。」Torvalds說。他是從學習BASIC語言開始,然後轉向機器代碼(這裡指的不是彙編語言,實際上只是『數字』的機器碼,」),最後才是彙編語言和C語言。
Torvalds說:這些語言都不應該成為當下學習編程的第一門語言,其中一些(機器代碼)根本沒有任何意義,雖然C語言仍然是一門主要的語言,但是我仍然認為你不應該從它開始。
Torvalds這樣說並不是因為他不喜歡C語言,畢竟Linux是用GNU C編寫的。他說:「我仍然認為C語言是一種很棒的語言,語法非常簡單,各個方面都表現很好。但是,以今天的標準來看,要讓它成為一門好的初學者語言,需要付出的努力太多了。「在這個過程你可能會感到很沮喪,從你寫出第一個『Hello World』程序到你開發出可能實際使用的程序,這中間間隔實在是太大了。
從很早開始,最吸引Torvalds的編程書籍是Brian W. Kernighan和Dennis M. Ritchie的
《C程序設計語言》
,本書在編程圈子裡也被稱為K&R。因為它很簡短,內容清晰簡潔,但
你需要有編程背景才能真正讀懂它。
而且並不是只有Torvalds推薦K&R,其他人也都把這本書作為最有影響力的參考書籍之一,諸如甲骨文負責Linux和虛擬化開發的高級副總裁Wim Coekaerts;著名Linux內核開發者Alan Cox;谷歌雲CTO Brian Stevens;以及Canonical公司技術運營副總裁Pete Graner 。
如果你想學習C語言編程,Samba聯合創始人傑里米·艾利森(Jeremy Allison)還向我們推薦了
《C程序設計新思維》
;
此外,艾利森還推薦了
《C專家編程》
以及具有20年歷史的
《POSIX多線程程序設計》
。
除了C語言,還有什麼?
Linux開發人員對當前編程書籍的建議都是他們認為最適合當今開發項目的工具和語言相關的。同時它們也反映了他們自己的個人偏好。
艾利森建議年輕的開發人員可以通過《Go Programming Language》來學習Go語言編程;
以及通過
《Programming Rust》
來學習Rust 。
但是,超越編程語言之外(以及書籍教你的技術)也是十分有意義的。「比如從一些環境開始,你可以通過一個工具包,為你完成99%的大致框架,然後你再圍繞它編寫出其他的東西,」Torvalds建議。
Torvalds還說:「老實說,語言本身並不像它周圍的基礎設施那麼重要,無論你是從Java或Kotlin開始。比如你想開發一個移動APP,最好的選擇可能是Android SDK。或者你對遊戲很感興趣,所以你要開始使用其中一種遊戲引擎,這些引擎通常都有自己的腳本語言。「
這種基礎結構包括特定於操作系統本身的編程書籍。除了K&R之外,Canonical公司技術運營副總裁Pete Graner 還閱讀了W. Richard Stevens的
《UNIX網路編程》
特別是W·Richard Stevens 的
《TCP/IP詳解 卷1:協議》
這是是一本完整而詳細的TCP/IP協議指南,到了如今依然十分受歡迎,即使它已經出版近30年了。
由於Linux開發在很大程度上與網路基礎設施相關,
因此Graner還推薦了
《sendmail》
,
《學習bash》
,
《DNS與BIND》
和
《Managing IMAP》
等 O"Reilly書籍。設計永不過時
谷歌雲CTO Brian Stevens認為:技術是比較固定的,但設計卻不一樣,他認為所有的開發人員都應該在學習語法之前就開始學習設計。
因此他極力推薦
《The Design of Everyday Things》
這本書
甲骨文的Linux 元老Coekaerts喜歡Kernighan和Rob Pike的
《程序設計實踐》
,Coekaerts建議所有人都應該讀一讀這本書,遺憾的是Coekaerts還是學生的時候這本書還沒有出版
如果你問一個經驗豐富的開發者:你最喜歡的技術書籍是什麼?一定會有人告訴你是
《 計算機程序設計藝術》
,VMware的首席開源官Dirk Hohndel認為,雖然這本書備受推崇,但是放在今天並不一定非常有用。
閱讀大量代碼
雖然編程書籍可以教會你很多,但不要錯過開源社區帶給你的另一個機會:閱讀代碼
《代碼閱讀方法與實踐》
本書的作者使用600多個現實的例子,向讀者展示如何區分好的(和壞的)代碼,如何閱讀代碼。
同時,也不要忽視共同學習的機會。Cox說:「我是在計算機俱樂部和其他人一起學習基礎知識的。在我看來,這仍然是迄今為止最好的學習方式。」他通過《Mastering Machine Code》和Honeywell L66 B編譯器手冊學習機器代碼,但是自學和與其他開發人員一起學習有很大的不同。
Cox認為一群人在一起不僅能夠玩的開心,還能相互幫助解決遇到的難題是
最好的學習方式
,而且這種一起學習的方式,無論你在那個年齡段都是適用的。最後,如果你想嘗試Linux硬核開發,Linux Kernel的維護者Greg Kroah-Hartman還推薦了Steve Oualline的《C程序設計語言》和Samuel Harbison以及Guy Steele的
《C語言參考手冊》
你覺得這些大神們推薦的這些書怎麼樣呢?
●編號595,輸入編號直達本文
●輸入m獲取到文章目錄


※Linus 又開懟:有時候標準就是一坨屎!
※C++遊戲開發入門項目精選:製作經典遊戲拳皇97
TAG:Linux學習 |