0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線(xiàn)課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

頂級(jí)Linux開(kāi)發(fā)者必不可少的編程閱讀書(shū)籍

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

Linux,毫無(wú)爭(zhēng)議的屬于 21 世紀(jì)的操作系統(tǒng)。雖然 Linus Torvalds 在建立開(kāi)源社區(qū)這件事上做了很多工作和社區(qū)決策,不過(guò)那些網(wǎng)絡(luò)專(zhuān)家和開(kāi)發(fā)者愿意接受 Linux 的原因還是因?yàn)樗吭降拇a質(zhì)量和高可用性。Torvalds 是個(gè)編程天才,同時(shí)必須承認(rèn)他還是得到了很多其他同樣極具才華的開(kāi)發(fā)者的無(wú)私幫助。

就此我咨詢(xún)了 Torvalds 和其他一些頂級(jí) Linux 開(kāi)發(fā)者,有哪些書(shū)籍幫助他們走上了成為頂級(jí)開(kāi)發(fā)者的道路,下面請(qǐng)聽(tīng)我一一道來(lái)。

熠熠生輝的 C 語(yǔ)言

Linux 是在大約上世紀(jì) 90 年代開(kāi)發(fā)出來(lái)的,與它一起問(wèn)世的還有其他一些完成基礎(chǔ)功能的開(kāi)源軟件。與此相應(yīng),那時(shí)的開(kāi)發(fā)者使用的工具和語(yǔ)言反映了那個(gè)時(shí)代的印記,也就是說(shuō) C 語(yǔ)言??赡蹸 語(yǔ)言不再流行了,可對(duì)于很多已經(jīng)建功立業(yè)的開(kāi)發(fā)者來(lái)說(shuō),C 語(yǔ)言是他們的第一個(gè)在實(shí)際開(kāi)發(fā)中使用的語(yǔ)言,這一點(diǎn)也在他們推選的對(duì)他們有著深遠(yuǎn)影響的書(shū)單中反映出來(lái)。

Torvalds 說(shuō),“你不應(yīng)該再選用我那個(gè)時(shí)代使用的語(yǔ)言或者開(kāi)發(fā)方式”,他的開(kāi)發(fā)道路始于 BASIC,然后轉(zhuǎn)向機(jī)器碼(“甚至都不是匯編語(yǔ)言,而是真真正正的‘二進(jìn)制’機(jī)器碼”,他解釋道),再然后轉(zhuǎn)向匯編語(yǔ)言和 C 語(yǔ)言。

“任何人都不應(yīng)該再?gòu)倪@些語(yǔ)言開(kāi)始進(jìn)入開(kāi)發(fā)這條路了”,他補(bǔ)充道。“這些語(yǔ)言中的一些今天已經(jīng)沒(méi)有什么意義(如 BASIC 和機(jī)器語(yǔ)言)。盡管 C 還是一個(gè)主流語(yǔ)言,我也不推薦你從它開(kāi)始?!?/p>

并不是他不喜歡 C。不管怎樣,Linux 是用GNU C 語(yǔ)言寫(xiě)就的?!拔沂冀K認(rèn)為 C 是一個(gè)偉大的語(yǔ)言,它有著非常簡(jiǎn)單的語(yǔ)法,對(duì)于很多方向的開(kāi)發(fā)都很合適,但是我懷疑你會(huì)遇到重重挫折,從你的第一個(gè)‘Hello World’程序開(kāi)始到你真正能開(kāi)發(fā)出能用的東西當(dāng)中有很大一步要走”。他認(rèn)為,用現(xiàn)在的標(biāo)準(zhǔn),如果作為入門(mén)語(yǔ)言的話(huà),從 C 語(yǔ)言開(kāi)始的代價(jià)太大。

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

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

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

如果不選 C 語(yǔ)言, 那選什么?

Linux 開(kāi)發(fā)者推薦的書(shū)籍自然都是他們認(rèn)為適合今時(shí)今日的開(kāi)發(fā)項(xiàng)目的語(yǔ)言工具。這也折射了開(kāi)發(fā)者自身的個(gè)人偏好。例如,Allison 認(rèn)為年輕的開(kāi)發(fā)者應(yīng)該在《Go 編程語(yǔ)言The Go Programming Language》和《Rust 編程Rust with Programming Rust》的幫助下去學(xué)習(xí) Go 語(yǔ)言和 Rust 語(yǔ)言。

