- 内容提要
- 序 1:程序里的世界
- 序 2:最后一层表象
- 关于本书
- 致谢
- 引言:简单的本源
- 篇一:计算系统
- 第 1 章 数,以及对数据的性质的思考
- 第 2 章 逻辑
- 第 3 章 抽象
- 篇二:语言及其面临的系统
- 第 4 章 语言
- 第 5 章 从功能到系统
- 篇三:程序设计的核心思想
- 第 6 章 数据结构:顺序存储
- 第 7 章 数据结构:散列存储
- 第 8 章 执行体与它在执行过程中的环境
- 第 9 章 语法树及其执行过程
- 第 10 章 对象系统:表达、使用与模式
- 篇四:应用开发基础
- 第 11 章 应用开发的背景与成因
- 第 12 章 应用开发技术
- 第 13 章 开发视角下的工程问题
- 第 14 章 应用程序设计语言的复杂性
- 篇五:系统的基础部件
- 第 15 章 分布
- 第 16 章 依赖
- 第 17 章 消息
- 第 18 章 系统
- 篇六:系统的基本组织方法与原理
- 第 19 章 行为的组织及其抽象
- 第 20 章 领域间的组织
- 附一:主要编程范式 及其语言特性关系
- 附二:继承与混合,略谈系统的构建方式
- 附三:像大师们一样思考——从 UML 何时死掉 谈起
- 附四:VCL 已死,RAD 已死
文章来源于网络收集而来,版权归原创者所有,如有侵权请及时联系!
4.6 将 计算机程序设计 教成语言课,是本末倒置的
我们所谓的“会编程”是指:将我们的意图表达为计算系统的 理解能力 范围内的语义。而这种语义:
- 由计算系统与程序员共同确知的 数据 与 逻辑 构成;且,
- 最终可以由某种 计算方法 在指定计算系统上实施以得到计算结果。
这里的计算方法并不是指“算法”,而是指对某种计算实施过程的抽象,例如在“第 3 章 抽象”中所讨论到“命令式”和“函数式”这两种计算范式。所以,
会编程与掌握某种语言的语法形式是无关的。
编程实质上是一种在语义描述上的能力修养。具备这种能力之后,语法也就无非是一些规则、限制和对不同计算系统的理解能力上的差别了。所以“计算机程序设计”这门功课应该教你编程,而不是教你使用一门具体的语言——我们现在大多把它当成语言课,实在是本末倒置了。
- 又例如,古文中对语言的定义是自言为言,与别人说则为语,进而有食不语、寝不言之说。 ↩
- 莫里斯(C.W.Morris) 在他于 1938 年出版的《符号理论基础》一书中,最早将语法学(syntaotics 或 syntax)、语义学(semantics)、语用学(pragmatics) 明确地作为符号学的三个分支。从而构成了现代语言学研究的三个主要平面。 ↩
- 概念或实体。即,在表达者的意识中需要表达的对象。 ↩
- 这也意味着,语义上的表达能力决定了一门语言是否真正有别于其他语言。语义能力上等价的语言,除了开发人员的喜好或运行平台的限制之外,所谓有益的价值仅是开发库的丰富与社区的活跃等。而所有这些,都是与语言的本质无关的。 ↩
- 这事实上也意味着计算机语言需要:语法明确,无情调修饰、无语义引申、无歧义。 ↩
- 例如沟通中的“再重申一下我的主张”。 ↩
- 例如沟通中的“我们换个角度来看这个问题”。 ↩
- 例如沟通中的“给你画个草图如何”。 ↩
- 请容许我再次指出 Dijkstra 在《结构程序设计》中所说:“人们一旦了解在程序设计中如何使用变量,他就掌握了程序设计的精华。” ↩
- 如你所知的,这是一个函数。大多数语言的函数,都约定了其(形式上的)函数体内的标识符的生存周期。 ↩
- 在 JavaScript 的实现中,这里被实现为闭包。当一个闭包被创建时,它的上下文自然被初始化,而非(显式地)进行一个赋以初值的操作。你可以认为闭包是一个内存块,它创造的时候就是一块空的内存(full by Nil)。 ↩
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论