功能命名诗

近25年来,我最认真的职责之一是指导数学软件.其中一部分涉及建立基本原则,保持整个系统的统一和一致性。但在某种程度上数学软件必须在单独的内置函数中表达,例如巢穴-这最终构成了系统。

这些函数中的每一个都封装了一些重复的计算工作,这些工作通常由一些深奥的算法塔来实现。现在大约3000个函数中的每一个都需要一个名称。

我们现在正处于A(壮观!)新版本徳赢中国数学软件,上周我花了一部分时间对系统中一些迷人的新领域进行最终设计评审。徳赢中国作为设计评审的一部分,我们正在确认和调整一些将用于新函数的名称。徳赢中国

函数的命名是一种奇怪而困难的艺术——有点像一种最终抽象的诗歌形式。目标是采用功能的概念和功能,把它的本质集中起来,或者两个,或者三个,单词(类)浅滩,或删除目录,或固定点列表)-当有人看到这些话时,他们马上就对这个功能有了正确的认识。徳赢彩票游戏即使是最简洁的普通诗歌,你至少可以用一些词来交流。在函数名中,你通常最多能得到三个。

有足够的经验,有时很容易为一个函数找到一个名字的小宝石。有时候,一想到这个功能,它甚至会显得非常明显。徳赢彩票游戏但有时需要花费大量的时间来解决一个似乎无法解决的问题,即将关于函数的所有内容打包成一个小名称。徳赢彩票游戏

这是一项不可饶恕和谦逊的活动。问题几乎总是一样的。你找不到一个好名字的原因是你不太清楚这个函数的作用。

有时这是因为功能设计不太正确。有点混乱,徳赢彩票游戏在你找到一个好名字之前,这必须是不可琢磨的。

非常令人满意,虽然,当你最终破解它的时候。这些天,我通常和一群人一起进行设计评审。当我们终于找到了正确的名字,所有在电话中的人(是的,基本上都是一个电话)立刻说“哦,是的,就这样。”我们都觉得花了一个小时有点傻,或者不管多久,只是想出一两个词。

在普通的人类语言中,徳赢中国新词通常是通过某种自然选择的形式发展起来的。通常一个词会被一个人作为一个短语引入,然后传播开来。有时会有点变化,无论是流行到足以被广泛理解,还是对一般交流有用,或者消失。

但对于计算机语言来说,模式是必然不同的。一旦引入了与语言中的“单词”对应的函数名,一定是马上就满了,永久的,语言的元素。对于包含该名称的程序,如果这个名字被改了,他们都必须被找到和更新。在里面数学软件,我很自豪地说,在将近25年的时间里,很少有人需要更改名字,以便编写一个程序数学软件1988年的1.0仍然可以通过最新版本的数学软件.

人类语言中的单词和计算机语言中的函数名还有另一个区别。在人类语言中,没有终极,绝对的,大多数单词的含义。相反,我们能做的最好的事情就是像在字典里一样,通过把单词和其他单词联系起来来定义单词。

但在计算机语言中,每个函数名最终都是指以绝对方式定义的特定功能块,可以通过特定的精确程序来实现。

这通常不会让你更容易找到函数名,尽管如此。它只是意味着“正确的名字”有一个更清晰的概念:一个人最有可能从中正确地了解功能的名称。

函数名在某种意义上是人机通信的终极点。它们是所有内部计算活动都必须与人类能够理解的事物联系在一起的地方。当功能简单时,有图片和其他替代品。但是,当功能多样化或复杂化时,除了使用语言和事物名称的语言结构之外,我们不知道其他任何可能性。

函数名数学软件最终以英语为基础,在大多数情况下,它们由普通的英语单词组成。在普通的自然人类语言中,有可能引入一个全新的词,徳赢中国并逐渐得到普及和理解。但在计算机语言的动态中,随着名字的突然出现,人们别无选择,只能利用人们对人类语言的现有理解,徳赢中国喜欢英语。

仍然,当我们在数学软件今天,在某种意义上,它们不只是基于“原始英语”。它们还依赖于通过已有的数千种功能发展起来的意义网。数学软件.