但是超越編程語(yǔ)言來(lái)考慮問(wèn)題也不無(wú)道理(盡管這些書(shū)傳授了你編程技巧)。今日要做些有意義的開(kāi)發(fā)工作的話(huà),要從那些已經(jīng)完成了 99% 顯而易見(jiàn)工作的框架開(kāi)始,然后你就能?chē)@著它開(kāi)始寫(xiě)腳本了, Torvalds 推薦了這種做法。

“坦率來(lái)說(shuō),語(yǔ)言本身遠(yuǎn)遠(yuǎn)沒(méi)有圍繞著它的基礎(chǔ)架構(gòu)重要”,他繼續(xù)道,“可能你會(huì)從 Java 或者 Kotlin 開(kāi)始,但那是因?yàn)槟阆霝樽约旱?a href="http://www.ttokpm.com/v/tag/107/" target="_blank">手機(jī)開(kāi)發(fā)一個(gè)應(yīng)用,因此安卓 SDK 成為了最佳的選擇,又或者,你對(duì)游戲開(kāi)發(fā)感興趣,你選擇了一個(gè)游戲開(kāi)發(fā)引擎來(lái)開(kāi)始,而通常它們有著自己的腳本語(yǔ)言”。

這里提及的基礎(chǔ)架構(gòu)包括那些和操作系統(tǒng)本身相關(guān)的編程書(shū)籍。 Garner 在讀完了大名鼎鼎的 K&R 后又拜讀了 W. Richard Steven 的《Unix 網(wǎng)絡(luò)編程Unix Network Programming》。特別是,Steven 的《TCP/IP 詳解,卷1:協(xié)議TCP/IP Illustrated, Volume 1: The Protocols》在出版了 30 年之后仍然被認(rèn)為是必讀之書(shū)。因?yàn)?Linux 開(kāi)發(fā)很大程度上和和網(wǎng)絡(luò)基礎(chǔ)架構(gòu)有關(guān),Garner 也推薦了很多 O'Reilly 在Sendmail、Bash、DNS以及IMAP/POP等方面的書(shū)。

Coekaerts 也是 Maurice Bach 的《UNIX 操作系統(tǒng)設(shè)計(jì)The Design of the Unix Operation System》的書(shū)迷之一。James Bottomley 也是這本書(shū)的推崇者,作為一個(gè) Linux 內(nèi)核開(kāi)發(fā)者,當(dāng) Linux 剛剛問(wèn)世時(shí) James 就用 Bach 的這本書(shū)所傳授的知識(shí)將它研究了個(gè)底朝天。

軟件設(shè)計(jì)知識(shí)永不過(guò)時(shí)

盡管這樣說(shuō)有點(diǎn)太局限在技術(shù)領(lǐng)域。Stevens 還是說(shuō)到,“所有的開(kāi)發(fā)者都應(yīng)該在開(kāi)始鉆研語(yǔ)法前先研究如何設(shè)計(jì),《設(shè)計(jì)心理學(xué)The Design of Everyday Things》是我的最?lèi)?ài)”。

Coekaerts 喜歡 Kernighan 和 Rob Pike 合著的《程序設(shè)計(jì)實(shí)踐The Practic of Programming》。這本關(guān)于設(shè)計(jì)實(shí)踐的書(shū)當(dāng) Coekaerts 還在學(xué)校念書(shū)的時(shí)候還未出版,他說(shuō)道,“但是我把它推薦給每一個(gè)人”。

不管何時(shí),當(dāng)你問(wèn)一個(gè)長(zhǎng)期從事于開(kāi)發(fā)工作的開(kāi)發(fā)者他最喜歡的計(jì)算機(jī)書(shū)籍時(shí),你遲早會(huì)聽(tīng)到一個(gè)名字和一本書(shū):Donald Knuth 和他所著的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)(1-4A)The Art of Computer Programming, Volumes 1-4A》。VMware 首席開(kāi)源官 Dirk Hohndel,認(rèn)為這本書(shū)盡管有永恒的價(jià)值,但他也承認(rèn),“今時(shí)今日并非極其有用”。(LCTT 譯注:不代表譯者觀點(diǎn))

讀代碼。大量的讀。

