相应的名词“无副作用”?


10

对于函数或计算,我们有以下术语:

  • 确定性–确定性
  • 纯净–纯净

现在,无副作用的正确对应名词是什么?

“副作用自由”?“副作用自由”?“偏方有效”?


4
这应该不是关于英语和用法吗?;)在任何情况下,您都可以提供使用情况吗?我同意使用这种专有名词感觉不对。(作为同胞,我很同情;但是我们必须强迫自己不要从字面上翻译这些怪兽。如果可能的话,它们在德语中也几乎总是不好的。)
拉斐尔

1
无副作用有别于纯吗?
Andrej Bauer 2013年

@Raphael我也曾想在那儿提问题,但是当我在编程环境中询问正确的对应名词时,我认为计算机科学家可能会给我更好的答案。
播出

3
@AndrejBauer我认为这纯粹是两个副作用和无确定性,而免费的副作用,可能仍然是不确定的。
rolve

@Raphael实际上没有非常具体的上下文。我目前正在考虑确定性,无副作用和纯函数之间的相互关系。想想这些概念而又没有一个名字让我感到不安。:d
rolve

Answers:


8

语法问题的一个很好的经验法则是,如果它太复杂以至于您需要问,最好改写句子。例如,“功能的无副作用保证X”的写法更加简洁明了,“因为该功能无副作用,所以保证了X”甚至“该功能没有副作用,所以X是有保证的。”

话虽这么说,文章的关键字应该是名词短语,以便使用“副作用自由”。

(顺便说一句,“非有效”是一个形容词。)


(顺便说一句,“非有效”是一个形容词。)好的收获……感谢您的回答。但不幸的是,我并不需要一个单词。
rolve

8

取决于上下文,“无副作用”可能是一个更易读的术语。


7

字是nullipotence,的名词形式nullipotent。根据维基词典的第一个定义:

(数学,计算)描述没有副作用的动作。查询通常是无效的:它们返回有用的数据,但不会更改查询的数据结构。与幂等对比。

(强调我的)

http://en.wiktionary.org/wiki/nullipotent


哇,我以前从未听说过这个词。它似乎并不常用(Google报告“营养不良”的结果为16'300,“营养不良”的结果为1'580,而我的浏览器拼写检查器都不知道)。但是我可能只是为了它而使用它!谢谢。
rolve

3
我是域名专家,我认为我从未见过使用过该术语。这不是一个坏词,但绝对需要在使用前进行定义。
吉尔斯(Gilles)'所以

3
这使我意识到nullpotent和之间存在差异nilpotent
2013年

1
@Val,是的,在我研究抽象代数之前,我认为它们的意思相同。如果我感到特别残忍,我会说一些无效的东西什么都不影响,而无效的东西什么也不影响。:P
Matthew Piziak

3

我将此概念称为参照透明

但是,关于这个词实际上是否有意义,存在一些争议,因此,如果要在论文中使用它,则应首先对其进行定义。


2
参照透明性与没有副作用是不同的。您可以使用一种纯粹的函数式语言,其中的宏会左右左右捕获不需要的名称,从而破坏了引用透明性。
卡兹(Kaz)

@Kaz说到引用,您对该宏故事有任何引用吗?
rolve

@rolve我可能会觉得太狭view了。要进行对比,请参阅Tunes项目对参照透明性的定义,该定义确实与免受副作用有关:tunes.org/wiki/referential_20transparency_20and_20state.html
Kaz

@rolve我在评估的上下文中考虑了参照透明性:代码转换可以重新定位表达式,但是无论如何,这些表达式中的引用都可以正常工作。例如,卫生宏系统被认为是参照透明的。在引用和引用之间没有“偶然的不透明”,就像编译器在一些看不见的代码中插入的同名符号一样。
卡兹(Kaz)

@Kaz:正如我在回答中提到的那样,“参照透明性”有几个相互矛盾的定义
BlueRaja-Danny Pflughoeft13年


2

