歡迎光臨
每天分享高質量文章

世界頂級的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獲取到文章目錄

贊(0)

分享創造快樂