標籤:

自學電腦編程需要哪些書?

我是高二學生 以前從未接觸過編程 最近開始想要學編程 我都需要學哪些呢 還有 我買了幾本書 那本應該主要學?《大學計算機基礎教程 杜友福》《計算機操作系統》《電路與模擬電子技術》《c程序設計譚浩強》 而且能不能告訴我還需要什麼書?


程序員必讀書單 - _Luc_ - 博客園

這是全網最全最經典的書單沒有之一,將程序員所應掌握的知識分成三個大類19個關鍵概念,對於每個概念提供了入門、必讀經典以及延伸閱讀的書單,我目測一下都非常合理。

我正在刷這個書單,有同樣計劃的可以私信我一起互相監督。

刷完這個書單,並吸收不錯的話,可以進入任何一家你想進入的公司。

update:更新了鏈接


非計算機專業出身,因為興趣轉行,一個月前正式成為一名碼農。以個人自學經歷,給題主做個參考。

因為你才高二,所以那些高大上的計算機書籍暫時就不推薦了。因為信息密度高,理論性強,學習起來比較枯燥又容易挫傷信心。你現在主要需要的是:培養自學能力、獨立思考能力,習慣去搜索資料、解答疑惑,多動手,邊學邊實踐。對了還有,一定要學好英語!!要不然一定會後悔的!唉……說多了都是淚啊!

我入門時看的第一本書的確是譚浩強的《c程序設計》,我覺得拿來入門是可以的,因為入門之後還有很多其他的書要讀,讀的多了,很多坑都會被填上的,你不要擔心。但是我建議你讀c語言書籍之前,先讀這本書:計算機科學導論 (豆瓣),這是當時 @林建入 推薦的書,牆裂推薦,參考:學習C語言基本思路與參考書籍 - 林建入的軟體設計之路 - 知乎專欄。看完之後你就有了一個計算機科學體系的框架,專欄內其他的書也牆裂推薦看。

我看的第二本c語言書是:C語言大全 (豆瓣)。這本書里有c語音基礎部分,c標準庫的函數及用法。最關鍵的是從這本書里我第一次接觸到了基本的數據結構和演算法,講的很簡單,也容易理解。但書的最後一部分那個」c語言解釋程序「當時對我來說,太有難度了,就略過去了沒看,至今也沒把這坑補上。

然後就接觸到了C和指針 (豆瓣)、C陷阱與缺陷 (豆瓣)、你必須知道的495個C語言問題 (豆瓣),才知道:"-/|"[i] 這尼瑪原來是在用數組指針訪問元素。原來程序里莫名奇妙的錯誤,書裡面都有,相見恨晚啊有木有!

終於有一天我厭煩了控制台的黑白屏幕,做出來的東西只有一個黑黑的方框,這不是我想要的生活。於是我找到了Windows程序設計 (豆瓣)這本奇書,開始了我Windows平台的挖坑之路。從Windows的消息機制,到窗口的創建,控制項的添加,事件的響應處理,窗口繪圖,線程,多媒體,網路。期間也製作了一些小程序,比如:記事本、貪吃蛇、俄羅斯方塊等等。不要臉的我要貼代碼了:songbaoming/Tetris · GitHub,大牛慎點!雖然每一步我一個人都走的很艱難,但最終我學會了,滿滿的成就感,我離走上人生巔峰又近了一步呢!

就先寫到這兒吧,估計這些入門已經夠你看上一陣子了。如果你選擇了走IT路,後面的演算法啦、數據結構啦、離散數學啊、資料庫啊、編譯原理啊、計算機系統啦等等等等,等到你考上大學相關專業,自然都是你的菜,慢慢消化吧。

對了,還有個專欄文章牆裂推薦: @蕭井陌 |編程入門指南 v1.3 - 蕭井陌的專欄 - 知乎專欄。

最後強調:一定要多動手!還有學好英語!!

後面的故事如果想看,我再陸續更(不要臉的毛病又發作了……)……


自學神器:

計算機專業體系匯總


白天手機比較倉促,現在再寫一遍,也是對自己的一點總結。匿了。

你才高二,而且只是為了編程。你那本電路與模擬電子技術碰都別碰。計算機方向要學也是數字電子技術,知道個門電路和布爾代數基礎就完了,沒有幾個程序員還知道施密特觸發器的結構。我會告訴你我大學學了一年數電模電都不知道是啥玩意么。

而且你說最近才想開始學編程,又是高中生,那你學一門語言就完全夠了。鑒於C/C++很可能會打擊你的積極性。憑興趣的初學者最重要就是能得到良好的反饋了,又不是靠這個混飯吃的人,硬著頭皮也得上。推薦從Python入手,我覺得《Programming in Python》不錯,有中譯本,可以順帶學到一點資料庫知識。很快你就可以學會寫個爬蟲什麼的,形成正反饋,你覺得有意思了,再學深入的才能耐得住性子。

