1索引编程语言列表?

哪些编程语言是1索引的?

到目前为止,我得到了:Algol Matlab Action! Pascal和Fortran?

编辑:他的意思是语言的数组订阅从1开始,而不是像C中的0。

列表可以在wikipedia上find。

ALGOL 68 APL AWK CFML COBOL Fortran FoxPro Julia Lua Mathematica MATLAB PL/I RPG Sass Smalltalk Wolfram Language XPath/XQuery 

Fortran从1开始。我知道,因为我父亲在出生之前就习惯编程Fortran(现在我33岁),他真的批评现代编程语言从0开始,认为它不自然,不像math那样是人类思考的方式,等等。

但是,我发现从0开始的事情是非常自然的。 我的第一个真正的编程语言是C和*(PTR + N)不会很好地工作,如果N没有开始在零!

一个很大的语言列表是在“Array system cross-reference list”表(默认基本索引列)下的维基百科下的编程语言比较(数组 )

这对于1对0索引和订阅有一个很好的讨论

从博客引用:

EW Dijkstra编写的EWD831,1982。

当处理一个长度为N的序列时,我们希望通过下标来区分这些元素,下一个棘手的问题是要分配给它的起始元素的下标值。 遵循惯例a)当以下标1开始时,下标范围1≤i<N + 1; 所以让我们让我们的序列从零开始:一个元素的序号(下标)等于序列中前一个元素的数量。 故事的寓意是,我们更好地关注 – 在所有这些世纪之后! – 零作为一个最自然的数字。

备注::许多编程语言的devise都没有适当的关注这个细节。 在FORTRAN下标总是从1开始; 在ALGOL 60和PASCAL中,公约c)已被采纳; 最近的SASL已经在FORTRAN惯例上倒退了:SASL中的一个序列同时也是正整数上的一个函数。 可怜! (备注完)

Fortran,Matlab,Pascal,Algol,Smalltalk等等。

同样在Ada中,您可以根据需要定义您的数组索引:

 A : array(-5..5) of Integer; -- defines an array with 11 elements B : array(-1..1, -1..1) of Float; -- defines a 3x3 matrix 

有人可能会争辩说,用户定义的数组索引范围将导致维护问题。 但是,以不依赖于数组索引的方式编写Ada代码是正常的。 为此,该语言提供了元素属性,这些属性为所有定义的types自动定义:

 A'first -- this has the value -5 A'last -- this has the value +5 A'range -- returns the range -5..+5 which can be used eg in for loops 

你可以用Perl来完成

 $[ = 1; # set the base array index to 1 

如果你觉得这样,你也可以从42开始。 这也影响string索引。

其实使用这个function是非常沮丧的。

Erlang的元组和列表索引从1开始。

JDBC(不是一种语言,而是一个API)

 String x = resultSet.getString(1); // the first column 

Lua – 令人失望

find了一个 – Lua(编程语言)

检查数组部分说 –

“Lua数组基于1:第一个索引是1而不是0,因为它是许多其他编程语言(尽pipe允许显式索引0)”

Delphi中的string从1开始。

(静态数组必须显式指定下限,dynamic数组总是从0开始。

ColdFusion – 即使它是Java下的

阿达和帕斯卡。

VB经典,至less通过

 Option Base 1 

PL / SQL 。 其结果是当使用从0开始并与Oracle交互的语言时,您需要自己处理0-1转换以便通过索引进行数组访问。 在实践中,如果使用像foreach这样的构造,或者按名称访问列,那么问题就不大了,但是可能需要最左边的列,例如列1。

索引从CFML开始。

还有Smalltalk

Visual FoxPro,FoxPro和Clipper都使用数组,其中元素1是数组的第一个元素…我认为这是你的意思是1索引。

我看到这里的fortran的知识仍然是在'66版本。

Fortran具有variables数组的下限和上限。

意思是,如果你声明一个数组,如:

 real, dimension (90) :: x 

那么1将是下界(默认)。

如果你宣布它像

 real, dimension(0,89) :: x 

那么它的下界为0。

如果另一方面,你声明它像

 real, allocatable :: x(:,:) 

那么你可以把它分配给任何你喜欢的。 例如

 allocate(x(0:np,0:np)) 

意味着数组将具有元素

 x(0, 0), x(0, 1), x(0, 2 .... np) x(1, 0), x(1, 1), ... . . . x(np, 0) ... 

还有一些更有趣的组合可能:

 real, dimension(:, :, 0:) :: d real, dimension(9, 0:99, -99:99) :: iii 

这是作为有兴趣的读者的作业:)

这些只是我记得我头顶的那些。 由于Fortran的主要优势之一是arrays处理能力,很显然这里没有提到的其他input和输出。

没有人提到XPath。

Mathematica和Maxima,除了已经提到的其他语言。

informix,除了已经提到的其他语言。

包括Pascal,Object Pascal,Modula-2,Modula-3,Oberon,Oberon-2和Ada(以及其他一些我可能忽略的)在内的整个Wirthian语言行允许从任何你喜欢的数据中索引数组,显然,1。

Erlang从1开始索引元组和数组。

我认为 – 但不再积极 – Algol和PL / 1都是从1开始。我也很确定Cobol从1开始。

基本上C语言之前的大多数高级编程语言都是从1开始编译的(汇编语言显然是个明显的例外 – 而C语言从0开始的原因),而C语言霸权之外的许多语言仍然是如此。

基本 – 不仅仅是VB,而是80年代的所有年代。

理查德

FoxPro使用从索引1开始的数组。

dBASE使用从索引1开始的数组。

数组(开始)在dBASE

RPG,包括现代RPGLE

尽pipeC被devise为0索引,但是可以安排C中的数组被访问,就好像它被索引为1(或任何其他值)。 不是你期望一个正常的C编码器经常做的事情,但它有时帮助。

例:

 #include <stdio.h> int main(){ int zero_based[10]; int* one_based; int i; one_based=zero_based-1; for (i=1;i<=10;i++) one_based[i]=i; for(i=10;i>=1;i--) printf("one_based[%d] = %d\n", i, one_based[i]); return 0; } 

不知道你是什么意思1索引。

但是,如果你的意思是数组的基础,那么除了VB之外,BASIC的每一个风格都是传统的“1索引”,尽pipe你可以用OPTION BASE {0 | 1} OPTION BASE {0 | 1}

另外数组声明可以包含一个下界:

 Dim MyArray(-19 To 20) As Integer