返回介绍

8.6 一门语言与一个程序的区别,仅在于参考环境的差异——后者被称为运行时环境 (Runtime)

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

对于 ship() 来说,所谓 合适的条件 就是类似这样的一个上下文环境:

1
2
3
4
5
6
7
  _ship_env_0: {
    people: {
      row:      /* 划水 */
    },
    water:      /* 水 */, 
    checkShore: /* 检测岸 */
  }

我们来考虑类似环境的可能性。例如,假设我们将原始问题中的“水”和“检测岸”确定下来,则 ship 将可能有许多种方案。如:

1
2
3
4
5
6
7
  _ship_env_1: {
    water:     /* 水 */, 
    checkShore:  /* 检测岸 */,
    ship: function(people) {
      // people.row 的可能性是无穷的
    }
  }

假设我们也将“人”确定下来,那么方案就只剩下一种:

1
2
3
4
5
6
  _ship_env_2: {
    water :     /*水*/, 
    checkShore: /* 检测岸 */,
    people:     /* 人 */,
    ship: function() { ... }
  }

除非我们——人——能有不同样的 row() 方法。

在从 _ship_env_0_ship_env_1 的演变过程中,我们把 ship() 和它相关的环境 _ship_env 绑定在了一起。这是一个不小的变化,因为它的含义是语义与语用之间的绑定关系。如果我们将 _ship_env 分离出去,则 ship() 将是 DSL(领域特定语言,Domain Specific Languages)的一个实现;如果将 _ship_envship() 绑在一起,那么 ship() 就是一个应用程序中的确定求解。

前者创建了一门语言,后者创建了一个程序。

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

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

发布评论

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