編程語言有很多種。你可能會聽說各種程序員笑話里他們會永不休止地爭論哪種語言更優秀。這些你都不用理。

你要理解的是,編程就是寫論文回答某些問題。學會一門編程語言,比如C,相當於你上了中國語文課,但如果你需要用中文寫一篇討論中國歷史的論文,那麼你必須再上歷史課。當然,語文課畢竟以各種文本材料為基礎,所以你在上語文課時或多或少會接觸到歷史政治之類的課文,但這些並不能代替政治課和歷史課。所以學了C++之後,比如如果你想搞數據挖掘,你就得學數據挖掘。(廢話)。

理論上,所有高級語言都是等價的。正如你可以用中文英文德文寫哲學論文,都可以。

但是不同的編程語言可能適用場景不一樣。比如很多哲學辭彙是從德語來的,所以搞哲學的人可能得學德語。社會學在美國最為昌盛,搞社會學就一定得會英語。做中國古代史就一定要學古代漢語,學醫一定要學拉丁語。

再比如,中文在表達哲學概念時並不夠精確,時態也比較模糊,用德文就精確一些。法文是當下還活著的語言里文法很精準的,歧義少,所以很多國際法文本都用法文寫。

所以後台多用PHP,寫3D遊戲多用C++,想進阿里最好學JAVA,大概就這樣。未完待續。

如果你數學基礎不錯,(我不記得我高中學過什麼了,感覺大學也沒學什麼。。。不知道高中數學基礎不錯是怎樣,總之你翻開書看看你能不能看懂。),有可能的話再學一門數據結構和一門演算法導論。估計很難。如果基礎很強估計就不會直接知乎提問了。。。

平常電腦用個Linux系列的系統,沒接觸過編程估計你也沒用過Linux,那你裝個Ubuntu就行,別玩遊戲。善用google,不想翻牆就試試其鏡像站,比如在地址欄輸入Glgoo 搜索_谷歌搜索引擎有驚喜,開個博客記錄學習心得,去Github觀摩下大神,Stackoverflow要翻牆,看你願不願意吧。而且Stackoverflow上小白問題挺多,相對比較友善,嗯。

操作系統,計算機組成原理,體系結構,編譯原理,這些都是對優秀本科畢業生的要求,你沒有那麼多時間的。舉個栗子,給我帶路的大哥也是跨行搞的CS,本科學的通信,這些基礎課都還沒有補上,現在一樣去CMU,編程屌屌的。但如果想更屌一點,要熟悉底層,確實應該學,但不是你現在需要考慮的。

恭喜你,你已經達到計算機本科真學渣們的水平。(?ω?)

書的話,用課程對應的英文教材中譯本就行了。最好是上網易公開課或者網易雲課堂跟著學,既有編程語言入門,也有高階課程,我以前就是跟著MIT的演算法導論公開課學的,上課的是神作《演算法導論》的作者之一Leiserson,老頭講得非常有意思,助理年輕人很幽默,英語語速也適中,數學起點要求不高,注意是起點,但最終難度很高,或者說有意思,你懂吧,有意思。學完記得自己試著實現一遍,用你熟悉的語言。就算你現在用不到或學不懂,只要你想編程能力更高,你早晚會來讀這本書的。你先記下,拜個神仙。

記得把譚浩強的書燒掉。這個已經有太多人說過了,不能更黑,沒想到譚老還在禍害年輕人。


高中語文必修一到五 唐詩宋詞選讀 史記選讀

高中數學必修一到五 選修2-1到2-4 選修4系列

高中英語模塊一到模塊十一

高中物理必修一 必修二 選修3-3 3-4 3-5

五年高考三年模擬

五年高考三年模擬

五年高考三年模擬

你已經高二了,升高三? 就算搞noip也晚了,知乎目前的環境不考個985都混不下去,建議好好高考。如果你是全能大神當我沒說。


計蒜客:計蒜客 - 讓學習更有味

實驗樓:實驗樓 - 第一家以實驗為核心的IT在線教育平台

蕭井陌的專欄 - 編程入門指南 v1.2

http://zhuanlan.zhihu.com/xiao-jing-mo/19959253

計算機專業課程匯總 - 雲課堂

計算機專業體系匯總

程序員必修的中文MOOC匯總 | Hello World

http://blog.sunner.cn/recommended-mooc-for-programmers/


一本《C Primer Plus》,後面就是《演算法導論》,《現代操作系統》,《計算機網路自頂向下方法》,《計算機體系結構量化研究方法》。不過還是建議題主考個好大學,以後有的是機會學


@楊洪堯 先看這本書:How to Design Programs

看完之前別上知乎,知乎的誤人子弟之人太多了。。

---

