为什么除了 lua,数组索引基本都从 0 开始?很反人类的设计,很容易写出 bug

2024-03-24 00:20:33 +08:00
 drymonfidelia
15383 次点击
所在节点    程序员
105 条回复
sunfall
2024-03-24 11:20:49 +08:00
@newtype0092 看到这才发觉问的从 0 开始反人类
akira
2024-03-24 11:24:48 +08:00
pascal 和 delphi 已经没人提了么。。
howieyoung91
2024-03-24 11:34:23 +08:00
0 是指偏移量,并不是第 0 个、第 1 个这种意思
roc1415926816
2024-03-24 11:43:57 +08:00
自然数不就是从 0 开始的吗。
你用的尺子的时候刻度也是从 0 开始的。
hikarugo
2024-03-24 11:46:08 +08:00
反你=反人类,但凡 cs 过了第一年都不会问出这种问题。
只会用🔨然后上工人论坛大呼其他工具反人类,说🔧🪛这些很容易弄伤手。
phoulx
2024-03-24 11:56:27 +08:00
建议复习(预习?) Dijkstra 的文章:Why numbering should start at zero
https://www.cs.utexas.edu/users/EWD/transcriptions/EWD08xx/EWD831.html
yanyao233
2024-03-24 12:05:23 +08:00
从没因为这个写出过 bug ,我觉得这种问题更多应该从自身找问题
deplives
2024-03-24 12:28:52 +08:00
反思反思,写了几十万行代码还能问出这个问题。哦,有可能你的几十万都是 lua ,脚本小子。
lyer5
2024-03-24 12:31:38 +08:00
为什么感觉索引从 1 开始才是反人类,不习惯😂
tonytonychopper
2024-03-24 12:38:55 +08:00
除非是新手不然很难出错吧
cmdOptionKana
2024-03-24 12:43:31 +08:00
@roc1415926816 自然数是否从 0 开始其实也不是很“自然”,有过争论和修改。

“2000 年左右之前的中小学教材一般不将 0 列入自然数之内。在 2000 年左右之后的新版中小学教材中,普遍将 0 列入自然数”(摘自维基百科)
julyclyde
2024-03-24 12:46:51 +08:00
@nuistzhou 只听说过 G 层电梯;还有零层的吗?
wangxiaoer
2024-03-24 12:47:07 +08:00
别扯淡了,随便去大街上拉个人,把你是个手指头伸出去,问他第一个是第几个,你看看有几个说 0 的。

楼上有些说尺子、时钟的,这些都是指的某一刻,而数组第 n 个元素很显然不是某个刻度,而是某两个刻度之间的那个元素。 如果类比为尺子、时钟,正常人肯定也会认为 第一段、第一个小时更符合直觉。

这个下标从零开始楼上已经解释清楚了,后来就约定俗成大家都这么做了,但并不意味这就是真理,不同的编程语言设计者可以凭自己喜好选择不同的方案,不存在啥对错之分。
gpt5
2024-03-24 12:49:07 +08:00
Matlab 也是从 1 开始
adoal
2024-03-24 12:53:38 +08:00
从几开始都是浮云。甚至有的语言可以自由定义数组实例的上下标范围。
相对于下标开始的数值来说,更有讨论意义的是,表示一段离散区间时,结束位置用 inclusive 还是 exclusive 。
roundgis
2024-03-24 12:54:22 +08:00
自从 C 系语言统治编程界后就很少听到这种言论了
GG668v26Fd55CP5W
2024-03-24 12:57:15 +08:00
只是语言设计者偏好,跟喜欢某种东西的颜色一样,至于说非要写一千行代码才能理解的说法,纯属放 tm 的狗屁。
roundgis
2024-03-24 12:57:21 +08:00
@julyclyde 我现在住的地方 G 在电梯就是 0 层

停车场是-1 -2
cmdOptionKana
2024-03-24 12:58:13 +08:00
@wangxiaoer 看大家的讨论,可以发现,人类为了维护自己的习惯或选择,会强行赋予“正确性”甚至“神圣性”,很有趣也很常见的心理现象。

这也让我想另一件趣事,起很多人对“独立思考”的理解是:不受外界的影响,坚持自己最初的想法,不要被人改变想法,主要集中于思考如何维护自己的正确性。

但独立思考其实应该是反思,主要思考自己可能是错的,要对自己最初的想法进行“拷打”,看它能不能经受住质疑,一旦发现逻辑有问题就要敢于改变或修正自己的想法。
julyclyde
2024-03-24 12:59:43 +08:00
@roundgis 按钮上写的是零层吗?好厉害!

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://ex.noerr.eu.org/t/1026418

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX