代码之家  ›  专栏  ›  技术社区  ›  Ellen Spertus

在球拍中,“程序”和“功能”是同义词吗?

  •  0
  • Ellen Spertus  · 技术社区  · 6 年前

    在Racket(Scheme的方言)中,“程序”和“功能”是同义词吗?这似乎是由 the documentation 。例如 compose 将其描述为 程序 那个

    [r] 埃特纳 程序 这构成了给定的 功能 ...这个 组成 作用 允许给定的 功能 消费和生产任何数量的 价值观

    (以上所有的斜体字都是我加的。)

    我明白 procedure? 是一个图书馆程序和 function? 事实并非如此。我的问题是,在讨论程序时(例如在授课或编写文档时)互换使用这些术语是否正确。

    2 回复  |  直到 6 年前
        1
  •  3
  •   Ellen Spertus    6 年前

    TL;博士,这只是行话,意思是一样的。函数、过程和静态方法在编程中是相同的。

    历史上,函数在数学意义上是参数到结果之间的映射。过程是一个代码块,它执行某些操作,其输出不需要绑定到任何特定的输入。 因此,你可以说函数是一个没有副作用的过程。

    方案标准仅使用术语“程序” .你根本找不到关于函数的任何提示。球拍在历史上是为教育目的而制定的标准方案,并且在今天的大部分时间内仍然与方案兼容,但它们已经发生了分裂,并且不认为自己遵循方案标准。 How to design programs 很多文档都使用了函数这个术语,在本文档中,函数是过程的同义词。

    Common Lisp与它的前身一样,始终如一地使用“函数”一词,它早于Scheme。

    我想我甚至在不同语言之间翻译了一个SO答案,并更改了代码,还切换了函数和过程,以与语言行话本身保持一致。我希望有朝一日能看到球拍被清理干净,用一个名字来统治所有球拍。

        2
  •  2
  •   John Clements    6 年前

    简短的版本:是的。

    较长的版本:许多人在调整词汇以用于教学方面做得很好。这是我想到的第一篇论文,尽管它没有具体说明程序/功能选择:

    https://cs.brown.edu/~sk/Publications/Papers/Published/mfk-measur-effect-error-msg-novice-sigcse/paper.pdf

    当然,从教育学的角度来看,同一件事有两个名字是没有帮助的,叹气。

    最后,如果你在网上问这个问题,你会得到一个更权威的答案(坦率地说,我想知道这里的情况是什么) Racket Mailing List .

    [编辑]哦,更进一步,我根本不会说这个词 procedure 更可能表示库中定义的内容。