冒号课堂§2.1:命令范式

第二课 重要范式(1)

课前导读

这一课讨论了五个最重要的编程范式:命令式、函数式、逻辑式、对象式和并发式。这些只是入门性的介绍,读者领会其精神即可,细节上不必过于在意。

本课共分四节——

1.命令范式

2.声明范式

3.对象范式

4.并发范式

2.1命令范式——一切行动听指挥

人生最伟大的目标是行动             ——《洛克菲勒的忠告》

关键词:编程范式,命令式,结构化编程,流程图

摘要:命令式编程简谈

?提问

什么是命令式编程?它为什么是最常见的编程范式?

什么是结构化编程?结构化编程的主要思想是什么?

:讲解

第二课伊始,冒号开门见山:“首先介绍一下最原始也是我们最熟悉的编程范式:命令式编程(imperative programming)。用命令式编写的程序由命令序列组成,即一系列祈使句:‘先做这,再做那’,强调‘怎么做’。更学术点说,命令式编程是电脑——准确地讲,是冯·诺伊曼机(von Neumann machine)——运行机制的抽象,即依序从内存中获取指令和数据然后去执行。从范式的角度看,其世界观是:程序是由若干行动指令组成的有序列表;其方法论是:用变量来储存数据,用语句来执行指令。”

逗号小声嘟囔着:“我们用的编程语言不都是命令式的吗?”

“应该说绝大多数语言是命令式的,但非命令式的语言也是存在的。关于后者,我们稍后再议。” 冒号纠正道,“这也在情理之中。语言的演化是渐进的,大多数语言追根溯源是汇编语言的升级,而作为与机器语言一一对应的汇编语言自然是命令式的,因而这种范式最为传统和普及。”

不料问号竟穷追不舍:“为什么机器语言就一定得是命令式呢?”

“我很欣赏你这种打破砂锅问到底的精神,不过你可以问到底,我却不敢保证能答到底哦。”冒号有些逗趣地说。

问号略带腼腆地笑了。

“从理论上而言,完全可以有非命令式的机器语言存在,前提是计算机采用了特殊的硬件实现,比如非冯·诺伊曼结构的数据流机(dataflow machine)和归约机(reduction machine)。但这类计算机并未流行于市,相应的机器语言自然罕见了[1]。”冒号还是给出了理由。

时间: 2024-09-13 17:51:18

冒号课堂§2.1:命令范式的相关文章

冒号课堂§4.4:情景范式

第四课 重温范式(4) 4.4情景范式--餐馆里的编程范式 理论是认生的孩童,多陪他玩玩,自会活泼起来 --题记 关键词: 编程范式,情景编程 摘要: 编程范式在餐馆中的应用 ?提问 l 什么是闭包?为什么被称为闭包?它有什么作用? l 规则引擎有何用处? l 能否设想一个生活中的场景,把介绍的九种编程范式都用上? :讲解 叹号摘下眼镜,揉了揉眼:"范式再好,多了也难免有些审美疲劳." 逗号也搓着太阳穴:"这段时间脑子被灌得沉甸甸的." "彼此彼此!你们的

冒号课堂§4.3:汇总范式

第四课 重温范式(3) 4.3汇总范式--一张五味俱全的大烙饼 形者神之质,神者形之用 --<范缜·神灭论> 关键词: 编程范式,设计模式 摘要: 总结编程范式 ?提问 l 编程范式与设计模式有什么区别? l 编程范式的核心价值是什么? l 总结前面介绍的编程范式,它们各自有哪些代表语言?核心概念和运行机制是什么?针对的问题和主要的目的是什么?实现原理是什么?常见的应用有哪些?有什么不足之处? :讲解 稍事休整后,大家重新团结在以冒号为中心的周围. 问号再度发问:"编程范式与设计模式

冒号课堂§4.2:逻辑范式

第四课 重温范式(2) 4.2逻辑范式--当算法失去了控制 道常无为而无不为 --<老子·道经> 关键词: 编程范式,逻辑式编程,Prolog,算法,逻辑,控制 摘要: 再谈逻辑式编程 ?提问 衡量软件复杂度是由代码的长度决定的吗? 为什么逻辑式的编码一般比过程式的更简洁? 逻辑式编程相比命令式编程有哪些优势和劣势? :讲解 问号提出:"逻辑式编程不是也很特别吗?前面似乎介绍得也不多." "那我们就用逻辑式语言Prolog再实现一次quicksort吧."

