python中的索引从几开始计数_为什么大多数编程语言中的数组都是从0开始计数的,比从1开始计数有什么好处?...

其他答案也说的很多了,大致是从 0 开始对机器友好,从 1 开始对人友好。

不过我想找点有意思的,比如:世界上第一门高级语言属于哪个流派?从数组定义以及默认的下标起始值两个方面看,可以把编程语言分为三个流派:流派1:数组定义时指定数组长度,默认下标从 0 开始。例如 int v[10],定义了 10 个元素的数组,下标范围 0 到 9

流派2:数组定义时指定数组最大下标,默认下标从 0 开始。例如 int v[10],定义了 11 个元素的数组,下标范围 0 到 10

流派3:默认下标从 1 开始(这时数组最大下标就是数组长度了)

那么首先要解决的问题是……第一门高级语言是谁❕

好吧我没听过。去看一下它的语法,使用的还是数学符号语言。现在来看还真鸡儿奇怪…

这张表定义了三个变量:第一个变量是 Z0,它的类型是 0(即1 个 bit);第二个变量是 V1,它的类型是一个两个元素的 Tuple,每个 Tuple 的类型是某个类型 σ;第三个变量是 Z1,它的类型是一个四个元素的数组,数组每个元素是一个 bit。至于遍历嘛,要这样:

i 的值是从 0 到 n,这样数组下标就是从 0 开始了。这么看来, Plankalkül 属于流派 1。

那数组下标从 1 开始又是哪门语言开始的?我去考了一下古,这是 50 年代以后诞生的主要语言

已知较早的数组下标从 1 开始的语言包括 FORTRAN、ALGOL 68 和 COBOL

不算汇编语言,第一个是 Autocode。它有好多个版本,最初的 Mark 1 Autocode 并没有数组的概念。后来的 50 年代中期的 Mercy Autocode,它的数组是从 0 开始的

v' -> 180

which defined an array v'(0) to v'(180).

而且……震惊!它居然是第二个流派的!!Mercy Autocode 还是后来 1964 年出现的 Dartmouth BASIC 语言的前身,这就无怪乎很多 Basic 方言都是第二个流派了。Dartmouth Basic 就是最古老的 Basic 语言,它的第一个版本的索引其实是从 1 开始的,从第二个版本开始才支持从 0 开始的索引,理由是在表达多项式上更方便。

第二个 IPL,看起来是没有独立的数组概念,但它对于一个 List 的第一个元素使用 L0 指代

第三个 FLOW-MATIC,则是第一个使用英语描述的编程语言(之前都是使用符号语言)。它的创造者 Hopper 就是那个在机器里真的抓到了一只虫子的那个人❕(还是一位女性)。这个语言也没有数组的概念,但是它在对文件格式的定义上,所有的范围都是从 0 开始

再下面是跟 FORTRAN 同年 COMTRAN 了。作为 COBOL 的几门前辈语言之一,它对 table 或者 list 的索引是从 1 开始的

COMTRAN(包括 COBOL)都是直接面向 Business Programming 的。想想以前那么多纸质的文件,页码、表格行什么的都是从 1 开始,也可以理解为什么它们选择从 1 开始的索引了。

COMTRAN 跟 FORTRAN 同年诞生。但 FORTRAN 从 1954 年就开始设计

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值