美文网首页
Java SE| 数组索引为什么从0开始?

Java SE| 数组索引为什么从0开始?

作者: Alwways | 来源:发表于2020-03-26 15:55 被阅读0次

原文:Why numbering should start at zero by Edsger Dijkstra

表示自然数2,3,...,12的数列时中间三个点实在是碍眼,我们应该可以想到四种表记文法拿掉它们:

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

是否有理由认为其中一种是最优雅的呢?是的,确实有。考察a)和b)发现它们具有以下优点:边界之间的差正好等于所提及的数列的长度,这一结果是有说服力的。因此,考察结论是,在任一文法中,两个数列相邻意味着一个数列的上限等于另一个的下限。由于这些考察是有说服力的,她们让我们无法在a)与b)之间作出选择;故而我们换一种方法。现在考虑从最小

假设有一个最小自然数。像b)和d)那样排除下界的做法迫使一个从最小自然数开始数列如前所述的下界被挤到非自然数范围里。那相当不雅观,所以在下界的处理上,我们更希望是a)和c)里的≤的做法。现在考虑从最小自然数开始的数列:在数组收束为空数组,包含上界让下界的存在变得多余尴尬。那相当不雅观,所以在上界的处理上,我们更希望是a)和d)里的做法。我们的结论是a)最受青睐。

备注 产生于Xerox PARC的编程语言Mesa对所有四种文法都有特定记号表示。Mesa程序员的大量经验已经表明另外三种文法的用法一直是苦手和错误的根源,出于这种体会,Mesa程序员现在强烈建议不要使用后三个功能。我曾今提到这个实验证明—她价值何在—因为有些人对在实践中尚未得到证实的结论感到纠结。(备注结束)

处理长度为N的数列时,我们希望通过下标区分其中的元素,下面烦人的问题是分配给她起始元素的下标值。按照文法a),假如下标从1开始,其取值范围是1 ≤ i < N+1;然而下标从0开始给出了更为优雅的取值范围0 ≤ i < N。因此我们可以让所有的序号从0开始:一个元素的序号(下标)等于同序列中她前面的元素数。这个论述的意义在于我们应该将0视为最自然的数字—有生之年。

备注 许多编程语言没有对此细节予以足够的重视。在FORTRAN中下标一直是从1开始的;在ALGOL 60和PASCAL中,它们都采用了文法c);最近的SASL已经回到了FORTRAN文法的怀抱:事实上,SASL中的序列同时也是正整数上的功能。好可怜啊!(备注结束)

相关文章

  • Java SE| 数组索引为什么从0开始?

    原文:Why numbering should start at zero by Edsger Dijkstra ...

  • Java—Remove Deplicates from Sort

    题目 思路 定义index变量覆盖新数组的索引,从0开始; 遍历数组,索引i从1开始,如果arr[index] !...

  • laravel 数组【1.索引数组2.关联数组】

    PHP 索引数组 有两种创建索引数组的方法: 索引是自动分配的(索引从 0 开始): 或者也可以手动分配索引: 下...

  • 2018-12-15

    Array 数组:数组是一组有序的数据集合。数组索引:数组的每一项都对应一个索引(下标),索引从0开始。 定义数组...

  • Learning Perl 学习笔记 数组

    数组的索引:从0开始, #name + 1) -1 也表示数组的最后一个索引,所以 #name] == $name...

  • 二维数组

    Java中的二维数组1.声明数组并分配空间 或者 2.赋值逐个赋值,注意索引从0开始 或者在声明同时赋值 3.处理...

  • PHP之数组

    分类 索引数组索引值从0开始,依次递增 关联数组以字符串为索引,键和值对是无序组合,每个键都是唯一的 数组的定义 ...

  • (4)shell脚本编程进阶之数组、字符串切片

    (一)数组定义 数组:存储多个元素的连续的内存空间,相当于多个变量的集合 数组名和索引 索引:编号从0 开始,属于...

  • php-数组

    数字索引数组 大多数编程语言都支持这种数组,在PHP中,数字索引的默认值是从0开始的。 数字索引数组的初始化$pr...

  • javase part3 - 数组

    数组概念 数组是一种数据结构,特点是:连续性存储,内部元素类型相同 数组索引从0开始,数组最大索引为数组总长度 -...

网友评论

      本文标题:Java SE| 数组索引为什么从0开始?

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