冒号课堂§4.1:函数范式

第四课 重温范式(1) 课前导读 本课对函数式编程与逻辑式编程作了更详细的展开,并对前面介绍的范式进行了汇总分析,最后用情景式编程贯穿所学范式. 本课共分四节-- 函数范式 逻辑范式 汇总范式 情景范式 4.1 函数范式--精巧的数学思维 知不知,上:不知不知,病 --<老子·德经> 关键词:编程范式,函数式编程,Haskell,Groovy 摘要: 再谈函数式编程 ?提问 掌握编程范式对编程语感的提高有什么作用? 为什么声明式程序一般比命令式程序更简洁? 函数式编程有哪些特征?为何简洁而不失

冒号课堂§3.3:切面范式

第三课 常用范式(3) 3.3 切面范式--多角度看问题 横看成岭侧成峰 --<苏轼·题西林壁> 关键词:编程范式,SoC,DRY,AOP,Aspect,join point,pointcut,advice,OOP 摘要:AOP简谈 ?提问 什么是SoC和DRY? 如何有效地避免紊乱.松散.重复的代码? 抽象与分解的原则是什么? 什么是横切关注点? 接入点与切入点有何区别? 什么是编织?有哪些不同的编织方法? 实施AOP有哪些步骤? 为什么说AOP是OOP的一种补充? 为什么提倡尽可能地阅读原

冒号课堂§3.2:超级范式

第三课 常用范式(2) 3.2 超级范式--提升语言的级别 智能繁衍:机器人生产机器人 --题记 关键词:编程范式,模板元编程,元编程,语言导向式编程,产生式编程 摘要:元编程简谈 ?提问 什么是元编程?它与通常的编程有何不同? 元编程有何用处?它有哪些应用? 相比自编的元程序,用IDE自动生成的代码有什么缺陷? 语言导向式编程有何优点?它与元编程有何关系? 元编程与产生式编程有何异同? 为什么说元程序是一种最高级的程序? :讲解 问号忽然想起一事,问道:"有一本名为<C++模版元编程&g

冒号课堂§3.1:泛型范式

第三课 常用范式(1) 课前导读 这一课介绍了四个常用的编程范式:泛型式.元编程.切面式和事件驱动式. 本课共分四节-- 1.泛型范式 2.超级范式 3.切面范式 4.事件驱动 3.1泛型范式--抽象你的算法 以类行杂,以一行万 --<荀子•王制篇> 关键词:编程范式,泛型编程,STL,算法 摘要:泛型式编程简谈 ?提问 泛型编程有哪些优点? STL有哪些要素?各自有什么作用? 泛型编程的泛化对象是什么? 泛型编程的核心思想是什么? :讲解 冒号重新开讲:"你们会不会经常遇到这样的情

冒号课堂§2.4:并发范式

第二课 重要范式(4) 2.4 并发范式--合作与竞争 在合作中竞争,在竞争中合作 --<竞合> 关键词:编程范式,并发式编程,线程,进程,过程式,函数式,逻辑式,对象式 摘要:并发式编程简谈 ?提问 并发式编程有何特点? 并发式编程有哪些好处? 合理的并发式编程设计应满足哪些条件? :讲解 逗号好奇地问:"还有其他类型的编程范式吗?" "不但有,而且有很多."冒号喝了一口水,悠悠地说,"并发式编程(concurrent programming

冒号课堂§2.3:对象范式

第二课 重要范式(3) 2.3 对象范式--民主制社会的编程法则 民为贵,社稷次之,君为轻 --<孟子·尽心下> 关键词:编程范式,OOP,面向对象,过程式编程 摘要: OOP简谈 ?提问 OOP是一种特殊的命令式吗? OOP的基本思想是什么? OOP到底好在哪里? OOP将要一统天下吗? 过程式编程与OOP在设计理念上有什么差异? :讲解 短憩之后,引号迫不及待地问:"面向对象的范式应该是一种特殊的命令式吧?" "面向对象?"冒号咕哝着,"姑