“常规”的技术定义是啥?
Posted
技术标签:
【中文标题】“常规”的技术定义是啥?【英文标题】:What's the technical definition for "routine"?“常规”的技术定义是什么? 【发布时间】:2011-10-16 16:31:27 【问题描述】:我正在学习 lisp 语言(做 lisp 例程),在一般情况下我知道什么是例程,但在技术方面我可以谈论它,因为我现在开始学习例程。那么,常规的真正定义是什么? (我已经“用谷歌搜索”了这个但没有找到任何东西)
【问题讨论】:
【参考方案1】:您找不到技术定义,因为没有特定于 lisp 的技术定义。杂耍表演之外的“例行公事”只是功能的另一个名称。虽然我已经有很多年没有全职使用 Lisp 编程了,但没有人以任何正式的方式使用过这个术语,甚至没有人经常使用它。我们谈到了“函数”、“宏”和“表单”。如果有人说,'哦,有一个计算一个馅饼中有多少苹果的例程',那是完全不正式的。
【讨论】:
【参考方案2】:routine 一词源自subroutine,这是一个在 BASIC 等语言中更常见的术语,其中人们实际上创建了 SUBroutines。 (BASIC 实际上在 SUBroutine 和 FUNCTION 之间有区别,但无论如何......)
来自***条目:
在计算机科学中,子例程(也称为过程、函数、例程、方法或子程序)是执行特定任务的较大程序中的一部分代码,并且是相对独立于其余代码。
正如“子程序”这个名字所暗示的那样,子程序的行为方式与用作较大程序或另一个子程序中的一个步骤的计算机程序的行为方式大致相同。一个子程序通常被编码,以便它可以在程序的单次执行期间多次和/或从多个位置启动(“调用”),包括从其他子程序,然后分支返回(返回)到下一条指令之后子程序的任务完成后“调用”。
不同的语言/环境/时代有不同的生态系统,因此有不同的术语来描述相同的一般概念。这些天我通常只使用术语函数(或“OOP”环境中的方法)。
编码愉快。
为了好玩,我有社区维基。下面的列表有望涵盖在给定语言中使用哪些术语是“正确的”(被广泛接受的)来表示常规。 routine 非正式地用于以下所有语言的上下文中,因此除非它是事实上使用的术语,否则应将其省略。随意添加、更正和适当注释。
C-function Java - method。虽然函数也经常被使用,但术语函数并没有出现在Java Language Specification中。 C# - method and function。在规范中,函数是指函数对象和匿名函数。它们与方法不同,方法是类型(类或结构)的成员。还要考虑代表。 javascript - function or method。方法是通过对象的属性访问的函数。 Haskell - function。这是公认的术语。 斯卡拉-function or method。方法如果def
类型的成员,函数是一等值。
基本 - function or subroutine。子例程不返回值。支持引用调用。
FORTRAN - function or subroutine。子例程不返回值。支持引用调用。
LISP - function。 DEFUN -> DEfineFUNction,所有形式都是有效的表达式。还要考虑macros,它们本身不是函数,但可以说是例程。
VHDL-subprograms: functions and procedures。过程没有返回值。
SmallTalk - method
Python - method
Ruby - method(经常与函数互换?lambdas/Procs 可能被认为不同?)
Perl - function and subroutine。只有一种形式来声明函数/子例程,因此没有区别 w.r.t。返回值。使用方法(用于对象绑定函数)似乎不如其他语言流行。
帕斯卡 - procedures and functions
艾达-procedures and functions
【讨论】:
以上是关于“常规”的技术定义是啥?的主要内容,如果未能解决你的问题,请参考以下文章