扣丁學(xué)堂Linux培訓(xùn)之Linux開發(fā)工程師編程書籍推薦
2018-11-30 14:09:17
1144瀏覽
今天扣丁學(xué)堂Linux培訓(xùn)老師給大家分享一下關(guān)于Linux開發(fā)工程師的編程書籍推薦,首先Linux是由那些擁有深厚計(jì)算機(jī)知識(shí)背景而且才華橫溢的程序員發(fā)明的。讓那些大名鼎鼎的Linux程序員向如今的開發(fā)者分享一些曾經(jīng)帶領(lǐng)他們登堂入室的好書和技術(shù)參考資料吧,你會(huì)不會(huì)也讀過其中幾本呢?下面我們一起來看一下吧。
熠熠生輝的C語言
Linux是在大約上世紀(jì)90年代開發(fā)出來的,與它一起問世的還有其他一些完成基礎(chǔ)功能的開源軟件。與此相應(yīng),那時(shí)的開發(fā)者使用的工具和語言反映了那個(gè)時(shí)代的印記,也就是說C語言。可能C語言不再流行了,可對(duì)于很多已經(jīng)建功立業(yè)的開發(fā)者來說,C語言是他們的第一個(gè)在實(shí)際開發(fā)中使用的語言,這一點(diǎn)也在他們推選的對(duì)他們有著深遠(yuǎn)影響的書單中反映出來。
Torvalds說,“你不應(yīng)該再選用我那個(gè)時(shí)代使用的語言或者開發(fā)方式”,他的開發(fā)道路始于BASIC,然后轉(zhuǎn)向機(jī)器碼(“甚至都不是匯編語言,而是真真正正的‘二進(jìn)制’機(jī)器碼”,他解釋道),再然后轉(zhuǎn)向匯編語言和C語言。
“任何人都不應(yīng)該再從這些語言開始進(jìn)入開發(fā)這條路了”,他補(bǔ)充道?!斑@些語言中的一些今天已經(jīng)沒有什么意義(如BASIC和機(jī)器語言)。盡管C還是一個(gè)主流語言,我也不推薦你從它開始?!?br />
并不是他不喜歡C。不管怎樣,Linux是用GNUC語言寫就的?!拔沂冀K認(rèn)為C是一個(gè)偉大的語言,它有著非常簡單的語法,對(duì)于很多方向的開發(fā)都很合適,但是我懷疑你會(huì)遇到重重挫折,從你的第一個(gè)‘HelloWorld’程序開始到你真正能開發(fā)出能用的東西當(dāng)中有很大一步要走”。他認(rèn)為,用現(xiàn)在的標(biāo)準(zhǔn),如果作為入門語言的話,從C語言開始的代價(jià)太大。
在他那個(gè)時(shí)代,Torvalds的唯一選擇的書就只能是BrianW.Kernighan和DennisM.Ritchie合著的《C編程語言,第二版CProgrammingLanguage,2ndEdition》,它在編程圈內(nèi)也被尊稱為K&R?!斑@本書簡單精煉,但是你要先有編程的背景才能欣賞它”,Torvalds說到。
Torvalds并不是唯一一個(gè)推薦K&R的開源開發(fā)者。以下幾位也同樣引用了這本他們認(rèn)為值得推薦的書籍,他們有:Linux和Oracle虛擬化開發(fā)副總裁WimCoekaerts;Linux開發(fā)者AlanCox;Google云CTOBrianStevens;Canonical技術(shù)運(yùn)營部副總裁PeteGraner。
如果你今日還想同C語言較量一番的話,Samba的共同創(chuàng)始人JeremyAllison推薦《C程序設(shè)計(jì)新思維21stCenturyC:CTipsfromtheNewSchool》。他還建議,同時(shí)也去閱讀一本比較舊但是寫的更詳細(xì)的《C專家編程ExpertCProgramming:DeepCSecrets》和有著20年歷史的《POSIX多線程編程ProgrammingwithPOSIXThreads》。
如果不選C語言,那選什么?
Linux開發(fā)者推薦的書籍自然都是他們認(rèn)為適合今時(shí)今日的開發(fā)項(xiàng)目的語言工具。這也折射了開發(fā)者自身的個(gè)人偏好。例如,Allison認(rèn)為年輕的開發(fā)者應(yīng)該在《Go編程語言TheGoProgrammingLanguage》和《Rust編程RustwithProgrammingRust》的幫助下去學(xué)習(xí)Go語言和Rust語言。
但是超越編程語言來考慮問題也不無道理(盡管這些書傳授了你編程技巧)。今日要做些有意義的開發(fā)工作的話,要從那些已經(jīng)完成了99%顯而易見工作的框架開始,然后你就能圍繞著它開始寫腳本了,Torvalds推薦了這種做法。
“坦率來說,語言本身遠(yuǎn)遠(yuǎn)沒有圍繞著它的基礎(chǔ)架構(gòu)重要”,他繼續(xù)道,“可能你會(huì)從Java或者Kotlin開始,但那是因?yàn)槟阆霝樽约旱氖謾C(jī)開發(fā)一個(gè)應(yīng)用,因此安卓SDK成為了最佳的選擇,又或者,你對(duì)游戲開發(fā)感興趣,你選擇了一個(gè)游戲開發(fā)引擎來開始,而通常它們有著自己的腳本語言”。
這里提及的基礎(chǔ)架構(gòu)包括那些和操作系統(tǒng)本身相關(guān)的編程書籍。Garner在讀完了大名鼎鼎的K&R后又拜讀了W.RichardSteven的《Unix網(wǎng)絡(luò)編程UnixNetworkProgramming》。特別是,Steven的《TCP/IP詳解,卷1:協(xié)議TCP/IPIllustrated,Volume1:TheProtocols》在出版了30年之后仍然被認(rèn)為是必讀之書。因?yàn)長inux開發(fā)很大程度上和和網(wǎng)絡(luò)基礎(chǔ)架構(gòu)有關(guān),Garner也推薦了很多O'Reilly在Sendmail、Bash、DNS以及IMAP/POP等方面的書。
Coekaerts也是MauriceBach的《UNIX操作系統(tǒng)設(shè)計(jì)TheDesignoftheUnixOperationSystem》的書迷之一。JamesBottomley也是這本書的推崇者,作為一個(gè)Linux內(nèi)核開發(fā)者,當(dāng)Linux剛剛問世時(shí)James就用Bach的這本書所傳授的知識(shí)將它研究了個(gè)底朝天。
軟件設(shè)計(jì)知識(shí)永不過時(shí)
盡管這樣說有點(diǎn)太局限在技術(shù)領(lǐng)域。Stevens還是說到,“所有的開發(fā)者都應(yīng)該在開始鉆研語法前先研究如何設(shè)計(jì),《設(shè)計(jì)心理學(xué)TheDesignofEverydayThings》是我的最愛”。
Coekaerts喜歡Kernighan和RobPike合著的《程序設(shè)計(jì)實(shí)踐ThePracticofProgramming》。這本關(guān)于設(shè)計(jì)實(shí)踐的書當(dāng)Coekaerts還在學(xué)校念書的時(shí)候還未出版,他說道,“但是我把它推薦給每一個(gè)人”。
不管何時(shí),當(dāng)你問一個(gè)長期從事于開發(fā)工作的開發(fā)者他最喜歡的計(jì)算機(jī)書籍時(shí),你遲早會(huì)聽到一個(gè)名字和一本書:DonaldKnuth和他所著的《計(jì)算機(jī)程序設(shè)計(jì)藝術(shù)(1-4A)TheArtofComputerProgramming,Volumes1-4A》。VMware首席開源官DirkHohndel,認(rèn)為這本書盡管有永恒的價(jià)值,但他也承認(rèn),“今時(shí)今日并非極其有用”。(LCTT譯注:不代表譯者觀點(diǎn))
讀代碼。大量的讀。
編程書籍能教會(huì)你很多,也請(qǐng)別錯(cuò)過另外一個(gè)在開源社區(qū)特有的學(xué)習(xí)機(jī)會(huì):《代碼閱讀方法與實(shí)踐CodeReading:TheOpenSourcePerspective》。那里有不可計(jì)數(shù)的代碼例子闡述如何解決編程問題(以及如何讓你陷入麻煩……)。Stevens說,談到磨煉編程技巧,在他的書單里排名第一的“書”是Unix的源代碼。
“也請(qǐng)不要忽略從他人身上學(xué)習(xí)的各種機(jī)會(huì)?!盋ox道,“我是在一個(gè)計(jì)算機(jī)俱樂部里和其他人一起學(xué)的BASIC,在我看來,這仍然是一個(gè)學(xué)習(xí)的最好辦法”,他從《精通ZX81機(jī)器碼MasteringmachinecodeonyourZX81》這本書和HoneywellL66B編譯器手冊(cè)里學(xué)習(xí)到了如何編寫機(jī)器碼,但是學(xué)習(xí)技術(shù)這點(diǎn)來說,單純閱讀和與其他開發(fā)者在工作中共同學(xué)習(xí)仍然有著很大的不同。
Cox說,“我始終認(rèn)為最好的學(xué)習(xí)方法是和一群人一起試圖去解決你們共同關(guān)心的一些問題并從中找到快樂,這和你是5歲還是55歲無關(guān)”。
最讓我吃驚的是這些頂級(jí)Linux開發(fā)者都是在非常底層級(jí)別開始他們的開發(fā)之旅的,甚至不是從匯編語言或C語言,而是從機(jī)器碼開始開發(fā)。毫無疑問,這對(duì)幫助開發(fā)者理解計(jì)算機(jī)在非常微觀的底層級(jí)別是怎么工作的起了非常大的作用。
那么現(xiàn)在你準(zhǔn)備好嘗試一下硬核Linux開發(fā)了嗎?GregKroah-Hartman,這位Linux內(nèi)核穩(wěn)定分支的維護(hù)者,推薦了SteveOualline的《實(shí)用C語言編程PracticalCProgramming》和Samuelharbison與GuySteels合著的《C語言參考手冊(cè)C:AReferenceManual》。接下來請(qǐng)閱讀如何進(jìn)行Linux內(nèi)核開發(fā)HOWTOdoLinuxkerneldevelopment,到這時(shí),就像Kroah-Hartman所說,你已經(jīng)準(zhǔn)備好啟程了。
以上就是關(guān)于扣丁學(xué)堂Linux培訓(xùn)之Linux開發(fā)工程師編程書籍推薦的詳細(xì)介紹,于此同時(shí),還請(qǐng)你刻苦學(xué)習(xí)并大量編碼,最后扣丁學(xué)堂有專業(yè)老師制定的Linux學(xué)習(xí)路線圖輔助學(xué)員學(xué)習(xí),此外還有與時(shí)俱進(jìn)的Linux課程體系和Linux視頻直播課供大家學(xué)習(xí),想要學(xué)好Linux開發(fā)技術(shù)的小伙伴快快行動(dòng)吧??鄱W(xué)堂Linux技術(shù)交流群:422345477。
【關(guān)注微信公眾號(hào)獲取更多學(xué)習(xí)資料】
查看更多關(guān)于“Linux培訓(xùn)資訊”的相關(guān)文章>>
標(biāo)簽:
Linux培訓(xùn)
Linux視頻教程
紅帽Linux視頻
Linux學(xué)習(xí)視頻
Linux入門視頻