数组的实际定义是什么?

Oll*_*ers 10 arrays terminology definitions

可能重复:
数组,重点是什么?

我之前试过问这个问题在数组和列表之间有什么区别?但在得出结论性答案之前我的问题已经结束(更多关于此问题).

我试图理解计算机科学中"阵列"一词的真正含义.我试图找到一个答案,没有根据本网站的精神进行讨论.我所要求的是语言不可知,但您可以利用您对使用过的各种语言中的数组/行的知识.

思考这个问题的方法:

  • 想象一下,你正在设计一种新的编程语言,并决定在其中实现数组; 这是什么意思呢?这些东西的属性和功能是什么.如果取决于语言的类型,怎么做?
  • 什么使数组成为一个数组?
  • 什么时候数组不是数组?例如,它是一个列表,向量,表格,地图或集合?

有可能没有一个关于数组是什么的精确定义,如果是这种情况那么是否存在任何标准或接近标准的假设或数组是什么?至少有共同的领域吗?也许有几个定义,如果是这种情况,我正在寻找每个定义中最精确的定义.

语言示例:

(纠正我,如果我错了任何这些).

  • C数组是单个类型的连续内存块,可以使用指针算法遍历或在特定偏移点访问.它们有固定的尺寸.
  • JavaScript,Ruby和PHP中的数组具有可变大小,可以存储任何类型的对象/标量,它们也可以增长或从中删除元素.
  • PHP数组有两种类型:数字和关联.关联数组具有使用字符串键存储和检索的元素.数字数组具有使用整数存储和检索的元素.有趣的是,如果您有:$eg = array('a', 'b', 'c')和你unset($eg[1])你仍然检索'c'$eg[2],只是现在$eg[1]是不确定的.(您可以调用array_values()重新索引数组).您还可以混合使用字符串和整数键.

在这个阶段怀疑C数组是这里唯一真正的数组,严格来说,数组是一个数组,它必须具有我在第一个要点中提到的所有特征.如果是这种情况那么 - 再次这些是怀疑我想要确认或拒绝 - JS和Ruby中的数组实际上是向量,而PHP数组可能是某种表.

最后的注意事项:我已经制作了这个社区维基,所以如果需要编辑几次答案来代替评论,请继续这样做.这里有共识.

Pal*_*rde 5

阵列|ərā|

名词

1令人印象深刻的展示或特定类型的东西范围:有关于该主题的大量文献 | 一系列令人眼花缭乱的选择.

2的有序排列,特别是

  • 部队安排.
    1. 数学:行和列中数量或符号的排列; 矩阵.
    2. 计算:一组有序的相关元素.
    3. 法律:陪审员名单.

3诗意/文学精致或漂亮的衣服:他穿着精美的衣服.动词

  1. [trans.](usu.被排列)以特定的方式显示或排列(事物):在桌子上排列的是自助餐| 部队对阵他.
  2. [trans.(穿上衣服)穿着(指定的衣服):穿着匈牙利民族服饰.
  3. [trans.法律人员(陪审团).ORIGIN中古英语(在感官[准备]和[准备就绪]中):来自古法语arei(名词),areer(动词),基于拉丁语ad-'朝向'+日语基础意思'准备'.

  • 字典的实际定义是什么? (2认同)

Dig*_*oss 5

它是或应该是所有关于抽象的

实际上有一个很好的问题隐藏在那里,一个非常好的问题,它带来了我长期以来的语言.

它变得越来越糟,而不是更好.

好的:有一些低级且广泛不受尊重的Fortran说得对,我最喜欢的语言如Ruby仍然出错:它们对函数调用,数组和属性使用不同的语法.究竟有多抽象?在fortran中function(1)具有相同的语法array(1),因此您可以在不更改程序的情况下将其中一个更改为另一个.(我知道,不是为了作业,而在Fortran的情况下,它可能是一个愚蠢的打卡字符集的意外,而不是任何故意.)

问题的关键是,我真的不知道x.y,x[y]x(y)应该有不同的语法.将特定抽象附加到特定语法有什么好处?为从事重构转换的IDE程序员创造更多工作?

说了这么多,很容易定义array.在它的第一个普通形式中,它是通过数字偏移和使用特定于语言的语法访问的内存中的连续元素序列.在较高的正常形式中,它是对象的属性,它响应典型数字消息.