編程書(shū)籍能教會(huì)你很多,也請(qǐng)別錯(cuò)過(guò)另外一個(gè)在開(kāi)源社區(qū)特有的學(xué)習(xí)機(jī)會(huì):《代碼閱讀方法與實(shí)踐Code Reading: The Open Source Perspective》。那里有不可計(jì)數(shù)的代碼例子闡述如何解決編程問(wèn)題(以及如何讓你陷入麻煩……)。Stevens 說(shuō),談到磨煉編程技巧,在他的書(shū)單里排名第一的“書(shū)”是 Unix 的源代碼。

“也請(qǐng)不要忽略從他人身上學(xué)習(xí)的各種機(jī)會(huì)?!?Cox 道,“我是在一個(gè)計(jì)算機(jī)俱樂(lè)部里和其他人一起學(xué)的 BASIC,在我看來(lái),這仍然是一個(gè)學(xué)習(xí)的最好辦法”,他從《精通 ZX81 機(jī)器碼Mastering machine code on your ZX81》這本書(shū)和 Honeywell L66 B 編譯器手冊(cè)里學(xué)習(xí)到了如何編寫(xiě)機(jī)器碼,但是學(xué)習(xí)技術(shù)這點(diǎn)來(lái)說(shuō),單純閱讀和與其他開(kāi)發(fā)者在工作中共同學(xué)習(xí)仍然有著很大的不同。

Cox 說(shuō),“我始終認(rèn)為最好的學(xué)習(xí)方法是和一群人一起試圖去解決你們共同關(guān)心的一些問(wèn)題并從中找到快樂(lè),這和你是 5 歲還是 55 歲無(wú)關(guān)”。

最讓我吃驚的是這些頂級(jí) Linux 開(kāi)發(fā)者都是在非常底層級(jí)別開(kāi)始他們的開(kāi)發(fā)之旅的,甚至不是從匯編語(yǔ)言或 C 語(yǔ)言,而是從機(jī)器碼開(kāi)始開(kāi)發(fā)。毫無(wú)疑問(wèn),這對(duì)幫助開(kāi)發(fā)者理解計(jì)算機(jī)在非常微觀的底層級(jí)別是怎么工作的起了非常大的作用。

那么現(xiàn)在你準(zhǔn)備好嘗試一下硬核 Linux 開(kāi)發(fā)了嗎?Greg Kroah-Hartman,這位 Linux 內(nèi)核穩(wěn)定分支的維護(hù)者,推薦了 Steve Oualline 的《實(shí)用 C 語(yǔ)言編程Practical C Programming》和 Samuel harbison 與 Guy Steels 合著的《C 語(yǔ)言參考手冊(cè)C: A Reference Manual》。接下來(lái)請(qǐng)閱讀如何進(jìn)行 Linux 內(nèi)核開(kāi)發(fā)HOWTO do Linux kernel development,到這時(shí),就像 Kroah-Hartman 所說(shuō),你已經(jīng)準(zhǔn)備好啟程了。