別踏馬亂放那個所謂的「自學神器」鏈接好不好,答主是高二生,沒接觸過編程,沒說想當程序員,也沒說想系統學計算機科學的課程( 更別說那鏈接里的課程質量了


說些很俗的,

目的性上來講,你要是沒有一個實際具體的目標,不要盲目的嘗試,會喪失熱情。

我個人的建議,你先用一門語言做出來一些東西(什麼語言,並不重要,對於現在的你,Every roads lead to ROME.),所謂的,看到實效。然後,再站在這個角度,去採納別人的看法,這個時候你有對比的標杆了,就不會雲里霧裡的沒有方向感。

很忌諱的東西是,別人說XXX有XXX優勢,你就轉去學別的了,這樣不好,很容易在不了解內情的情況下,讓自己失去很多的東西,一般這個時候,你對於所謂的劣勢方還沒有足夠的了解。當然,在你對劣勢方有足夠的了解和掌握的前提下,去驗證別人的說辭也未嘗不可。

慢慢來,認準目標,先一路走到黑(別花太久,也別太懶…不然是浪費自己),畢竟你還沒進入大學,學一些基礎課程固然有幫助,可是說到底,做不出來東西,還是白搭,你想了解想學習,不就是為了自己能有一定的作為么?你如果真的想學,大學的那些基礎課程你肯定不會錯過,所以,你現在要做的是培養自己的興趣,而不是接觸那些枯燥的、令人鬱悶的理論知識;反之,你要是不想(我是說,下意識的不想),那你也就不會走上這條道路了。

PS,你目前還有個很重要的,迎合教育體制的「任務」,順利的進行自己的高考。所以,還是盡量把培養興趣這件事情放在業餘吧。

以上


不建議題主一上來就先看高校教材類的理論書籍。容易感覺枯燥而失去興趣。

相關書的話建議看看 Head first 一系列,作為入門來說講的比較有意思。自己選擇一個目標去想辦法實現,剛開始語言現在大家推薦使用Python的多,容易上手。

如果題主真的發現在編程方面有興趣而且決定要深入地走下去,再去系統地學習理論知識都不晚。


先學一點實用的東西, 比如說我大Python, 做一點小練習,培養興趣, 比如自己寫過一個電子溫度計的程序,就幾十行但是成就感滿滿,現在還在用這個來監測實驗室溫度。

如果上來就是譚浩強, 估計題主的興趣會被抹殺的一乾二淨的,當年大一眼睜睜看著同學們的編程熱情被譚老抹殺的一乾二淨。


學編程為了什麼呢?

要是只是想寫某種有意思的程序,打開相關語言的官網,tutorial 大都寫的很好。直接開始寫吧。看什麼書呀~

如果是要系統化的學習軟體知識。c語言開始學,然後是數據結構,然後是面向對象…

如果就是想大概了解下,head first 確實是一套有意思的好書

祝你編程愉快


針對提問者的需求:高二學生,利用課餘時間自學。解決方案:兩本書(1)蔡學鏞老師的《編程ing》,既有編程實踐,又集中了核心基礎概念。(2)《計算機科學導論》建議看英文版,是第一本書的理論補充,順便學習英語。


深入理解操作系統,足以


什麼都不會看head first就好了,有經歷的看反而會受不了,語言選個python c 都行,c各層次資料很多,python更直覺更簡單,資料比c少一點。 編寫環境選個簡單的,盡量快開始敲代碼少墨跡在編程環境的搭建上。最好的方式就是先動手少觀望。


按照輪子哥的思路,應該是趙三本吧……

詳情請見:作為C#初學者,趙三本的的學習順序應該是怎樣的? - vczh 的回答


國外的書都行,別看國內那些什麼多少天掌握什麼的,還有譚浩強也別看


剛開始學就用 Learn Python The Hard Way ,python比較容易學,更能有興趣學下去;

或者你真的很感興趣可以學c primer plus,c相對於python來說更難。

兩本書都是從最基礎的開始講起,由淺入深,非常適合無基礎的自學編程者。(譚浩強那個比c primer plus 差多了)


總之,培養你的離散的思維。

我認為高中數學最大的問題是,重要的部分基本都是連續性的,非遞歸的,暴力而不講求設計的。

學一點編程,有助於你開拓開拓思維。

很多大學才開始學編程的同學,要花費很長時間去適應這種思維。

不過要分清楚什麼事比較重要,當然是高考啦。沒必要廢寢忘食鑽研技術,還太早。


你可以先說說感興趣的方向,不需要很成熟,有個想法就好


書太雜。。。先學一門語言。每門語言都有經典基本必讀。

C語言看譚浩強就是作死。請看the c programming language 第二版。


推薦閱讀:

想自學MATLAB,應該用什麼方法?
如何用pascal(或其他語言,最好不是V字系列)編寫一個圖形界面程序?如:詩詞介紹程序。
小朋友學會了編程是不是就對玩遊戲沒那麼有興趣了?有什麼適合的 App 推薦呢?
工廠電氣行業人員30歲,想轉行做程序員,請問怎麼入門,只有一點點語言基礎,正在自學c。有什麼忠告?
本科畢業對工作迷茫?

TAG:自學編程 |