返回介绍

4.6 将 计算机程序设计 教成语言课,是本末倒置的

发布于 2024-12-15 23:01:45 字数 1589 浏览 0 评论 0 收藏 0

我们所谓的“会编程”是指:将我们的意图表达为计算系统的 理解能力 范围内的语义。而这种语义:

  • 由计算系统与程序员共同确知的 数据逻辑 构成;且,
  • 最终可以由某种 计算方法 在指定计算系统上实施以得到计算结果。

这里的计算方法并不是指“算法”,而是指对某种计算实施过程的抽象,例如在“第 3 章 抽象”中所讨论到“命令式”和“函数式”这两种计算范式。所以,

会编程与掌握某种语言的语法形式是无关的。

编程实质上是一种在语义描述上的能力修养。具备这种能力之后,语法也就无非是一些规则、限制和对不同计算系统的理解能力上的差别了。所以“计算机程序设计”这门功课应该教你编程,而不是教你使用一门具体的语言——我们现在大多把它当成语言课,实在是本末倒置了。

  1. 又例如,古文中对语言的定义是自言为言,与别人说则为语,进而有食不语、寝不言之说。
  2. 莫里斯(C.W.Morris) 在他于 1938 年出版的《符号理论基础》一书中,最早将语法学(syntaotics 或 syntax)、语义学(semantics)、语用学(pragmatics) 明确地作为符号学的三个分支。从而构成了现代语言学研究的三个主要平面。
  3. 概念或实体。即,在表达者的意识中需要表达的对象。
  4. 这也意味着,语义上的表达能力决定了一门语言是否真正有别于其他语言。语义能力上等价的语言,除了开发人员的喜好或运行平台的限制之外,所谓有益的价值仅是开发库的丰富与社区的活跃等。而所有这些,都是与语言的本质无关的。
  5. 这事实上也意味着计算机语言需要:语法明确,无情调修饰、无语义引申、无歧义。
  6. 例如沟通中的“再重申一下我的主张”。
  7. 例如沟通中的“我们换个角度来看这个问题”。
  8. 例如沟通中的“给你画个草图如何”。
  9. 请容许我再次指出 Dijkstra 在《结构程序设计》中所说:“人们一旦了解在程序设计中如何使用变量,他就掌握了程序设计的精华。”
  10. 如你所知的,这是一个函数。大多数语言的函数,都约定了其(形式上的)函数体内的标识符的生存周期。
  11. 在 JavaScript 的实现中,这里被实现为闭包。当一个闭包被创建时,它的上下文自然被初始化,而非(显式地)进行一个赋以初值的操作。你可以认为闭包是一个内存块,它创造的时候就是一块空的内存(full by Nil)。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文