于此同時(shí),還請(qǐng)你刻苦學(xué)習(xí)并大量編碼,最后祝你在跟隨頂級(jí) Linux 開(kāi)發(fā)者腳步的道路上好運(yùn)相隨。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11123

    瀏覽量

    207918
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7575

    瀏覽量

    134098
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    【《軟件開(kāi)發(fā)珠璣》閱讀體驗(yàn)】+ 心得

    ,《軟件開(kāi)發(fā)珠璣》是一本值得每個(gè)軟件開(kāi)發(fā)者閱讀的書(shū)籍。它教會(huì)了我們?nèi)绾瘟私庑枨?、設(shè)計(jì)、項(xiàng)目管理,如何與團(tuán)隊(duì)合作以及如何持續(xù)學(xué)習(xí)和進(jìn)步。在未來(lái)的軟件開(kāi)發(fā)生涯中,我將繼續(xù)秉承書(shū)中的理念,努
    發(fā)表于 06-23 17:56

    關(guān)于學(xué)習(xí)Linux 編程的基本經(jīng)典書(shū)籍推薦

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

    做振動(dòng)監(jiān)測(cè)的,必不可少的基礎(chǔ)知識(shí)!

    做振動(dòng)監(jiān)測(cè)的,必不可少的基礎(chǔ)知識(shí)!
    發(fā)表于 03-23 09:53

    stm32用戶(hù)使用手冊(cè),學(xué)習(xí)32必不可少的資料

    stm32用戶(hù)使用手冊(cè),學(xué)習(xí)32必不可少的資料
    發(fā)表于 04-14 15:10

    杰出內(nèi)核開(kāi)發(fā)者華生平回顧

    追思心中璀璨的明星:杰出內(nèi)核開(kāi)發(fā)者
    發(fā)表于 07-22 15:58

    汽車(chē)車(chē)型開(kāi)發(fā)必不可少的CAE解析

    汽車(chē)車(chē)型開(kāi)發(fā)必不可少的CAE分析
    發(fā)表于 03-01 06:37

    學(xué)習(xí)嵌入式linux編程開(kāi)發(fā)應(yīng)該要必備什么條件呢

    嵌入式linux是嵌入式開(kāi)發(fā)必不可少的一份子,在科技高速發(fā)展的今天,嵌入式已然已經(jīng)成為了最熱門(mén)的技術(shù)之一了。對(duì)于想要學(xué)習(xí)好嵌入式的學(xué)員來(lái)說(shuō),現(xiàn)在學(xué)習(xí)好linux是很有必要的,因?yàn)檫@個(gè)是
    發(fā)表于 12-22 07:04

    大數(shù)據(jù)分析,半導(dǎo)體技術(shù)必不可少?

    進(jìn)行大數(shù)據(jù)分析時(shí),半導(dǎo)體技術(shù)是必不可少的。雖然存儲(chǔ)器本身的技術(shù)開(kāi)發(fā)也很重要,但對(duì)于大數(shù)據(jù)分析,使存儲(chǔ)器物盡其用的控制器和中間件的技術(shù)似乎更加重要。
    發(fā)表于 01-21 08:47 ?1711次閱讀

    物聯(lián)網(wǎng)發(fā)展中必不可少的RFID技術(shù)

    中國(guó)智造向5G時(shí)代智能發(fā)展,RFID是必不可少的應(yīng)用技術(shù)
    的頭像 發(fā)表于 08-20 10:03 ?3579次閱讀

    要成為鴻蒙開(kāi)發(fā)者,應(yīng)該學(xué)習(xí)哪些編程語(yǔ)言

    據(jù)了解,鴻蒙系統(tǒng)是基于Linux開(kāi)發(fā)的,源碼是C語(yǔ)言。那么,作為一名開(kāi)發(fā)者,如何幫助鴻蒙系統(tǒng)構(gòu)建生態(tài)呢?在以往安卓、蘋(píng)果系統(tǒng)構(gòu)建過(guò)程,有哪些可以值得借鑒的地方呢?要成為鴻蒙開(kāi)發(fā)者,應(yīng)該
    的頭像 發(fā)表于 09-24 12:06 ?1.3w次閱讀

    新手必看!掌握PLC技術(shù)閱讀手冊(cè)是必不可少的技巧

    掌握PLC技術(shù)閱讀手冊(cè)是必不可少的,特別當(dāng)新產(chǎn)品出來(lái)后,只有手冊(cè)是一手資料。除了新產(chǎn)品學(xué)習(xí)需要查看手冊(cè),工作中接觸到了任何設(shè)備,手冊(cè)都是最專(zhuān)業(yè)、最全面的資料。很多人不喜歡看手冊(cè),覺(jué)得手冊(cè)難懂,今天給
    的頭像 發(fā)表于 10-23 09:56 ?2574次閱讀
    新手必看!掌握PLC技術(shù)<b class='flag-5'>閱讀</b>手冊(cè)是<b class='flag-5'>必不可少</b>的技巧

    開(kāi)發(fā)工作中必不可少的5個(gè)工具

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

    汽車(chē)車(chē)型開(kāi)發(fā)必不可少的CAE分析資料下載

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

    涂鴉開(kāi)發(fā)者大會(huì)即將開(kāi)幕,賦能開(kāi)發(fā)者打造IoT發(fā)展新引擎

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

    華為云 classroom 賦能|tookIT 助力開(kāi)發(fā)者上云

    對(duì)于資深程序員而言,IDE 是必不可少的,它好比是劍客手中的寶劍,IDE 幫助程序員更快更絲滑的去編程,同時(shí)插件就是這把劍上的各種 Buff,為寶劍賦能,提供更好的升級(jí)打怪
    的頭像 發(fā)表于 08-31 15:26 ?378次閱讀
    華為云 classroom 賦能|tookIT 助力<b class='flag-5'>開(kāi)發(fā)者</b>上云