“例行”在IT技术中的技术定义是什么?

33

我正在学习Lisp语言(编写Lisp例程),在一般情况下,我知道什么是例程,但在技术上的语境中,我无法谈论它,因为我现在开始学习例程。那么,例程的真正定义是什么?(我已经“谷歌”过了,但没有找到任何东西)

我正在学习Lisp语言来编写Lisp例程。在一般情况下,我知道例程是什么,但在技术上的语境中,我还不太清楚。那么,什么是例程的准确定义呢?(我已经在谷歌上搜索过了,但没找到相关信息。)
2个回答

49
术语“例程”源自子程序,在像BASIC这样的语言中,人们实际上创建了SUB例程,这是一个更常见的术语。(BASIC实际上有一个SUB例程和FUNCTION之间的区别,但尽管如此...)
从维基百科条目中可以看到:
在计算机科学中,子程序(也称为过程、函数、例程、方法或子程序)是一个程序中的一部分,执行特定任务,且相对独立于其余代码。
正如“子程序”这个名称所暗示的那样,子程序的行为方式与作为较大程序或另一个子程序中的一步使用的计算机程序非常相似。通常编写子程序,以便在程序的单个执行期间可以多次启动(“调用”),并且可以从其他子程序及多个位置开始,并在子程序的任务完成后分支回到“调用”后的下一条指令(返回)。
不同的语言/环境/时代具有不同的生态系统,因此描述相同概念的术语也不同。我现在通常只使用术语function(或在“OOP”环境中使用method)。祝编码愉快。

为了好玩,我已经将社区维基化。下面的列表希望涵盖哪些术语在给定语言中使用是“正确的”(广泛接受)来表示例行。非正式地说,在下面列出的所有语言环境中都使用例行,因此除非它是实际使用的术语,否则应省略。请随意添加、更正和注释。

  • C - 函数
  • Java - 方法。虽然也经常使用函数一词,但该术语在Java Language Specification中并不存在。
  • C# - 方法和函数。在规范中,函数指的是函数对象和匿名函数。它们与方法不同,方法是类型(类或结构)的成员。还要考虑委托。
  • JavaScript - 函数或方法。方法是通过对象的属性访问的函数。
  • Haskell - 函数。这是被接受的术语。
  • Scala - 函数或方法。如果是类型的def成员,则为方法,函数是头等值。
  • BASIC - 函数或子程序。子程序不返回值。支持按引用调用。
  • FORTRAN - 函数或子程序。子程序不返回值。支持按引用调用。
  • LISP - 函数。DEFUN -> DEfineFUNction,所有形式都是有效的表达式。还要考虑, 它们本身不是函数,但可以说是例程。
  • VHDL - 子程序:函数和过程。过程没有返回值。
  • SmallTalk - 方法
  • Python - 方法
  • Ruby - 方法(经常与函数交换?Lambda / Procs可能被认为是不同的?)
  • Perl - 函数和子程序。只有一种形式来声明函数/SUBroutine,因此在返回值方面没有区别。使用方法(针对对象绑定函数)似乎不像其他语言中那样普遍。
  • Pascal - 过程和函数
  • Ada - 过程和函数

2

你找不到 Lisp 的技术定义,因为没有特定于 Lisp 的技术定义。'例程'(routine),除了杂耍外,只是另一个函数的名称。虽然我已经很多年没有全职编写 Lisp 代码了,但在任何正式的场合或常见的用法中,没有人以任何形式使用该术语。我们谈论'函数'、'宏'和'表达式'。如果有人说:'哦,在馅饼里有一个计算苹果数量的例程',那就是完全非正式的。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接