【问题标题】:Little languages similar to the "picture language" in SICP类似于 SICP 中“图片语言”的小语言
【发布时间】:2014-04-24 10:43:13
【问题描述】:

SICP 第 2.2.4 节描述了一些“图片语言”来构建复杂的图像模式。该语言定义了一个基元 painter 来在给定的框架内绘制图像,并定义了转换和组合 painters 以创建新的 painter 的函数。

我喜欢这个示例,并希望看到更多此类语言的示例(最好在Scheme 中)。我更喜欢系统/业务领域的语言。你知道这些小语言吗?

【问题讨论】:

  • 你听说过Logo吗?
  • 不,谢谢。我去看看。
  • Logo 是一种编程语言,用于教 6 岁的孩子如何编程。它使用海龟图形来做到这一点。例如,要绘制一个正方形,您将向前移动x 个单位,向右转 90 度,依此类推 4 次。它还通过教孩子们如何教乌龟新命令(即定义函数)来教孩子们抽象。例如,您可以定义一个函数让乌龟画一个正方形和一个三角形,然后使用这些函数让乌龟画一个房子。另外 Logo 与 Lisp 非常相似。它是由 Seymour Papert 在麻省理工学院时创建的。这有帮助吗?
  • 谢谢。是的,它有帮助。但是,对于系统/业务领域的日常任务,我更喜欢一种小语言。 (我会更新问题)
  • Abelson 说 Lisp* 是一种工具,可以用来解决您的问题。这意味着您可以通过这样做来解决您遇到的所有问题。 (* 他们在视频讲座中称为 Scheme Lisp)

标签: scheme sicp


【解决方案1】:

这些“小”语言也称为Domain-specific languages 或DSL。它是一种广泛使用的编程范式,但它也有其优点和缺点。

例如有一个商业通用的游戏系统,叫做Zillions of Games。它使用S-expressions,所以如果你知道Lisp,它的语法看起来很熟悉。事实上,任何游戏脚本语言都是 DSL。

如果您是 Web 开发人员,您经常会处理模板语言。您也可以将模板语言视为特定领域的语言。其中一些可以通过自定义模板标签进行扩展,例如Django template language

当前的一些通用编程语言最初是作为特定领域的语言开发的。例如,Erlang 最初是由爱立信为电话应用程序设计的。

【讨论】:

    【解决方案2】:

    每个精心设计的任何规模的程序都将包含一种或多种“图片语言”。要查找示例,请尝试 MIT SchemeSchemers.org

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-27
      • 2013-01-21
      • 2010-11-30
      • 1970-01-01
      相关资源
      最近更新 更多