那曲檬骨新材料有限公司

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

頂級Linux開發者必不可少的編程閱讀書籍

西西 ? 作者:工程師飛燕 ? 2018-11-25 10:47 ? 次閱讀

Linux,毫無爭議的屬于 21 世紀的操作系統。雖然 Linus Torvalds 在建立開源社區這件事上做了很多工作和社區決策,不過那些網絡專家和開發者愿意接受 Linux 的原因還是因為它卓越的代碼質量和高可用性。Torvalds 是個編程天才,同時必須承認他還是得到了很多其他同樣極具才華的開發者的無私幫助。

就此我咨詢了 Torvalds 和其他一些頂級 Linux 開發者,有哪些書籍幫助他們走上了成為頂級開發者的道路,下面請聽我一一道來。

熠熠生輝的 C 語言

Linux 是在大約上世紀 90 年代開發出來的,與它一起問世的還有其他一些完成基礎功能的開源軟件。與此相應,那時的開發者使用的工具和語言反映了那個時代的印記,也就是說 C 語言??赡蹸 語言不再流行了,可對于很多已經建功立業的開發者來說,C 語言是他們的第一個在實際開發中使用的語言,這一點也在他們推選的對他們有著深遠影響的書單中反映出來。

Torvalds 說,“你不應該再選用我那個時代使用的語言或者開發方式”,他的開發道路始于 BASIC,然后轉向機器碼(“甚至都不是匯編語言,而是真真正正的‘二進制’機器碼”,他解釋道),再然后轉向匯編語言和 C 語言。

“任何人都不應該再從這些語言開始進入開發這條路了”,他補充道。“這些語言中的一些今天已經沒有什么意義(如 BASIC 和機器語言)。盡管 C 還是一個主流語言,我也不推薦你從它開始。”

并不是他不喜歡 C。不管怎樣,Linux 是用GNU C 語言寫就的。“我始終認為 C 是一個偉大的語言,它有著非常簡單的語法,對于很多方向的開發都很合適,但是我懷疑你會遇到重重挫折,從你的第一個‘Hello World’程序開始到你真正能開發出能用的東西當中有很大一步要走”。他認為,用現在的標準,如果作為入門語言的話,從 C 語言開始的代價太大。

在他那個時代,Torvalds 的唯一選擇的書就只能是 Brian W. Kernighan 和 Dennis M. Ritchie 合著的《C 編程語言,第二版C Programming Language, 2nd Edition》,它在編程圈內也被尊稱為 K&R?!斑@本書簡單精煉,但是你要先有編程的背景才能欣賞它”,Torvalds 說到。

Torvalds 并不是唯一一個推薦 K&R 的開源開發者。以下幾位也同樣引用了這本他們認為值得推薦的書籍,他們有:Linux 和 Oracle 虛擬化開發副總裁 Wim Coekaerts;Linux 開發者 Alan Cox;Google 云 CTO Brian Stevens;Canonical 技術運營部副總裁 Pete Graner。

如果你今日還想同 C 語言較量一番的話,Samba 的共同創始人 Jeremy Allison 推薦《C 程序設計新思維21st Century C: C Tips from the New School》。他還建議,同時也去閱讀一本比較舊但是寫的更詳細的《C 專家編程Expert C Programming: Deep C Secrets》和有著 20 年歷史的《POSIX 多線程編程Programming with POSIX Threads》。

如果不選 C 語言, 那選什么?

Linux 開發者推薦的書籍自然都是他們認為適合今時今日的開發項目的語言工具。這也折射了開發者自身的個人偏好。例如,Allison 認為年輕的開發者應該在《Go 編程語言The Go Programming Language》和《Rust 編程Rust with Programming Rust》的幫助下去學習 Go 語言和 Rust 語言。

但是超越編程語言來考慮問題也不無道理(盡管這些書傳授了你編程技巧)。今日要做些有意義的開發工作的話,要從那些已經完成了 99% 顯而易見工作的框架開始,然后你就能圍繞著它開始寫腳本了, Torvalds 推薦了這種做法。

“坦率來說,語言本身遠遠沒有圍繞著它的基礎架構重要”,他繼續道,“可能你會從 Java 或者 Kotlin 開始,但那是因為你想為自己的手機開發一個應用,因此安卓 SDK 成為了最佳的選擇,又或者,你對游戲開發感興趣,你選擇了一個游戲開發引擎來開始,而通常它們有著自己的腳本語言”。

這里提及的基礎架構包括那些和操作系統本身相關的編程書籍。 Garner 在讀完了大名鼎鼎的 K&R 后又拜讀了 W. Richard Steven 的《Unix 網絡編程Unix Network Programming》。特別是,Steven 的《TCP/IP 詳解,卷1:協議TCP/IP Illustrated, Volume 1: The Protocols》在出版了 30 年之后仍然被認為是必讀之書。因為 Linux 開發很大程度上和和網絡基礎架構有關,Garner 也推薦了很多 O'Reilly 在Sendmail、Bash、DNS以及IMAP/POP等方面的書。

