自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Linux的修煉之道:從小工到專家

企業(yè)動(dòng)態(tài)
從那時(shí)候開始,我在Linux平臺(tái)上度過(guò)了很多編程時(shí)光,從Linux和Linux社區(qū)中學(xué)到了很多,我必須得說(shuō),通過(guò)學(xué)習(xí)Linux,我變成了一個(gè)更好的程序員。

 作者:CoderCat

原文地址:https://www.coderscat.com/how-to-learn-linux

翻譯:碼農(nóng)翻身,已獲翻譯授權(quán)

前言

我依然記得在2004年我剛開始使用Ubuntu 4.04的日子,作為學(xué)生,可以在Ubuntu網(wǎng)站上申請(qǐng)免費(fèi)的安裝盤,幾天以后,一個(gè)包含CD的包裹就到了:

 

從那時(shí)候開始,我在Linux平臺(tái)上度過(guò)了很多編程時(shí)光,從Linux和Linux社區(qū)中學(xué)到了很多,我必須得說(shuō),通過(guò)學(xué)習(xí)Linux,我變成了一個(gè)更好的程序員。

如果你有志于在計(jì)算機(jī)編程領(lǐng)域長(zhǎng)久地發(fā)展,一定要學(xué)習(xí)Linux,但是到底學(xué)習(xí)什么?怎么學(xué)習(xí)?

這是一份給初學(xué)者從零開始學(xué)Linux的指南。

為什么要學(xué)習(xí)Linux?

也許你聽說(shuō)過(guò)Linux是黑客的一個(gè)很酷的工具,或者Linux對(duì)開發(fā)人員更加友好, 我認(rèn)為學(xué)習(xí)Linux有三個(gè)原因:

1. Linux統(tǒng)治了服務(wù)器市場(chǎng)

大多數(shù)服務(wù)器都跑Linux, 程序員尤其是Web程序員,你的程序也會(huì)跑在Linux上,你需要在Linux上部署代碼,維護(hù)服務(wù)器。

2. 學(xué)習(xí)系統(tǒng)級(jí)和底層編程

隨著物聯(lián)網(wǎng)的來(lái)臨,更多的軟件涉及到底層編程,使用C/C++編程是基本要求,這種開發(fā)通常需要精通Linux技能。

3. 通過(guò)Linux學(xué)習(xí)計(jì)算機(jī)的基礎(chǔ)知識(shí)

Linux是個(gè)開源項(xiàng)目,全世界成千上萬(wàn)的人在維護(hù)它,有很多關(guān)于Linux內(nèi)部知識(shí)的資源和優(yōu)秀書籍,對(duì)學(xué)習(xí)操作系統(tǒng)有極大幫助。

Linux學(xué)習(xí)指南

對(duì)Linux的學(xué)習(xí)分為幾個(gè)層次:

1. 日常使用

2. 在Linux上進(jìn)行應(yīng)用開發(fā),操作和維護(hù)

3. 系統(tǒng)級(jí)開發(fā)

4. 內(nèi)核開發(fā)

很明顯,需要一層層地學(xué)習(xí),越往下越難。

碼農(nóng)翻身注:

對(duì)于普通程序員來(lái)說(shuō),做到第二層就差不多了。

對(duì)于想成為某個(gè)領(lǐng)域?qū)<业某绦騿T,需要達(dá)到第三層。

最后一層可能只有少數(shù)人,他們可能是自由職業(yè)者,黑客,還有不少是大公司的員工。

在開始有趣的旅程之前,先來(lái)推薦一本Linus Torvalds的自傳:

 

日常使用

這包括:

  • 如何login , logout
  • 如何聯(lián)網(wǎng)
  • 如何打開命令行窗口
  • 如何使用命令行安裝/卸載軟件
  • 如何編輯文本文件
  • 如何創(chuàng)建,移動(dòng),刪除文件
  • 如何查看壓縮文件,提取內(nèi)容。

這個(gè)階段最難的部分就是從圖形界面轉(zhuǎn)向命令行。我的建議是就像學(xué)游泳那樣,把自己扔到水里。不入水永遠(yuǎn)都學(xué)不會(huì)游泳。

 

所以,一定要在你的PC上安裝一個(gè)Linux。你可以使用多系統(tǒng),但是不要嘗試虛擬機(jī),因?yàn)槟愫苋菀拙蜁?huì)放棄Linux。

