Oops!核心、記憶體、程序、執行緒它們是抽象的
阿新 • • 發佈:2019-02-09
我相信很多人“初識”計算機,是因為遇見了Windows的開機畫面,是遇見了Word、Execl、Powerpoint(當然老一輩的程式設計師排除在外,那個時候是“黑屏”或“藍屏”)
main——主要的,哦,所以稱為main函式;printf——列印,所以,就輸出了“Hello World”。我想,這種理解方式,是具體的不能再具體了
再然後,我們學習了作業系統、編譯原理、資料結構等一堆課程。此時,我的感受是:“Oh,My god!”其中的概念真多,真抽象。真得讓人無法用具體的理解方式去理解計算機。記憶體是什麼?作業系統書籍中的標準概念是:In computing, memory refers to the physical devices used to store programs (sequences of instructions) or data (e.g. program state information) on a temporary . 翻譯:在計算機領域,記憶體指的是,用於臨時儲存程式和資料的物理裝置。如果記憶體以一種具體的方式理解,該是什麼樣子的呢?其實,說是記憶體是物理裝置可能還太專業了。咱這輩子沒見過物理裝置呀。ok!那你就想象它是一個盆,它用來裝東西的,當然容量是有限的。
再再然後,在軟體開發中、在IT商業應用中,作為一名工程師,我們需要深究這些概念,因為,我們無時無刻都在使用它們。想要用好它們,當然需要深入的瞭解嘛——知己知彼,百戰不殆,貌似誇張了。理解這些概念貌似很困難。為什麼這麼說呢?以下論據:誰都知道,計算機的世界,是0和1的世界——數學中的0和1。而很多的數學大師們都曾說過,資料研究到最後是哲學(至於哪位大師說過,嘻嘻,我也不知道)。所以,推論是,計算機研究到最後應該也是哲學。讀毛澤東的《矛盾論》,讀到最後,發現真的很矛盾,因為越讀越不懂。我問自己,矛盾這個概念懂了嗎,懂了,但是懂與不懂是相互存在的,是個整體,懂存在,所以,不懂依然存在,所以不懂。黑格爾這位大師,又說了,人類從歷史中學到的唯一教訓,就是人類無法從歷史中學到任何教訓。
有一天,《深入理解Java 虛擬機器》其中一章《Java記憶體模型與執行緒》,突然問了自己一個問題:什麼是高併發,什麼是核心,什麼是使用者態,什麼是核心態?這些概念的理解為什麼不是那種感覺呢:當別人問你什麼是西瓜時,你直接去買個西瓜,請他吃。可能我沒那種感覺,是因為我還沒有真正理解它們。但是,我可以確定很難,獲取這種感覺很難!為什麼呢?因為計算機是個抽象的世界,哲學是個抽象的世界,這個世界本身就是一個抽象的世界。很多人都學會用電,但是什麼是電呢?什麼是高壓電呢?當別人問你這個問題的時候,你總不能讓他去碰碰高壓電吧(低伏電壓當然可以,但是高壓電的感覺,我想肯定還是不一樣的)。
最後,我得出學習抽象概念的方式:以抽象的思維去學習抽象的知識。我們應該學習梵高,學習那些抽象派的大師,學習那些抽象的思維。不要讓自己侷限在0和1之間,讓自己想象飛起來,你會覺得很美好。
以上言論純屬“自由”範疇,希望你看過後,會“不屑的一笑”!!
然後,很多人“入門”計算機,是因為下面的一段程式碼:
#include <stdio.h> int main(void) { printf("Hello World!n"); return 0; }在寫這段程式碼的時候,可能那個時候,我們還沒有那些複雜的概念——記憶體、執行緒等,當然,也還不知道,這段程式碼是如何轉變為機器碼的。我還記得我當時的感覺:這段程式碼,邏輯so easy,會說“Thank you”的人,我想幾乎都會懂。當時我的對這段程式碼的翻譯是這樣的:include——包含 ;<stdio.h>——啥?一個頭檔案,哦在頭部,所以是標頭檔案;