Coekaerts 也是 Maurice Bach 的《UNIX 操作系統設計The Design of the Unix Operation System》的書迷之一。James Bottomley 也是這本書的推崇者,作為一個 Linux 內核開發者,當 Linux 剛剛問世時 James 就用 Bach 的這本書所傳授的知識將它研究了個底朝天。

軟件設計知識永不過時

盡管這樣說有點太局限在技術領域。Stevens 還是說到,“所有的開發者都應該在開始鉆研語法前先研究如何設計,《設計心理學The Design of Everyday Things》是我的最愛”。

Coekaerts 喜歡 Kernighan 和 Rob Pike 合著的《程序設計實踐The Practic of Programming》。這本關于設計實踐的書當 Coekaerts 還在學校念書的時候還未出版,他說道,“但是我把它推薦給每一個人”。

不管何時,當你問一個長期從事于開發工作的開發者他最喜歡的計算機書籍時,你遲早會聽到一個名字和一本書:Donald Knuth 和他所著的《計算機程序設計藝術(1-4A)The Art of Computer Programming, Volumes 1-4A》。VMware 首席開源官 Dirk Hohndel,認為這本書盡管有永恒的價值,但他也承認,“今時今日并非極其有用”。(LCTT 譯注:不代表譯者觀點)

讀代碼。大量的讀。

編程書籍能教會你很多,也請別錯過另外一個在開源社區特有的學習機會:《代碼閱讀方法與實踐Code Reading: The Open Source Perspective》。那里有不可計數的代碼例子闡述如何解決編程問題(以及如何讓你陷入麻煩……)。Stevens 說,談到磨煉編程技巧,在他的書單里排名第一的“書”是 Unix 的源代碼。

“也請不要忽略從他人身上學習的各種機會。” Cox 道,“我是在一個計算機俱樂部里和其他人一起學的 BASIC,在我看來,這仍然是一個學習的最好辦法”,他從《精通 ZX81 機器碼Mastering machine code on your ZX81》這本書和 Honeywell L66 B 編譯器手冊里學習到了如何編寫機器碼,但是學習技術這點來說,單純閱讀和與其他開發者在工作中共同學習仍然有著很大的不同。

Cox 說,“我始終認為最好的學習方法是和一群人一起試圖去解決你們共同關心的一些問題并從中找到快樂,這和你是 5 歲還是 55 歲無關”。

最讓我吃驚的是這些頂級 Linux 開發者都是在非常底層級別開始他們的開發之旅的,甚至不是從匯編語言或 C 語言,而是從機器碼開始開發。毫無疑問,這對幫助開發者理解計算機在非常微觀的底層級別是怎么工作的起了非常大的作用。

那么現在你準備好嘗試一下硬核 Linux 開發了嗎?Greg Kroah-Hartman,這位 Linux 內核穩定分支的維護者,推薦了 Steve Oualline 的《實用 C 語言編程Practical C Programming》和 Samuel harbison 與 Guy Steels 合著的《C 語言參考手冊C: A Reference Manual》。接下來請閱讀如何進行 Linux 內核開發HOWTO do Linux kernel development,到這時,就像 Kroah-Hartman 所說,你已經準備好啟程了。

于此同時,還請你刻苦學習并大量編碼,最后祝你在跟隨頂級 Linux 開發者腳步的道路上好運相隨。

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • Linux
    +關注

    關注

    87

    文章

    11345

    瀏覽量

    210402
  • C語言
    +關注

    關注

    180

    文章

    7614

    瀏覽量

    137726