到底使用哪個(gè)版本的Linux呢?現(xiàn)在可能有十個(gè)常見的版本,選擇最主流的就好,比如Ubuntu, CentOS等。他們直接的主要區(qū)別就是GUI和軟件包管理方式。

Linux上的應(yīng)用開發(fā)

Linux上有各種各樣的應(yīng)用開發(fā),例如Web應(yīng)用,桌面GUI應(yīng)用,命令行等等。

你可能需要學(xué)習(xí)Web開發(fā),C/C++/Python或者其他編程語(yǔ)言。

在Linux上做開發(fā)和在Windows上的體驗(yàn)不同,這里通常沒(méi)有一個(gè)強(qiáng)大的IDE。大部分時(shí)候,你的工具鏈?zhǔn)且幌盗械男」ぞ撸阈枰趕hell中把他們“連”在一起。

 

你需要學(xué)習(xí)的是:

  • 在一個(gè)編輯器中寫代碼, 常見的編輯器是Vim/Emacs/VSCode
  • 如何編譯你的程序
  • 如何從命令行啟動(dòng)你的程序
  • 使用調(diào)試器來(lái)尋找bug

學(xué)習(xí)一些Shell腳本編程必不可少, 至少你得學(xué)到能看懂常見Shell的水平。

現(xiàn)在很多程序員更喜歡Python/Ruby, 但是仍然有很多之前開發(fā)的shell腳本需要維護(hù)。

你需要建立屬于你自己的Linux開發(fā)環(huán)境。把配置文件都記錄下來(lái)(比如使用Git)。如果你的開發(fā)環(huán)境搞得很好,編程的效率會(huì)有五倍提升。

 

《Linux Bible》 and 《Linux命令行大全》會(huì)對(duì)命令行和開發(fā)環(huán)境有個(gè)非常好的介紹。

碼農(nóng)翻身注:在國(guó)內(nèi),自然是《鳥哥的Linux私房菜》了。

在這一階段花費(fèi)的學(xué)習(xí)時(shí)間比較長(zhǎng),要保持耐心。

系統(tǒng)級(jí)開發(fā)

如果你的目標(biāo)是開發(fā)那些“底層”的軟件,比如存儲(chǔ)程序,網(wǎng)絡(luò)程序,那必須要進(jìn)入這一層次。

系統(tǒng)級(jí)編程和應(yīng)用層編程大不相同,主要涉及操作系統(tǒng)和網(wǎng)絡(luò)的東西。

你需要學(xué)習(xí)那些Linux內(nèi)核對(duì)外提供的接口,由于歷史和性能的原因,大部分都是C語(yǔ)言的。

使用GDB來(lái)調(diào)試程序也是必備的技能,你可以參考《Debuging with GDB》,Valgrind 是另外一個(gè)有用的內(nèi)存檢查工具。

 

《Linux 系統(tǒng)編程》,《Linux系統(tǒng)編程手冊(cè)》都是非常好的書。

網(wǎng)絡(luò)是系統(tǒng)編程的一個(gè)重要編程領(lǐng)域,《Unix網(wǎng)絡(luò)編程》是你最好的選擇。

能走到這個(gè)階段可是不簡(jiǎn)單,只有很少程序員有使用C/C++編程的能力,現(xiàn)代的程序員一般使用更加高級(jí)的編程語(yǔ)言例如Python, Ruby ,Java。

技術(shù)潮起潮落,但是基礎(chǔ)總是不變,系統(tǒng)編程的核心知識(shí)能提升你的技能,擴(kuò)展你的設(shè)計(jì)能力。

內(nèi)核開發(fā)

成為內(nèi)核開發(fā)人員,那要求可是相當(dāng)高,能走到這一步,你將是一位受人景仰的英雄人物。 在這個(gè)時(shí)候,你應(yīng)該已經(jīng)學(xué)過(guò)操作系統(tǒng)的課程了。

內(nèi)核包含很多子模塊:內(nèi)存管理,進(jìn)程調(diào)度,虛擬內(nèi)存,文件系統(tǒng),設(shè)備管理等。還有很多輔助開發(fā)的命令:readelf, nm, ipcs, iostat, objdump, free, chrt, pmap, uptime, top, pidstat, etc.

 

