仍记得那是15年的5月底,面临着毕业的学长学姐看着本身大学四年的诸多书籍,纷纷在校内开始了摆摊生活。当时才大一的我,看着一长条的书摊,仿佛看到了宝藏。才逛了一下子,我心满意足的抱着好几本书回寝室了。其中就包括这两天看到入迷的《计算机科学导论》。前端
当初买下它的时候,只是模糊的以为,本身可能会用到。既然又是书,因此就爽快的买了下来。反正也才5元(逃)。回去一翻开,更是惊喜,书如全新的通常,连名字都没有。而后……放在书柜上,就束之高阁了。直到寒假回家时,顺手把它带回了家。算法
就是下图的这本书。编程
结果昨天下午看了一眼,便一发不可收拾,一口气读到深夜两点。读完以后,感受以前全部零散的知识点被串成了一串,有种拨云见月的感受。以前不少没法理解的概念,也都迎刃而解了。网络
看来不管是学习社会科学或计算机科学,都如杨绛先生所说的那句话同样:编程语言
“你的问题主要在于读书很少而想得太多。”学习
或者又如《荀子》一书中劝学篇所言:spa
“吾尝终日而思矣,不如须臾之所学也;吾尝跂而望矣,不如登高之博见也。”计算机网络
总而言之,万分庆幸本身回家时候带了这本《计算机专业导论》,让我领略到计算机科学的万千精彩。code
第一次学编程时,学习的是C语言。在刚开始学的时候,就知道C语言是一门面向过程的编程语言,除此以外还有面向对象的编程语言。当时的我,并无想这么多。只是慢慢的看视频而后学习。视频
面向过程与面向对象是学编程过程当中不可避免的问题。果真,这个问题在15年3月份,我学习Java后开始出现了。
当时在图书馆借阅了李刚老师的《疯狂Java 第二版》,在学习到面向对象部分,完全晕头转向了。究竟什么是面向对象,什么又是面向过程?为何说面向对象是一种良好编程方法?封装、继承、多态究竟是什么?(这应该算本身第一次尝到计算机基础不牢的苦果,只是当时没有意识到)。
在15年6月学前端,到如今已有大半年。期间也看过诸如《JavaScript面向对象编程》等书,也去谷歌过相关文档。但总感受似懂非懂。
还好,我遇见了《计算机专业导论》这本书,一本让我有“拨云见月”之感的书。
在这儿,咱们先介绍面向过程。
在面向过程的程序中,咱们把程序当作是 操纵被动对象的活动主体
。其中,被动对象自己不能开始一个动做,但能从活动主体(程序)接收动做。
被动对象的数据储存在内存中,程序为了操纵它们,会发布动做。称之过程
。
例如打印一个文件,文件就是被动对象。同时为了能被打印,文件会存储在内存中。而程序为了打印文件,会调用一个print过程,print过程当中包含了计算机打印所需的步骤。
在过程式模式中,对象(文件)和过程(打印)是彻底分开的实体。对象(文件)是能接收print动做的实体。而过程print是被编写的一个独立的实体,程序只是触发它。
看到上面这一大串,是否是有点晕了?简单来讲,面向过程模式的程序由三部分组成:
对象建立部分
一组过程调用
每一个过程的一组代码
结合上面的例子,这样就比较好理解了。
面向对象模式与面向过程模式区别在于:面向对象模式处理活动对象,而非被动对象。如平常生活中的洗衣机,汽车等。 在这些对象上执行的动做都包含在这些对象中,对象只须要接收合适的外部刺激便可。
仍是拿打印文件作例子,在面向对象模式中的文件能把全部被文件执行的过程(面向对象中成为方法)(打印,复制粘贴等)打包在一块儿。在这种模式下,程序只须要向文件发出打印或者复制的请求,文件就会被打印或复制。而这些方法,也被从这些对象继承的其它对象共享。
比较面向过程与面向对象,能够看出面向过程编程中的过程是独立的实体,但面向对象模式中的方法是属于对象的。
面向对象的核心要点,在于类。由于相同类型的对象须要一组方法,为了建立这些方法,C++或者Java都选择使用成为类的单元。
在面向对象模式中,做为本质,一个对象能从另一个对象继承。这个概念称为继承性
。例如,当一个几何形状类被定义后,咱们就能够定义矩形类。矩形是拥有额外特性的几何形状。
面向对象的多态性是指咱们能够定义一些具备相同名字操做的方法,但这些操做在不一样类中会产生不一样结果。
例如咱们给几何图形类定义一个算面积的方法,同时定义圆形类和方形类继承几何图形类。那么一样是算面积,圆形类的结果和方形类的结果会不同。由于二者计算公式不同。
这就是多态。
本觉得只是简单的描述一下本身对面向过程和面向对象的理解。结果写的时候倒是磕磕绊绊。看来和老师说的同样,本身学的好和教别人教的好是两回事。仍是得努力去增强这一方面。
接下来可能会写好几篇《计算机专业导论》的读书笔记,由于解决了我颇多难点,因此算是值得一写。至于看的速度,我以为算是较快的,由于计算机系统组成,计算机网络,算法等章节,我在以前就有过专门学习。只是没有一本书把知识点给串起来而已。
前端路漫漫,且行且歌~
最后附上本人博客地址和原文连接,但愿能与各位多多交流。