收藏 人收藏

    評論

    相關推薦

    【《軟件開發珠璣》閱讀體驗】+ 心得

    ,《軟件開發珠璣》是一本值得每個軟件開發者閱讀的書籍。它教會了我們如何了解需求、設計、項目管理,如何與團隊合作以及如何持續學習和進步。在未來的軟件開發生涯中,我將繼續秉承書中的理念,努
    發表于 06-23 17:56

    關于學習Linux 編程的基本經典書籍推薦

    個一舉兩得的事情。哦,忘了告訴大家,上次 CNN 采訪 Google 總裁佩林的時候,水煮魚看到佩林的書架上就有這本書的英文版,可見它真的是一本全球開發者必備的一本書?!渡钊肜斫?Linux 內核
    發表于 10-31 11:00

    做振動監測的,必不可少的基礎知識!

    做振動監測的,必不可少的基礎知識!
    發表于 03-23 09:53

    stm32用戶使用手冊,學習32必不可少的資料

    stm32用戶使用手冊,學習32必不可少的資料
    發表于 04-14 15:10

    杰出內核開發者華生平回顧

    追思心中璀璨的明星:杰出內核開發者
    發表于 07-22 15:58

    汽車車型開發必不可少的CAE解析

    汽車車型開發必不可少的CAE分析
    發表于 03-01 06:37

    學習嵌入式linux編程開發應該要必備什么條件呢

    嵌入式linux是嵌入式開發必不可少的一份子,在科技高速發展的今天,嵌入式已然已經成為了最熱門的技術之一了。對于想要學習好嵌入式的學員來說,現在學習好linux是很有必要的,因為這個是
    發表于 12-22 07:04

    大數據分析,半導體技術必不可少?

    進行大數據分析時,半導體技術是必不可少的。雖然存儲器本身的技術開發也很重要,但對于大數據分析,使存儲器物盡其用的控制器和中間件的技術似乎更加重要。
    發表于 01-21 08:47 ?1745次閱讀

    物聯網發展中必不可少的RFID技術

    中國智造向5G時代智能發展,RFID是必不可少的應用技術
    的頭像 發表于 08-20 10:03 ?3703次閱讀

    要成為鴻蒙開發者,應該學習哪些編程語言

    據了解,鴻蒙系統是基于Linux開發的,源碼是C語言。那么,作為一名開發者,如何幫助鴻蒙系統構建生態呢?在以往安卓、蘋果系統構建過程,有哪些可以值得借鑒的地方呢?要成為鴻蒙開發者,應該
    的頭像 發表于 09-24 12:06 ?1.3w次閱讀

    新手必看!掌握PLC技術閱讀手冊是必不可少的技巧

    掌握PLC技術閱讀手冊是必不可少的,特別當新產品出來后,只有手冊是一手資料。除了新產品學習需要查看手冊,工作中接觸到了任何設備,手冊都是最專業、最全面的資料。很多人不喜歡看手冊,覺得手冊難懂,今天給
    的頭像 發表于 10-23 09:56 ?2790次閱讀
    新手必看!掌握PLC技術<b class='flag-5'>閱讀</b>手冊是<b class='flag-5'>必不可少</b>的技巧

    開發工作中必不可少的5個工具

    前不久Twitter上有一個帖子,只選五種你生活中不可或缺的工具,下面就是在我的開發工作中必不可少的5個工具。
    的頭像 發表于 11-07 10:01 ?2432次閱讀

    汽車車型開發必不可少的CAE分析資料下載

    電子發燒友網為你提供汽車車型開發必不可少的CAE分析資料下載的電子資料下載,更有其他相關的電路圖、源代碼、課件教程、中文資料、英文資料、參考設計、用戶指南、解決方案等資料,希望可以幫助到廣大的電子工程師們。
    發表于 04-07 08:50 ?12次下載
    汽車車型<b class='flag-5'>開發</b><b class='flag-5'>必不可少</b>的CAE分析資料下載

    涂鴉開發者大會即將開幕,賦能開發者打造IoT發展新引擎

    6月29日,首場TUYA開發者大會將在深圳拉開序幕!?????TUYA開發者大會是涂鴉繼全球智能化商業峰會、全球硬科技開發者大會后,面向全球開發者舉辦的又一場備受矚目的IoT領域
    的頭像 發表于 06-12 10:15 ?733次閱讀
    涂鴉<b class='flag-5'>開發者</b>大會即將開幕,賦能<b class='flag-5'>開發者</b>打造IoT發展新引擎

    華為云 classroom 賦能|tookIT 助力開發者上云

    對于資深程序員而言,IDE 是必不可少的,它好比是劍客手中的寶劍,IDE 幫助程序員更快更絲滑的去編程,同時插件就是這把劍上的各種 Buff,為寶劍賦能,提供更好的升級打怪
    的頭像 發表于 08-31 15:26 ?539次閱讀
    華為云 classroom 賦能|tookIT 助力<b class='flag-5'>開發者</b>上云
    百家乐官网小77论坛| 百家乐有赢钱公式吗| 大发888下载安装| 有破解百家乐官网仪器| 百家乐投注很不错| 托克托县| 百家乐赌局| 百家乐官网下载免费软件| 百家乐tt赌场娱乐网规则| 下载百家乐官网棋牌大厅| 中原百家乐的玩法技巧和规则 | 现金百家乐官网| 百家乐家居| 噢门百家乐官网玩法| 威尼斯人娱乐城提款| 新锦江百家乐官网娱乐平台| 钱大发888斗地主| 百家乐策略| 阿拉善左旗| 王子百家乐的玩法技巧和规则| 易球百家乐官网娱乐城| 雁荡棋牌游戏| 百家乐太阳城菲律宾| 长乐坊百家乐官网娱乐城| 网上百家乐乐代理| 钱柜百家乐官网的玩法技巧和规则| 广州太阳城大酒店| 百家乐官网网开服表| 望江县| 马德里百家乐的玩法技巧和规则| 宝马会百家乐官网的玩法技巧和规则 | 新乐园百家乐娱乐城| 真人在线百家乐| K7百家乐的玩法技巧和规则| CEO百家乐官网的玩法技巧和规则| 岐山县| 威尼斯人娱乐城微博| 做生意必须看风水吗| 百家乐官网双面数字筹码| 盛京棋牌网| 百家乐博娱乐平台|