按照題主的問題編號逐個回答
1)編碼:隱匿在計算機軟硬件背后的語言,此書從信息的編碼,數(shù)字的不同進制表示,到計算機采用的二進制機器級表示開始,到用電路構(gòu)建一個簡單的加法器,觸發(fā)器,計數(shù)器,存儲器,甚至一個具有控制器,運算器,存儲器的簡易CPU,娓娓道來,真是醍醐灌頂。最后還談到了圖形界面的原理。此書作者更是被傳為圣經(jīng)的《Windows程序設(shè)計》的作者Charles Petzold。讀完此書可對計算機硬件的原理與設(shè)計有一全面深入之認識,猶如身處群山之巔,一覽無余。
2)深入理解計算機系統(tǒng) 上一本《編碼》通俗易懂,即使沒有計算機相關(guān)知識也能懂,但缺乏一些計算機機制的介紹。此書是國外著名的介紹計算機系統(tǒng)方面的書,從程序員的角度帶你暢游計算機系統(tǒng)架構(gòu)。涉及程序的機器級表示(機器碼,匯編),處理器體系結(jié)構(gòu),存儲器結(jié)構(gòu),系統(tǒng)IO,網(wǎng)絡(luò)編程,并發(fā)編程,以及程序性能的優(yōu)化。讀完此書可對計算機系統(tǒng),程序設(shè)計有一深層次了解。
3,4)就C語言而言,K&R的 C程序設(shè)計語言 的無疑是最好的參考書,不過對初學(xué)者來說還是有一定難度,輔以諸如 C和指針 ,C陷阱與缺陷 會有更好的效果。當(dāng)然多寫程序才是王道,多寫才能發(fā)現(xiàn)問題,加深認識。
5)Debug Hacks 此書介紹GDB調(diào)試工具及調(diào)試技巧,本人現(xiàn)在主要就是使用gcc gdb啦。此書助你更好的找出臭蟲。
6)數(shù)據(jù)結(jié)構(gòu)與算法分析 介紹算法和數(shù)據(jù)結(jié)構(gòu)的書籍很多,但本人就是用這本書學(xué)習(xí)的,所以推薦。此書的前3章和第7章就介紹了題主要求的一些數(shù)據(jù)結(jié)構(gòu)和算法,后面幾張介紹樹,排序,圖論算法,及一些高級數(shù)據(jù)結(jié)構(gòu)。讀完此書將助你設(shè)計更優(yōu)美的程序。
以上書籍都是本人讀過的一些書,感覺非常好,但并非按照像上面的順序這樣死板的讀,況且一些書只有在一定基礎(chǔ)后才能理解,所以要常常瞻前顧后,左右參考,這樣才更加融會貫通。
P.S.
上面推薦的書籍都是國外的,如果題主對計算機系統(tǒng)非常感興趣,那么我推薦一本國內(nèi)的: Linux內(nèi)核完全剖析,此書完全剖析0.12版Linux內(nèi)核(代碼量不多),將帶你完全從零構(gòu)建一個計算機系統(tǒng),當(dāng)然前提是要懂匯編,C,和一些操作系統(tǒng)的概念。真正讓你透徹?zé)o死角了解計算機系統(tǒng)。
作為一只野生的菜鳥,一年前我看過這個問題,按照答主們的推薦還有自己私下尋找了不少書。時至今日寫下我認為對我有很大幫助的書籍。
1、《編碼:隱匿在計算機軟硬件背后的語言》 ,這本書真的淺顯易懂,從與非門到寄存器,再組成RAM,主要幫助你理解電信號如何轉(zhuǎn)換成二進制!你看完加運算的進位電路設(shè)計就會明白“溢出”是怎么一回事了。
2、王爽的《匯編語言》,這本書很精簡,沒有龐大的概念。一直是邊做實驗邊學(xué),帶你用指令操作寄存器,并且跟蹤結(jié)果,你能清楚觀察到內(nèi)存中每個字節(jié)的變化!做完實驗?zāi)憔陀畜w會,數(shù)據(jù)類型確實挺重要的,因為沒準(zhǔn)你會覆蓋別的數(shù)據(jù)!這里面直接操作地址,想學(xué)好指針的千萬別錯過!
3、為了深入理解匯編與電路之間的關(guān)系,推薦第三本書《Digital Computer Electronics》,是一本解構(gòu)4位CPU電路的書(剛回去翻,發(fā)現(xiàn)找不到了,很可惜,這本書對我的幫助很大?。?。反正我記得最清楚的是,一條匯編指令mov ax,cs 存儲在內(nèi)存中,后半部分其實存的是兩個寄存器ax,cs 對應(yīng)的地址,前半部分存的是mov 對應(yīng)的二進制。前半部分進入解碼器進行解碼,接著通過控制矩陣找到這兩個地址,再進行操作。
4、讀完以上三本估計你就能很好理解大部分計算機概念了,現(xiàn)在推薦《C程序設(shè)計語言》和《C primer plus》,《征服C指針》,這三本介紹了很多C語言特性,注意必須采用《老碼識途》中的方法邊寫邊調(diào)試,對比不同的寫法在寄存器,內(nèi)存中每個字節(jié)的變化,如此你才算是真正懂的了,光看書是沒用的,很快就忘記了!
5、數(shù)據(jù)結(jié)構(gòu)推薦程杰《大話數(shù)據(jù)結(jié)構(gòu)》,代碼很少,直接用插圖形式描繪數(shù)據(jù)結(jié)構(gòu)執(zhí)行過程。我看完這本書,再去找c語言算法代碼來調(diào)試,簡直太容易理解了。
6、語言層面差不多了,下面的就要進入操作系統(tǒng)了,推薦hurlex同學(xué)的《一個基于x86架構(gòu)的簡單內(nèi)核實現(xiàn)》和《xv6-book》,另推薦網(wǎng)易公開課李志軍老師的《操作系統(tǒng)》課程
7、數(shù)據(jù)庫方面推薦《mysql 必知必會》,入門書!不是原理書,教你數(shù)據(jù)庫語句。
8、編譯原理方面推薦網(wǎng)易公開課華保建老師《編譯原理》!然后推薦目錄 | TIPI: 深入理解PHP內(nèi)核,因為前面介紹了C語言嘛。懂JAVA的可以看看《兩周自制腳本語言》,是從零開始的。
9、網(wǎng)絡(luò)方面太深奧了,推薦一本新書《網(wǎng)絡(luò)是怎樣連接的》,從你打開瀏覽器訪問頁面說起。知乎還有類似的問題呢!
用戶用瀏覽器訪問一個網(wǎng)站的時候背后的過程與步驟是怎樣的? - 互聯(lián)網(wǎng) - 知乎
10、瀏覽器方面推薦《how browsers work 》中文 版,也就幾十頁,看一看有好處的!
11、選擇一門高級語言!人生苦短,作為一個新手,入門是最重要的!聽說C ++ 很牛逼,要不要學(xué)C ++ 呢 ?然而到最后我也沒碰過幾次C ++ ,又想學(xué)JAVA ,被JAVA 虛擬機給難住了。最后我放棄了!反正好久沒碰,一次偶然機會獲得一份開源PHP WEB程序(可以賺錢的),又不想讓別人覺得我這是抄襲的!嘿嘿,我就想起給它換個樣子!果然學(xué)HTML,CSS,JavaScript就有勁了!
綜上所述,建立迅速反饋機制,激發(fā)興趣才是王道!如果一直陷入原理中不能自拔,容易越學(xué)越放棄。
謝邀,正好今年夏天的時候,在畢業(yè)生賣書的地攤上找到一本書,還挺好的,叫做《Computer Science Illuminated》(計算機科學(xué)概論,點亮你的計算機世界),作者是Nell Dale和John Lewis。
http://www.amazon.cn/Computer-Science-Illuminated-Student-Study-Guide-Dale-Nell-B/dp/0763726265/ref=sr_1_7?ie=UTF8&qid=1356683364&sr=8-7
這是第二版的,英文版的比較貴,卓越上有一本第三版的中文譯本。http://www.amazon.cn/%E8%AE%A1%E7%AE%97%E6%9C%BA%E7%A7%91%E5%AD%A6%E6%A6%82%E8%AE%BA-%E6%88%B4%E5%B0%94/dp/product-description/B001TDM10Y/ref=dp_proddesc_0?ie=UTF8&s=books
這本書的內(nèi)容比較豐富,但是對于任何一個話題都沒有具體的展開詳述,畢竟只有600多頁的篇幅,而其中任何一個章節(jié)的內(nèi)容拿出來進行系統(tǒng)敘述都可以變成一本600頁以上的書。這本書只能讓你有一個概要性的、宏觀上的理解,如果要求深入,請另外選擇書籍。
以下是一些簡要的章節(jié):
Laying the Groundwork(基礎(chǔ)知識)
The Information Layer(信息層面)
The Hardware Layer(硬件層面)
The Programming Layer(編程層面)
The Operating System Layer(操作系統(tǒng)層面)
The Application Layer(應(yīng)用程序?qū)用妫?/p>
The Communication Layer(通信層面)
In Conclusion(結(jié)論)
非計算機專業(yè)出身,因為興趣轉(zhuǎn)行,一個月前正式成為一名碼農(nóng)。以個人自學(xué)經(jīng)歷,給題主做個參考。
因為你才高二,所以那些高大上的計算機書籍暫時就不推薦了。因為信息密度高,理論性強,學(xué)習(xí)起來比較枯燥又容易挫傷信心。你現(xiàn)在主要需要的是:培養(yǎng)自學(xué)能力、獨立思考能力,習(xí)慣去搜索資料、解答疑惑,多動手,邊學(xué)邊實踐。對了還有,一定要學(xué)好英語?。∫蝗灰欢〞蠡诘?!唉……說多了都是淚??!
我入門時看的第一本書的確是譚浩強的《c程序設(shè)計》,我覺得拿來入門是可以的,因為入門之后還有很多其他的書要讀,讀的多了,很多坑都會被填上的,你不要擔(dān)心。但是我建議你讀c語言書籍之前,先讀這本書:計算機科學(xué)導(dǎo)論 (豆瓣),這是當(dāng)時
推薦的書,墻裂推薦,參考:學(xué)習(xí)C語言基本思路與參考書籍 - 林建入的軟件設(shè)計之路 - 知乎專欄??赐曛竽憔陀辛艘粋€計算機科學(xué)體系的框架,專欄內(nèi)其他的書也墻裂推薦看。我看的第二本c語言書是:C語言大全 (豆瓣)。這本書里有c語音基礎(chǔ)部分,c標(biāo)準(zhǔn)庫的函數(shù)及用法。最關(guān)鍵的是從這本書里我第一次接觸到了基本的數(shù)據(jù)結(jié)構(gòu)和算法,講的很簡單,也容易理解。但書的最后一部分那個”c語言解釋程序“當(dāng)時對我來說,太有難度了,就略過去了沒看,至今也沒把這坑補上。
然后就接觸到了C和指針 (豆瓣)、C陷阱與缺陷 (豆瓣)、你必須知道的495個C語言問題 (豆瓣),才知道:"-/|\\"[i] 這尼瑪原來是在用數(shù)組指針訪問元素。原來程序里莫名奇妙的錯誤,書里面都有,相見恨晚啊有木有!
終于有一天我厭煩了控制臺的黑白屏幕,做出來的東西只有一個黑黑的方框,這不是我想要的生活。于是我找到了Windows程序設(shè)計 (豆瓣)這本奇書,開始了我Windows平臺的挖坑之路。從Windows的消息機制,到窗口的創(chuàng)建,控件的添加,事件的響應(yīng)處理,窗口繪圖,線程,多媒體,網(wǎng)絡(luò)。期間也制作了一些小程序,比如:記事本、貪吃蛇、俄羅斯方塊等等。不要臉的我要貼代碼了:songbaoming/Tetris · GitHub,大牛慎點!雖然每一步我一個人都走的很艱難,但最終我學(xué)會了,滿滿的成就感,我離走上人生巔峰又近了一步呢!
就先寫到這兒吧,估計這些入門已經(jīng)夠你看上一陣子了。如果你選擇了走IT路,后面的算法啦、數(shù)據(jù)結(jié)構(gòu)啦、離散數(shù)學(xué)啊、數(shù)據(jù)庫啊、編譯原理啊、計算機系統(tǒng)啦等等等等,等到你考上大學(xué)相關(guān)專業(yè),自然都是你的菜,慢慢消化吧。
對了,還有個專欄文章墻裂推薦:
|編程入門指南 v1.3 - 蕭井陌的專欄 - 知乎專欄。最后強調(diào):一定要多動手!還有學(xué)好英語??!
后面的故事如果想看,我再陸續(xù)更(不要臉的毛病又發(fā)作了……)……
白天手機比較倉促,現(xiàn)在再寫一遍,也是對自己的一點總結(jié)。匿了。
你才高二,而且只是為了編程。你那本電路與模擬電子技術(shù)碰都別碰。計算機方向要學(xué)也是數(shù)字電子技術(shù),知道個門電路和布爾代數(shù)基礎(chǔ)就完了,沒有幾個程序員還知道施密特觸發(fā)器的結(jié)構(gòu)。我會告訴你我大學(xué)學(xué)了一年數(shù)電模電都不知道是啥玩意么。
而且你說最近才想開始學(xué)編程,又是高中生,那你學(xué)一門語言就完全夠了。鑒于C/C++很可能會打擊你的積極性。憑興趣的初學(xué)者最重要就是能得到良好的反饋了,又不是靠這個混飯吃的人,硬著頭皮也得上。推薦從Python入手,我覺得《Programming in Python》不錯,有中譯本,可以順帶學(xué)到一點數(shù)據(jù)庫知識。很快你就可以學(xué)會寫個爬蟲什么的,形成正反饋,你覺得有意思了,再學(xué)深入的才能耐得住性子。
編程語言有很多種。你可能會聽說各種程序員笑話里他們會永不休止地爭論哪種語言更優(yōu)秀。這些你都不用理。
你要理解的是,編程就是寫論文回答某些問題。學(xué)會一門編程語言,比如C,相當(dāng)于你上了中國語文課,但如果你需要用中文寫一篇討論中國歷史的論文,那么你必須再上歷史課。當(dāng)然,語文課畢竟以各種文本材料為基礎(chǔ),所以你在上語文課時或多或少會接觸到歷史政治之類的課文,但這些并不能代替政治課和歷史課。所以學(xué)了C++之后,比如如果你想搞數(shù)據(jù)挖掘,你就得學(xué)數(shù)據(jù)挖掘。(廢話)。
理論上,所有高級語言都是等價的。正如你可以用中文英文德文寫哲學(xué)論文,都可以。
但是不同的編程語言可能適用場景不一樣。比如很多哲學(xué)詞匯是從德語來的,所以搞哲學(xué)的人可能得學(xué)德語。社會學(xué)在美國最為昌盛,搞社會學(xué)就一定得會英語。做中國古代史就一定要學(xué)古代漢語,學(xué)醫(yī)一定要學(xué)拉丁語。
再比如,中文在表達哲學(xué)概念時并不夠精確,時態(tài)也比較模糊,用德文就精確一些。法文是當(dāng)下還活著的語言里文法很精準(zhǔn)的,歧義少,所以很多國際法文本都用法文寫。
所以后臺多用PHP,寫3D游戲多用C++,想進阿里最好學(xué)JAVA,大概就這樣。未完待續(xù)。
11月9日中午,計算機科學(xué)技術(shù)學(xué)院召開學(xué)生黨支部書記聯(lián)席會議,專題傳達、部署十九大精神學(xué)習(xí)宣傳工作。計算機學(xué)院黨委副書記厲家鼎、學(xué)院學(xué)生黨總支成員、學(xué)生黨支部書記和各班級輔導(dǎo)員參加了此次會議。
學(xué)生黨總支副書記付雁傳達學(xué)校學(xué)習(xí)貫徹黨的十九大精神各項要求。結(jié)合學(xué)校黨委書記焦揚在學(xué)校大會上的報告,付雁從深刻領(lǐng)會黨的十九大精神實質(zhì)、認真做好十九大精神專題學(xué)習(xí)、扎實推進十九大精神貫徹落實等幾方面做了介紹。隨后,付雁帶領(lǐng)全體成員認真學(xué)習(xí)了學(xué)校下發(fā)的《復(fù)旦大學(xué)學(xué)生學(xué)習(xí)宣傳黨的十九大精神工作方案》,了解總體要求,明晰內(nèi)容安排。結(jié)合《復(fù)旦大學(xué)計算機學(xué)院學(xué)習(xí)宣傳和貫徹落實黨的十九大精神工作實施方案》,付雁從學(xué)習(xí)目標(biāo)、學(xué)習(xí)內(nèi)容、學(xué)習(xí)安排和學(xué)習(xí)要求幾方面作了具體介紹和部署要求。
厲家鼎就在全院學(xué)生中廣泛、深入地開展學(xué)習(xí)宣傳貫徹黨的十九大精神活動提出了“四個一”的要求,舉行一次專題組織生活學(xué)習(xí)會;采訪一位學(xué)院的優(yōu)秀師生典型;開展一次紅色教育基地的參觀考察活動;撰寫一篇學(xué)習(xí)領(lǐng)會十九大精神的專題思想?yún)R報。
會前,學(xué)生黨總支為每位與會人員下發(fā)了《十九大報告輔導(dǎo)百問》《十九大黨章修正案學(xué)習(xí)問答》學(xué)習(xí)輔導(dǎo)讀物,希望黨支部書記、學(xué)生黨總支成員和班級輔導(dǎo)員能夠原原本本學(xué)習(xí),認真研讀十九大報告和新黨章原文,逐行逐段、逐字逐句地深刻體會核心要義和精神主旨。在真正學(xué)懂弄通的基礎(chǔ)上,聯(lián)系工作學(xué)習(xí)實際,學(xué)用結(jié)合,學(xué)以促用,在做實上下功夫。