Robot Love寫的《Linux Kernel Development》是講述內(nèi)核開發(fā)最好的入門書, 它會(huì)給你提供一個(gè)很好的內(nèi)核概覽。

中文版名稱是《Linux 內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》,由陳莉君教授翻譯。

 

還有一些內(nèi)核開發(fā)的好書:

《現(xiàn)代操作系統(tǒng)》

《深入理解LINUX內(nèi)核》

《深入Linux內(nèi)核架構(gòu)》

切記,Linux內(nèi)核開發(fā)的領(lǐng)域太多,初學(xué)者不可能同時(shí)涉及所有領(lǐng)域。你的學(xué)習(xí)策略應(yīng)該是:

1. 獲取Linux內(nèi)核的概覽。

一個(gè)好方法就是讀《Linux 內(nèi)核設(shè)計(jì)與實(shí)現(xiàn)》,或者去讀一下Linux早期版本的源碼,因?yàn)榇a要少很多,這里有很多早期的版本:https://mirrors.edge.kernel.org/pub/linux/kernel/Historic/old-versions/

大約兩周的時(shí)間就可以完成。

碼農(nóng)翻身注:兩周的時(shí)間太短了!

MIT開發(fā)的教學(xué)操作系統(tǒng)xv6也是一個(gè)不錯(cuò)的選擇:https://pdos.csail.mit.edu/6.828/2012/xv6.html

2 專注在特定子模塊

選一個(gè)你最感興趣的模塊,試圖理解它的設(shè)計(jì)和細(xì)節(jié),參與內(nèi)核開發(fā)的社區(qū),閱讀相關(guān)的文檔,加入Linux的mail list;查看別人的補(bǔ)丁,提交你的補(bǔ)丁。

Linux內(nèi)核社區(qū)有自己的協(xié)作風(fēng)格,你需要學(xué)習(xí)這些規(guī)則。

你的第一個(gè)被接受的補(bǔ)丁,將會(huì)是你的一個(gè)里程碑,當(dāng)你在一個(gè)領(lǐng)域內(nèi)有了足夠的知識(shí)和技能后,切換到別的領(lǐng)域會(huì)變的簡(jiǎn)單。

成為內(nèi)核開發(fā)的大師需要花費(fèi)很多年時(shí)間,快樂(lè)地編程吧!

相關(guān)鏈接:

Linux 內(nèi)核接口: https://en.wikipedia.org/wiki/Linux_kernel_interfaces

Valgrind : http://valgrind.org/

https://www.coderscat.com/to-be-a-programmer

Linux HowTo : https://www.kernel.org/doc/html/v4.16/process/howto.html

Linux 郵件列表 : https://lkml.org/

xv6閱讀資料: https://pdos.csail.mit.edu/6.828/2019/reference.html

【本文為51CTO專欄作者“劉欣”的原創(chuàng)稿件,轉(zhuǎn)載請(qǐng)通過(guò)作者微信公眾號(hào)coderising獲取授權(quán)】

 

戳這里,看該作者更多好文

 

責(zé)任編輯:武曉燕 來(lái)源: 51CTO專欄
相關(guān)推薦

2018-06-29 14:48:24

數(shù)據(jù)庫(kù)MySQL必讀書籍

2013-11-11 09:26:50

編程思考

2025-01-24 00:00:00

JavaHotSpot虛擬機(jī)

2017-03-08 13:12:44

編程學(xué)習(xí)

2017-07-11 09:35:10

大數(shù)據(jù)linuxjava

2010-11-17 16:41:49

Bug軟件測(cè)試

2009-11-30 17:33:07

微軟

2009-10-26 17:36:13

Oracle管理員DBA

2017-10-10 17:36:14

大數(shù)據(jù)語(yǔ)言人工智能

2015-11-12 16:26:46

編程編碼套路code kata

2023-11-08 09:10:23

pytestPython

2012-07-05 09:37:04

Java程序員

2009-09-16 17:29:38

Ruby on RaiDave Thomas

2010-07-01 10:24:30

UML小工具

2015-07-28 15:45:23

理財(cái)

2009-08-06 15:35:54

敏捷中國(guó)大會(huì)AgileChina

2009-11-27 09:07:38

程序員

2022-04-27 19:07:19

技術(shù)

2009-04-15 10:02:21

2009-08-05 11:54:04

互聯(lián)網(wǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)