20180423《冒号课堂》
打卡 002刘乃业 20180423 14/100
书名:《冒号课堂》
作者:郑晖
用时:60分钟
输出:
1.4节:编程范式---程序王国中的世界观和方法论
问题1:什么是编程范式?
一门语言的语法、工具、技巧相当于兵器的招法,掌握很重要,更重要的却是心法。招法重形,心法重意。编程范式就是一种心法。所谓编程范式,指的是计算机编程的基本风格或典范模式。上面讲的都很抽象,根本就没讲明白什么是编程范式!下面讲到了,面向对象就是一种编程范式,那么我可以通过详细了解面向对象,从而了解编程范式。
编程是为了解决问题,而解决问题可以有多种视角和思路,其中普适且行之有效的模式被归结为范式。
问题2:编程范式与编程语言的关系是什么?
编程范式是抽象的,必须通过具体的编程语言来体现。编程范式体现在语言的核心概念和表达机制中。一种语言的语法和风格与其所支持的编程范式密切相关。
读完这一小节,我还是不知道什么是编程范式!(可以看网易公开课中的编程范式讲座)这一小节也没有解决我的问题,即如何判断一种语言是否适合我,是否适合解决问题?
1.5节:开发技术---实用还是时髦?
本节谈到了库、工具包、框架、设计模式、架构、战术、战略等概念。
有些概念和技术即使背得烂熟,用的烂熟,那也不代表真正掌握;有些概念和技术看起来很新奇,却不过是新瓶装旧酒。用的烂熟不等于用得恰到好处,能解决问题不等于没有后顾之忧。个人体会,应用哪个技术只是看到这个技术能解决某一个问题才用,用完后,过了一段时间可能又忘记怎么用。如何才能掌握一个技术的精髓?
本书的很多概念都没有明确的定义,都是在讲概念有哪些特性,功能,适用范围。
问题1:库和工具包与框架有何不同?
库和工具包侧重代码重用,框架侧重设计重用。
开发一个复杂的应用软件,快速有效的方式通常是:在宏观上使用框架控制整体的结构和流程;在微观实现上使用库和工具包解决细节问题。它们的作用都是为了不重新发明轮子(而我总是在重新创造轮子!所以开发速度慢!),框架针对特定领域的整体设计,库和工具包针对底层代码。
最大的差别是设计理念的不同:库和工具包是为程序员带来自由的,框架是为程序员带来约束的。举例说明:行军打仗时,讲究排兵布阵,程序员是士兵,库和工具包是武器,框架就是那阵。
问题2:什么是设计模式、惯用法、架构?
它们都是软件思想,而不是软件产品。设计模式侧重设计,惯用法侧重实现。
设计模式是针对某些经常出现的问题而提出的行之有效的解决方案,它侧重思想重用。
惯用法也是针对常发问题的解决方案,但侧重实现,与实现语言密切相关。
架构一般指系统软件最高层次的整体结构和规划。
本节最后,作者举了英语学习的例子,在中国,学生都是背单词,背语法、句型,学了很多年,但是要讲出地道英语,还不如一个英国的三岁小孩。这是因为缺乏语感的重视和培养,只会中式英语。而学习编程范式就是为了加强编程语言的语感。
我的总结:上面两小节的概念可以分为两类
思想:设计模式(战术)、惯用法、架构(战略)、编程范式。
产品:库、工具包、框架。
我的问题:设计模式有工厂模式、监听模式、代理模式等,惯用法有哪些?架构有哪些?