有时候更引人思考的不是技术具体怎么使用,而是它的发展过程。
我学习语言时,总是喜欢跳过这部分。 最近重新翻阅的时候,突然就想看看以前从来不看的地方,一下就联想到自己的代码和生活,爆发了很多灵感。
计算机语言主要处理两个概念——数据和算法。
C是面向过程性语言,意味着强调编程的算法方面,遵循自顶向下的设计原则。
其理念是将大型程序分解成小型任务。
如果一个任务过大,则将其分解成更小的任务;
C++是面向对象编程的,强调数据。
使用自下而上的设计原则,从低级组织(类)到高级组织(如程序)的处理。
其理念是设计与问题的本质特性相对应的数据格式。
C++是C语言的超集,即C是C++的子集。
C赋予了C++紧密联系硬件的能力,C++在C语言的基础上添加了面向对象编程特性。
名称C++来自C语言中的递增运算符++,该运算符将变量加1。
名称C++表明,它是C的扩充版本。
——以上节选自《C++ Primer Plus 第六版》前几页。
学习新知识就是与自身旧知识产生联系的过程。 在一开始对其毫无概念时,常态是,看了这些文字也没法认识到原来这里说的,是这么的凝练和直白。 作者写书一般都是先整体再具体,从古到今,从起源到发展。 如果当做工具书使用,读者往往是翻开目录直奔主题,直接答疑解惑。 初学者一般则完全按照目录从头开始,对起源发展,兴趣缺缺,收益不高。
这次误打误撞,来了个回马q,觉得最佳的阅读方式应该是通读目录和速读开头,得出这本书的定位,是介绍类的书籍,还是深入细节类的书籍。 如果是前者,能让读者对物体有大体了解,如果是后者可以当做速查工具书,遇到问题再细看也可。 把前者按工具书来评判容易有失偏颇。
当你对物体有整体模糊的了解后,再去精读介绍类书籍开头的部分,会有一种别人把你模糊混乱的感觉,用极其直白的话语描述出来,“语言文字容易造成误解”的想法都会瞬间抛之脑后,体会到一种畅快。 面对同一本书,当初怎么看都无法理解的文字,闹脾气书本一甩不看了的烦躁,与此时,和作者心意相通的畅快相比,简直不值一提。 这个对比也正是阅读的乐趣,在这种对比中发现了自我提升,突然内心狂喜。
从C语言到C++语言,从面向过程到面向对象,面向过程往往是人第一直觉的反应。 生活中也可以找到这样的类比。 例如下厨炒菜,需求是要炒两个菜:青椒五花肉和蒜蓉生菜。
- 分解过程为要先做第一个菜,再做第二个菜。
- 确定第一个先炒青椒五花肉,第二炒蒜蓉生菜
- 解决如何炒青椒五花肉
- 打开下厨房,查找合适的菜谱
- 煸炒青椒和五花肉
- 煸炒五花肉能出油,选择先炒五花肉
- 五花肉要清洗,切块
- 煸炒青椒
- 青椒要去心切段
- 煸炒五花肉能出油,选择先炒五花肉
- 解决如何炒生菜
- 根据自身经验炒
- 炒生菜
- 清洗、择菜
括号这里表示函数的意思
切洗五花肉(),煸炒五花肉(),切洗青椒(),煸炒青椒(),煸炒青椒和五花肉()。 清洗择选生菜
- 要切什么
- 五花肉:切块
- 青椒:切段
- 要洗什么
- 青椒:去心
- 生菜:去泥
- 五花肉:简单冲刷
- 要炒什么
- 青椒:断生
- 五花肉:出油
- 青椒与五花肉
- 生菜
所以我可能需要会切菜的人,会洗菜的人,会炒菜的人。 而这几个可以是同一个,也可以是用不同的人。
括号里是参数。
- 如果是多个不同的人那么,希望速度最快,最好是切洗刚好满足煸炒需求,剩余的切洗与煸炒同时进行。
步骤1 | 步骤2 | 步骤3 | 步骤4 | 步骤5 |
切(五花肉)
| 洗(五花肉) | 煸炒(五花肉) | 煸炒(青椒,五花肉) | 煸炒(生菜) |
切(青椒) | 洗(青椒) | 切(生菜) |
- 如果是同一个人完成所有步骤,为了最大程度的避免在各个任务之间转换,减少精力损失:先完成所有切洗任务,最后完成煸炒。
切(五花肉)、切(青椒)、切(生菜)、洗(五花肉)、洗(青椒)、洗(生菜),煸炒(五花肉)、煸炒(青椒)、煸炒(青椒五花肉)、煸炒(生菜)。
面向对象式的下厨,像是熟手厨师,而面向过程式的下厨,有点像萌新下厨,都能解决问题,做出菜来,但是在如何解决在下厨过程中厨师突然想上厕所需要人紧急顶替这个问题上,两者有不同的表现。
面向对象的思想也可以联想到分工越来越精细的各个岗位。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)