如果多次运行该函数与一次运行在系统上具有相同的净效果,则该函数是幂等的,并且具有幂等性。不知道这是您要找的东西。


1
谢谢,这是我将要考虑的另一个概念。也许可以说,幂等是无副作用的较弱形式。但这并不是我一直在寻找的东西。(在任何情况下,它不是一个名词;-))
rolve

1
好点-名词形式是幂等。
Tin Man

3
幂等函数的一个例子chmod::您可以多次运行它,它不会比第一次运行更多(除非文件在两次之间被更改...)。还有很多。它并非完全“无副作用”,因为它确实会更改某些内容,并且一旦权限更改,就可能阻止其他程序也执行某些操作。
Olivier Dulac

1
该术语在Web编程中可能是最重要的-如果您正在修改数据库(例如,添加新用户)并且要处理网络的不可靠性,则需要确保服务器接收到重复的消息不要引起意外的问题。
Tin Man

2
幂等函数绝对不是没有副作用的。幂等函数的N次调用与1次调用具有相同的总体副作用。没有作用的函数是幂等的特例。
卡兹(Kaz)

1

您几乎以“副作用自由”获得了它。问题在于,这可能意味着副作用是自由的(如“副作用的自由”)。需要明确的是,您需要“摆脱副作用”。并注意“自由”与“自由”不匹配;“没有东西”和“没有东西”都变成了“没有东西”。

通常,您会发现以英语为母语的人本能地避开了以“自由”为首的复合名词短语,即使它们是语法上的。例如,“言论自由”和“免于压迫的自由”不被称为“言论自由”和“压迫自由”。可以从上下文中弄清含义(“语音自由”可能不是“言论自由”,“压迫自由”不是“压迫自由”),但形式根本不是谐音的。即使那仅仅是出于废止,也是如此。

CS的学术论文也面向包括非英语国家的听众在内的全球读者撰写。如果有能力,请像说英语的人一样写作。


感谢您的解释,对我来说它们似乎很合理。如果像我在前一篇文章中那样用破折号将单词拼写为“副作用自由”,这会有所不同吗?还是那是错误的?
rolve

连字符不会改变含义。关于连字符,请参见此处。适用于复合名词部分。
卡兹(Kaz)

1
“副作用自由”很好并且被广泛使用。没有实际的模棱两可,因为在两种可能的解析中,“摆脱副作用”是一个非常明智的概念,经常被讨论,而“副作用自由”则是胡说八道,没人会谈论。如果一个短语具有明显的含义,人们就不会去寻找其他含义:他们只会继续阅读句子的其余部分。
David Richerby 2013年

1
@DavidRicherby感谢您的评论,我在想同样的事情。仍然很高兴了解到理论上存在歧义。
rolve

1
“副作用自由”是标准的惯用语。它只能合理地意味着一件事。ergo,这是什么意思。存在语法是为我们服务,而不是奴役我们。
David Richerby

-1

您可能想要“ 正交性 ”。它似乎完全符合您的定义。


感谢您的回答。但是,我认为正交这个词仅用于概念,而不用于计算或功能。但是,确实可以将两个无副作用的函数视为正交的,因为它们不会相互干扰。
rolve

我的理解是“正交性”也用于函数(我认为有时将纯函数称为“正交”)。但是我可能是错的,因为“正交”感觉像是需要第二件事,即与其他东西正交的东西,所以实际上毕竟不可能是那么普遍……
CamilB

但是,为什么要为没有副作用的功能搜索一个单独的术语呢?“纯功能”的确切含义是:既具有确定性,又没有副作用(维基百科说)。
CamilB

正是这一点:我想对无副作用但不一定具有确定性的函数进行推理。Pure已经“太多了”。
rolve

我现在知道了。搜索不确定的无副作用函数将是一个有趣的练习。除了原子之外,我什么都没想到,可以用QM建模:)我可以推荐thesaurus.com吗?也许有一个与副作用有关的名词的反义词。另外,也许您需要的单词是必须从另一种语言添加到英语的单词。我现在
就让
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.