我好像有能力閱讀《深入理解計算機系統》了
2.Java我都學到web了,簡單的增刪改查都會了,簡單的登錄註冊功能都會了。然而還是看不明白《深入理解計算機系統》,而且我看到別人學了點語法就能做出一個app、一個網站之類另我感覺非常有壓力,因為我完全沒頭緒如何實現這些東西。於是我非常討厭開發app、網站。
3.自從明白了Java就是一堆對象,要什麼功能就找什麼對象,Javaweb核心部分無非就是設計資料庫、然後基於資料庫增刪改查,我就沒興趣了。
4.於是開始學下一直對我很神秘的C++,當然學了後發現C++和我想像的不一樣,原來我想像的C++竟然是Visual C++,C++語法學完了我又拋棄了,因為發現不是我尋找的東西,我一直都不知道我想要尋找的是什麼,但我想尋找一樣東西,就叫它「編程的真相」吧。
5.主要是碎片化信息另我對編程的認識造成了誤區,我曾天真認為一門語言可以打天下,但後來發現就和畫畫一樣,你無法拿支2B鉛筆打天下。如果你是初學Java的你可以發現,去招聘網查看java工程師方面的工作要求,你會發現除了Java這個詞,其他全部不認識。fuck
6.於是我開始了尋找「編程的真相」之路,其中我先拿《深入理解計算機系統》開刀,自從學了C++後,我終於發現竟然能有看明白的徵兆,因為學C++時我惡補了C語言的指針,現在見到多級指針不會恐懼了,還有C++對象問題,也就是總結一下,我能看明白《深入理解計算機系統》的原因是因為:C語言指針+C++面向對象。
7.C指針,自從學了指針+結構體後,開始對內存敏感,開始對位元組敏感。在學Java時是感受不到的,如果你學Java,像int char float double這種東西多少位元組?who care啊!
8.C++對象問題,自從學了C++面向對象,除了對內存敏感,還開始對寄存器敏感,因為函數返回值通過寄存器返回,但是一個寄存器只能保存4個位元組,怎麼返回一個對象呢?
這涉及到讀懂《深入理解計算機系統》的第3章——程序的機器級表示
C++沒Java那麼聰明,Java返回的是引用,C++竟然能返回對象變數。而且你sizeof()一個類的時候,發現只有屬性的位元組,函數竟然不佔位元組,真是神奇啊!
這涉及到讀懂《深入理解計算機系統》的第7章——鏈接。
9.編譯器分配地址問題,因為C++對象問題,讓我知道了竟然編譯器還能分配地址,我一直以為分配地址不是操作系統搞的嗎?編譯器擅自分配地址不會造成衝突?
這涉及到讀懂《深入理解計算機系統》的第9章——虛擬存儲器。
10.像那些無法用if else等基礎語句寫出來的printf()等這些函數是怎麼實現的?
這涉及到讀懂《深入理解計算機系統》的第10章,系統級I/O,也就是無法用基礎語句實現的函數基本是調用系統提供的函數,那麼系統又是怎麼實現這些函數的?好像《程序員的自我修養》會解答,解答在沒有操作系統的時候實現hello,world輸出。
11.如何用C語言寫html?寫網路編程?老子不用世界上最好的語言可以開發Web嗎?
這涉及到讀懂《深入理解計算機系統》的第11章——網路編程
12.由於我還沒做過網路項目,暫時不需要並發編程。
這涉及到讀懂《深入理解計算機系統》的第12章——並發編程。
13.想如何自己實現一個CPU?
這涉及到讀懂《深入理解計算機系統》第4章——處理器體系結構
_________________________________________________________________________關於如何閱讀一本書,前言是一定要讀的,以前沒讀書經驗,跳過了真是吃了大虧。反而其他章節可以挑著讀。
當然我目前C語言級別:能寫基本數據結構,明白結構體深拷貝和淺拷貝
C++級別:只學了面向對象部分,沒學模版元編程,沒學函數式編程。能寫基本數據結構,明白對象做返回值會產生一個匿名對象,並且不通過寄存器返回這個對象變數。
看吧,我只學了語法,沒有做過任何項目,沒有任何工程能力,不過並不會妨礙我看CSAPP。
—————————————————————————————————————————
其實現在我有了一個深刻的認識,磚頭書的各種抽象概念,有一大半是我在學語言的時候習得的,這是因為學語言的時候,人家為了能讓你更深刻地感受語言,自動就提供給你一些額外知識——(底層抽象)以幫助你更好地理解語言,以及你tm都用語言做了什麼鬼!?最典型的就是學指針的時候了,你沒有抽象內存模型是學不好指針的。
有些小白喜歡問,學X語言需要什麼計算機基礎?
現在真想說,你一門語言都不會,能學懂計算機基礎請受小弟一拜。。
學任何一門語言只需要會26個英文字母+小學數學過關就行了,比如你至少知道1+1*2會先算乘法吧。雖說我初中數學只有8分,但是讓我單挑小學生單手讓他都沒問題。
推薦閱讀:
※簡析組件AWT和Swing各有的優缺點及區別
※工廠模式、工廠方法模式和抽象工廠模式的差異分析
※淺談兩個相互引用的對象是否會被GC回收
※python自學周報(第0期):而今邁步從頭越
TAG:自學編程 |