仍記得那是15年的5月底,面臨着畢業的學長學姐看着本身大學四年的諸多書籍,紛紛在校內開始了擺攤生活。當時才大一的我,看着一長條的書攤,彷彿看到了寶藏。才逛了一下子,我心滿意足的抱着好幾本書回寢室了。其中就包括這兩天看到入迷的《計算機科學導論》。前端
當初買下它的時候,只是模糊的以爲,本身可能會用到。既然又是書,因此就爽快的買了下來。反正也才5元(逃)。回去一翻開,更是驚喜,書如全新的通常,連名字都沒有。而後……放在書櫃上,就束之高閣了。直到寒假回家時,順手把它帶回了家。算法
就是下圖的這本書。編程
結果昨天下午看了一眼,便一發不可收拾,一口氣讀到深夜兩點。讀完以後,感受以前全部零散的知識點被串成了一串,有種撥雲見月的感受。以前不少沒法理解的概念,也都迎刃而解了。網絡
看來不管是學習社會科學或計算機科學,都如楊絳先生所說的那句話同樣:編程語言
「你的問題主要在於讀書很少而想得太多。」學習
或者又如《荀子》一書中勸學篇所言:spa
「吾嘗終日而思矣,不如須臾之所學也;吾嘗跂而望矣,不如登高之博見也。」計算機網絡
總而言之,萬分慶幸本身回家時候帶了這本《計算機專業導論》,讓我領略到計算機科學的萬千精彩。code
第一次學編程時,學習的是C語言。在剛開始學的時候,就知道C語言是一門面向過程的編程語言,除此以外還有面向對象的編程語言。當時的我,並無想這麼多。只是慢慢的看視頻而後學習。視頻
面向過程與面向對象是學編程過程當中不可避免的問題。果真,這個問題在15年3月份,我學習Java後開始出現了。
當時在圖書館借閱了李剛老師的《瘋狂Java 第二版》,在學習到面向對象部分,完全暈頭轉向了。究竟什麼是面向對象,什麼又是面向過程?爲何說面向對象是一種良好編程方法?封裝、繼承、多態究竟是什麼?(這應該算本身第一次嚐到計算機基礎不牢的苦果,只是當時沒有意識到)。
在15年6月學前端,到如今已有大半年。期間也看過諸如《JavaScript面向對象編程》等書,也去谷歌過相關文檔。但總感受似懂非懂。
還好,我遇見了《計算機專業導論》這本書,一本讓我有「撥雲見月」之感的書。
在這兒,咱們先介紹面向過程。
在面向過程的程序中,咱們把程序當作是 操縱被動對象的活動主體
。其中,被動對象自己不能開始一個動做,但能從活動主體(程序)接收動做。
被動對象的數據儲存在內存中,程序爲了操縱它們,會發布動做。稱之過程
。
例如打印一個文件,文件就是被動對象。同時爲了能被打印,文件會存儲在內存中。而程序爲了打印文件,會調用一個print過程,print過程當中包含了計算機打印所需的步驟。
在過程式模式中,對象(文件)和過程(打印)是徹底分開的實體。對象(文件)是能接收print動做的實體。而過程print是被編寫的一個獨立的實體,程序只是觸發它。
看到上面這一大串,是否是有點暈了?簡單來講,面向過程模式的程序由三部分組成:
對象建立部分
一組過程調用
每一個過程的一組代碼
結合上面的例子,這樣就比較好理解了。
面向對象模式與面向過程模式區別在於:面向對象模式處理活動對象,而非被動對象。如平常生活中的洗衣機,汽車等。 在這些對象上執行的動做都包含在這些對象中,對象只須要接收合適的外部刺激便可。
仍是拿打印文件作例子,在面向對象模式中的文件能把全部被文件執行的過程(面向對象中成爲方法)(打印,複製粘貼等)打包在一塊兒。在這種模式下,程序只須要向文件發出打印或者複製的請求,文件就會被打印或複製。而這些方法,也被從這些對象繼承的其它對象共享。
比較面向過程與面向對象,能夠看出面向過程編程中的過程是獨立的實體,但面向對象模式中的方法是屬於對象的。
面向對象的核心要點,在於類。由於相同類型的對象須要一組方法,爲了建立這些方法,C++或者Java都選擇使用成爲類的單元。
在面向對象模式中,做爲本質,一個對象能從另一個對象繼承。這個概念稱爲繼承性
。例如,當一個幾何形狀類被定義後,咱們就能夠定義矩形類。矩形是擁有額外特性的幾何形狀。
面向對象的多態性是指咱們能夠定義一些具備相同名字操做的方法,但這些操做在不一樣類中會產生不一樣結果。
例如咱們給幾何圖形類定義一個算面積的方法,同時定義圓形類和方形類繼承幾何圖形類。那麼一樣是算面積,圓形類的結果和方形類的結果會不同。由於二者計算公式不同。
這就是多態。
本覺得只是簡單的描述一下本身對面向過程和麪向對象的理解。結果寫的時候倒是磕磕絆絆。看來和老師說的同樣,本身學的好和教別人教的好是兩回事。仍是得努力去增強這一方面。
接下來可能會寫好幾篇《計算機專業導論》的讀書筆記,由於解決了我頗多難點,因此算是值得一寫。至於看的速度,我以爲算是較快的,由於計算機系統組成,計算機網絡,算法等章節,我在以前就有過專門學習。只是沒有一本書把知識點給串起來而已。
前端路漫漫,且行且歌~
最後附上本人博客地址和原文連接,但願能與各位多多交流。