美文网首页
为什么numbering 应该从0开始

为什么numbering 应该从0开始

作者: will_7c3c | 来源:发表于2023-03-05 15:44 被阅读0次

    为什么numbering 应该从0开始

    竟然有Dijkstra关于这个问题的严肃活泼的阐述

    why numbering should start at zero
    还有其手稿

    我来翻译一下.

    在不用省略号的前提下表示自然数2,3,...,12 ,我们有四种方式

    a) 2 ≤ i < 13
    b) 1 < i ≤ 12
    c) 2 ≤ i ≤ 12
    d) 1 < i < 13

    那么这里面有没有一个选项是比其他三个更好的呢?

    是的,确实是的.

    非常明显的,ab选项有一个又是在于上下限之差是等于数列的长度的.

    另一个非常明显的点在于,对这两个表达式来说,任意两个相邻子序列一个的上界等于另一个的下界.

    纵使我们的观察很有效,但这不能帮助我们从a,b当中选出来一个更好的.所以我们接着往下来

    我们知道有一个最小的自然数.会被b,d天然的排除到下界之外,如果我们要包含这个最小的自然数在表示子序列过程中,我们必须使用非自然数,这是非常sb的行为.

    所以我们在表示下界的时候更希望使用闭包,也就是≤ ,这一点a,c是满足的

    现在我们继续思考,我们的子序列可以从最小的自然数开始了,表示子序列为空时,闭包的上界表达会让我们又不得不使用非自然数.这同样是sb的.所以对于上界,我们倾向于使用<.

    这样我们得出a选项将会是最好的


    当处理一个长度为 N 的序列时(希望通过下标来区分其中的元素) ,一个棘手的问题是为其起始元素赋什么下标值。根据 a表达式 ,当从下标1开始时,下标范围1≤ i < N + 1; 然而,从0开始,给出了更好的范围0≤ i < N。因此,让我们让序数从零开始: 元素的序数(下标)等于序列中它之前的元素数。这个故事的寓意是,我们最好把零当作一个最自然的数字ーー经过了这么多个世纪。

    备注:很多编程语言没有很好的注意到这个细节,比如说Fortran ,Pascal....


    上述情况是由最近的一起事件引发的。当时,我在纽约大学的一位数学同事(不是计算机科学家)情绪激动地指责一些年轻的计算机科学家“迂腐”,因为他们习惯性地开始数字为零。他把有意识地接受最明智的惯例当作一种挑衅。(另外,“结束... ...”的惯例被视为具有挑衅性; 但这个惯例是有用的: 我知道一个学生在一次考试中差点挂了,因为他默认题目在第一页的底部就结束了。)我认为Antony Jay的观点是正确的: “在企业宗教和其他宗教中,异教徒必须被驱逐出去,不是因为他有可能是错的,而是因为他有可能是正确的

    Plataanstraat 5 11 August 1982
    5671 AL NUENEN prof.dr. Edsger W. Dijkstra
    The Netherlands Burroughs Research Fellow

    相关文章

      网友评论

          本文标题:为什么numbering 应该从0开始

          本文链接:https://www.haomeiwen.com/subject/epzuldtx.html