Linux程式設計就該這麼學!
首先,要學,你得會用Linux,也就是得在命令列環境下生存下來。
什麼叫生存下來呢?就是我現在給你一臺主機,鍵盤,顯示器啥的,然後給你一個伺服器版的Linux系統的光碟或者其他什麼安裝盤,你去把這臺主機用起來。什麼叫用起來呢?你平常用Windows電腦幹啥,你現在還用這臺電腦幹啥。新建檔案啊,檢視檔案,編輯檔案,儲存檔案,複製,移動,刪除,打包,解壓,聯網,下載個什麼東西啊等等基本操作你得會。
還有軟體怎麼安裝,不僅要熟悉apt-get和yum,還有給你原始碼的軟體怎麼安裝你得會,另外要熟悉Linux下的檔案系統,每個目錄是幹啥的,目錄下的檔案是幹嘛的,插入一個隨身碟,如何掛載這個隨身碟,操作隨身碟下的檔案你得會啊。建議看老段帶你學習鳥哥的Linux私房菜(基礎篇):,記得安裝Linux系統自己操作一遍,還有一本是伺服器篇,你既然是要學Linux程式設計開發,那就不用看伺服器架設篇了。做完這一步,你可以開發了。
Linux下開發,兩種基本語言,C和C++咯,至於其他人要說Python,Java,Ruby啥的不討論,因為就討論Linux下的開發,什麼是Linux開發呢?就是利用Linux的API進行開發咯,首先你得會C語言或者C++語言啊,這個去看丹尼斯的《C程式設計語言》,C++的就去看《Essential C++》或者《C++ Primer》,然後在Linux下的程式開發,Linux的API是遵循POSIX標準的,自行谷歌什麼叫POSIX。Linux下程式開發幾大塊,檔案操作,這個很重要,你要知道Linux下的一個思想叫一切皆檔案,可見檔案讀寫多重要了。I/O模型,五大I/O模型,阻塞,非阻塞,複用,訊號驅動和非同步I/O,環環相扣絲絲相連,概念和操作都要仔細琢磨,最重要的當屬複用,就是select,poll和epoll,面試筆試就問這個東西,要知道他們的適用範圍和優缺點。程式和執行緒,包括程式和執行緒的概念和區別,程式和執行緒的建立,同步,通訊,互斥等等。網路程式設計,就是socket程式設計,Linux程式設計,這個學不好等於啥都沒學,這個估計還得了解一下TCP/IP協議,程式設計方面主要是那幾步,申請socket,bind,listen,accept幾步,要熟悉種常見的伺服器模型,程式池執行緒池方式的,多程式方式的,複用方式的,最重要的是複用方式的,這部分可以先只寫伺服器,測試直接用Telnet就好了,加快速度麼。其餘的就是資料庫,這個東西不屬於Linux,但是還得會,要不然啥都做不了,看那本《MySQL必知必會》,當然深入的話還得找本專業的書細細看。這個時候就可以真刀真槍的去幹點有意思的事了,比如寫個終端下的類似於QQ的軟體啊,包括伺服器和客戶端啊,慢慢的增加併發數,比如可以同時支援五千人線上啊,檔案傳輸啊等等。然後學學Qt,熟悉一下圖形介面,可以把你的終端下的QQ完全改成圖形介面下的。估計到這個時候,你差不多在Linux下進行像樣的開發了吧。在這個過程的學習中,相信你已經學會Makefile的編寫啊,編譯啊,連結啊等等一些細枝末節的東西了,還得反思一下把零散的東西串一串,要系統化。
接下來就是繼續深入了,Linux為什麼這麼多人用,好處在哪裡,你得去稍微的看看核心原始碼啊,核心的進執行緒排程啊,我告訴你,Linux核心的一個連結串列都夠你研究好幾節課的。哦,這個時候,資料結構啥的又得翻出來加強一下了不是,計算機網路啥的也得看看,作業系統原理啥的也得看看呢不是,把這些東西放在這裡是合適的,前面讓你知其然,知道怎麼程式設計怎麼做,現在要知其所以然了。
在學習的過程中,要不斷積累和了解最新的東西,最起碼要知道個概念,比如分散式,大資料,雲端計算,機器學習,計算機視覺,JIT等等,形成知識鏈,這樣不會導致你最後不知道學啥。有個建議,一定要學一下Python,一定要學一下Python,一定要學一下Python,重要的事情說三遍。它能極大的提高你的工作效率,也能和C/C++結合在一起用,很nice的語言。
最後推薦幾本書(前面的包含在內):《鳥哥的Linux私房菜 基礎篇》、《Eensstial C++》、《深入理解Linux核心》、《深入理解計算機系統》等都是不錯的學習資料。學習地址:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/30605389/viewspace-2082037/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 《Linux就該這麼學》第四課Linux
- 《Linux就該這麼學》——基礎篇Linux
- 乾貨 | PHP就該這麼學!PHP
- 資料許可權就該這麼設計,yyyds!
- 《Linux 就該這麼學》書籍免費贈送 PDF 版本Linux
- Python就該這樣學?Python
- 程式設計師和女博士就這麼被黑了程式設計師
- 為什麼你應該學習程式設計程式設計
- 我該怎麼學習WEB程式設計呢?Web程式設計
- linux就該這麼學第8章使用 iSCSI 服務部署網路儲存Linux
- 搞懂了這幾點,你就學會了Web程式設計Web程式設計
- 學生黨學程式設計,有這個開源專案就夠了!程式設計
- 設計模式該怎麼學呀設計模式
- 為什麼程式設計師應該從現在就開始看書程式設計師
- 【備戰春招/秋招系列】程式設計師的簡歷就該這樣寫程式設計師
- 為什麼你該開始學習程式設計了?程式設計
- 為什麼應該投資程式設計師的學習?程式設計師
- 程式設計師在週末應該學點什麼程式設計師
- Linux就該這麼學:重定向,管道符,萬用字元,轉義符,環境變數Linux字元變數
- 程式設計師職場遇到這樣的事該怎麼辦呢?程式設計師
- 程式設計師就業前景如何?看看這些報告怎麼說程式設計師就業
- 漫談程式設計師系列:程式設計師的生活就這樣嗎程式設計師
- 學程式設計要看什麼書?我想了下,最受歡迎的應該是這幾本程式設計
- 零基礎剛接觸程式設計,該怎麼學?程式設計
- 如何學習shell程式設計?Linux運維學習shell程式設計是什麼程式設計Linux運維
- 程式設計之旅,我該怎麼走?程式設計
- 應該怎麼管理程式設計師?程式設計師
- 再不學程式設計,你就成文盲了程式設計
- 再不學程式設計 你就成文盲了程式設計
- 物件導向程式設計,看這篇就夠了物件程式設計
- 站在風口上的程式設計師,就應該有高收入!程式設計師
- 學習Linux之前需要掌握程式設計能力麼?Linux程式設計
- 年終了,程式設計師應該這樣談加薪!程式設計師
- 小程式的ui應該怎麼設計?UI
- 程式設計師修神之路--分散式系統設計理念這麼難學?程式設計師分散式
- 年終了,程式設計師這樣談加薪就穩了!程式設計師
- 如果當初學習程式設計時能有人給我這些忠告該多好程式設計
- 五分鐘自學程式設計:計算機網路到底應該怎麼學?!程式設計計算機網路