对于特定的名称的含义有明确的约定。徳赢彩票游戏(以生成列表;以开头的函数图像操作图像;以开头的函数发现包括某种搜索;等等。)在语言的典型用法中,名字往往会出现在一起。在语言和系统中发展出明确的概念框架和隐喻。(指重复功能应用;平的指嵌套结构的扁平化;动态的指动态交互;等等。

在普通的人类语言中,自然选择无疑会倾向于使用特定模式的单词。有时,例如一致性可能使单词更容易记住;有时候矛盾会让他们更加突出,因此更容易记住。但是没有一个大的计划来以一种特殊的方式组织单词:说,以避免有模糊的意思“接受”的短句,或者使单词更容易以特定的方式组织。

但是当我们在数学软件我们有能力,而且,我想,设计一切的责任。当然,发展数学软件是增量的,在任何特定的时间,我们只能预见未来会发生的事情。我努力用最好的方式命名每一个新函数。徳赢中国

有些标准是什么?

第一,必须利用人们现有的知识和理解。如果有一个熟悉的名字已经被广泛使用,如果可能的话,必须使用它。

当然,有时,这个名字可能只在某些特定的领域才熟悉。它可能很短,可能只有一封信,没有进一步的上下文就无法理解。在这种情况下,我们通常做什么数学软件就是把某个名字烧成某种程式化的上下文。(所以,例如,菲涅耳积分s(x)的名称是菲涅尔在里面数学软件

在建筑中数学软件,我们有一个长期的原则,就是总是尽量使每一个功能都尽可能通用,这样它就可以适用于尽可能广泛的情况。有时,虽然,一个函数将有一个特殊的,熟悉的,使用。但是如果函数的名称只反映了这种用法,一个是缩短了功能。因为没有更通用的名字,人们永远不会考虑在其他情况下应用它。(所以,例如,它的,不是“向量”,而且它的,不是“外部产品”。)

事实上,函数命名的职责之一是,在很大程度上直接决定人们对函数的看法。徳赢彩票游戏如果他们是以某一特定方向的名字引导的,这就是他们使用函数的方向。

甚至连名字的“纹理”也很重要,它能让人们正确地思考函数。徳赢彩票游戏一个复杂的函数应该有一个复杂的名称(比如动态模块埃文森德勒)直截了当,共同的,函数应该有一个简单的名称(如长度合计)执行清晰但不寻常的操作的函数应具有意外的名称(如螺纹通过

到现在为止数学软件函数的命名方法有很多先例。我们总是尽可能遵循这些先例。第一,因为它们通常代表了我们正在努力解决的命名问题的好解决方案。其次,因为通过遵循它们,我们可以保持一定的一致性,使系统更容易增长,对于人们来说,学习系统和猜测他们还不知道的功能。徳赢彩票游戏

当一个人为一个函数找到一个好名字时,发生的事情之一是当人们听到这个名字,他们可以成功地将其“解包”成一句话,描述函数必须经常执行的操作,只需将函数的名称作为句子的主要部分。事实上,当我们在为函数寻找一个好名字时,我经常建议我们试着写一个句子,描述我们可以在文档中心对于函数,但然后浓缩成我们需要的金块,作为名字本身。

函数命名的一个痛苦的方面是,无论你多么聪明,徳赢彩票游戏它永远不会完美。我经常声称唯一一种完全一致的语言就是什么都不做的语言。只要有实际的功能可以表示,不可避免地会出现尴尬的情况和角落。例如,我们希望在系统的每个区域保持一致的简单命名。但在这些领域的重叠处,存在着不一致性。

有时人们会遇到英语的局限性:一个概念没有任何熟悉的单词或短语,也许是因为这个概念对我们的经验来说是新的。在这种情况下,人们通常要做的,就像自然徳赢中国语言中的一样,就是想出一个类比。

我们认为有些类比和隐喻开始时相当疯狂和离奇。但最终他们变得更温顺了母猪收获投掷捕捉-以及一个扩展名字语言基础的重要途径数学软件.

如果英国人喜欢的话可能会更好数学软件-有这样一个特点:一个特定的词只意味着一件特定的事情,或者至少是一类东西。但这不是它的工作原理。一个词可以作为言语的不同部分,并且可以有非常不同的含义。通常在实际的英语用法中,可以通过上下文消除歧义。

但是在一个函数名的极小长度中,没有这个选择。这通常意味着你必须拒绝一些美妙的词,只是为了避免一个可能的误会,从一个不同的方式,它可以在英语中使用。(所以,例如,“Live”或“Active”不能作为动态的-他们太容易被误解了。)

如果幸运的话,同义词库沃尔夫拉姆阿尔法)会给一个词,捕捉相同的概念,但避免潜在的误解。但有时人们必须重新安排名字的整个结构,以避免误解的可能性。

然而,在所有这些判决之后,经过一系列的演练,明确了函数的作用,一个人必须得出结论:一个人必须确定一个明确的名字。这将代表该功能以及为更好地实现它所做的所有工作。这将作为一个永久性的处理,人们可以通过它访问数学软件.

我现在不知道在过去的四分之一个世纪里,我花了多少时间来写名字。数学软件.每一个都包含了一些想法,一些被冻结在一小堆文字中的创意概念。就像小诗。成千上万的人。

十五评论.显示全部

  1. 我记得我对播种和收获的引进感到非常惊讶。但我认为它们是伟大的动力,尽管我自娱自乐地想知道他们是否会在某个地方出生,而不是像伊利诺伊州那样的农业。

  2. 应该有一个计数函数

    匿名的
  3. 的确,在Wolfram的研究中,人们花费数小时、数小时和数小时来选择正确的符号名称,以及他们的论点,以及如何处理输入和输出中的特殊情况,与其他符号名称相比,最一致的是什么。我认为(通常)做出了一个很好的选择。如果将M中的符号名称与传统语言中的类(及其成员)中使用的名称进行比较(JavaC,C++,福特兰我们只能发现m中的名称仍然是最系统和最一致的。在这些传统语言中,有些名字和命名惯例在我身上引起了从轻微的笑声到彻底的欢笑的感觉。M也做出了一些错误的选择,但他们是诚实的。徳赢彩票游戏总而言之,函数/符号名称必须使用自然语言,问题就在这里。如果你想用正确的名字来形容它的作用,你仍然局限于英语为你提供的东西。

  4. 引用菲尔·卡尔顿的名言:“计算机科学中只有两个难题:缓存失效和命名。”

  5. 这篇博文让我想起了这句话:

    计算机科学中只有两个难题:缓存失效和命名。

    - Phil Karlton

    约翰斯
  6. 事物的命名是一件困难的事情,
    这不仅仅是你的假日游戏…

    -埃利奥特

    德雷斯
  7. @阿方索,@约翰:我听过的那句话的一个版本是,“计算机科学中只有两件困难的事情:缓存失效,命名事物,一次又一次的错误。”

  8. 有趣的是,你把命名和诗歌作了比较。它立刻让人想起保罗·狄拉克的轶事:

    奥本海默在G_廷根和伟大的数学物理学家工作,狄拉克有一天来见他说:“奥本海默,他们告诉我你在写诗。我不明白一个人如何在物理学的前沿工作,同时写诗。他们反对。在科学领域,你想说一些以前没人知道的话,徳赢中国用每个人都能理解的语言。在诗歌中,你一定会说……每个人都已经知道的话,没有人能理解。

    里克布莱恩
  9. 这篇博文让我想起了这句话:
    计算机科学中只有两个难题:缓存失效和命名。
    - Phil Karlton

  10. 事物的命名是一件困难的事情,
    这不仅仅是你的假日游戏…
    -埃利奥特

  11. 事物的命名是一件困难的事情,
    这不仅仅是你的假日游戏…
    -埃利奥特

  12. 应该有一个计数函数

  13. 事物的命名是一件困难的事情,
    这不仅仅是你的假日游戏…

    -埃利奥特

  14. 这篇博文让我想起了这句话:
    计算机科学中只有两个难题:缓存失效和命名。

  15. 事物的命名是一件困难的事情,
    这不仅仅是你的假日游戏。

隐藏注释»

?斯vwin中国蒂芬·沃尔夫拉姆,有限责任公司 条款γ RSS