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