Menu
Home Explore People Places Arts History Plants & Animals Science Life & Culture Technology
On this page
Comparison of programming languages (array)
List article

This comparison of programming languages (array) compares the features of array data structures or matrix processing for various computer programming languages.

Syntax

Array dimensions

The following list contains syntax examples of how to determine the dimensions (index of the first element, the last element or the size in elements).

Some languages index from zero. Some index from one. Some carry no such restriction, or even allow indexing by any enumerated type, not only integers.

LanguagesSizeFirstLast
Adaname'Lengthname'Firstname'Last
ALGOL 68UPB name - LWB name+12 UPB name - 2 LWB name+1etc.LWB name2 LWB nameetc.UPB name

2 UPB nameetc.

APLname(⍴ name)[index]⎕IO(⍴ name)-~⎕IO(⍴ name)[index]-~⎕IO
AWKlength1asorti
C#, Visual Basic (.NET), Windows PowerShell, F#name.Lengthname.GetLowerBound(dimension)name.GetUpperBound(dimension)
CFMLarrayLen(name)name.len()1name.len()
Chmax(shape(name))0max(shape(name))-1
Common Lisp(length name)0(1- (length name))
Dname.length0name.length-1 $-1
Fortransize(name)lbound(name)ubound(name)
Golen(name)0len(name) - 1
HaskellrangeSize (bounds name)fst (bounds name)snd (bounds name)
ISLISP(length name)0(1- (length name))
Icon*name1*name
Cobra, D, Haxe, Java, JavaScript, Scalaname.length0name.length - 1
J#name0<:@#name
JavaScript (ES2022)name.length0name.at(0)1name.length - 1name.at(-1)2
Julialength(name)size(name)beginfirst.(axes(name))endlast.(axes(name))
Lingocount(name)1getLast(name)
LiveCodelength(name)1first-1last
Lua#name1 by convention; any integer3#name
MathematicaLength[name]1First[name]-1Last[name]
MATLAB, GNU Octavelength(name)1end
Nimname.lenname.low4name.high
OberonLEN(name)0LEN(name) - 1
Object PascalLength(name)0low(name)Length(name)-1high(name)
Objective-C (NSArray * only)[name count]0[name count] - 1
OCamlArray.length name0Array.length name - 1
Perlscalar(@name)$[$#name
PHPcount(name)0count(name) - 1
PL/Idim(name[,dim])lbound(name[,dim])hbound(name[,dim])
Pythonlen(name)0-1len(name) - 1
Rlength(name)1length(name)
Raku@name.elems0@name.end
Redlength? namename/1first namelast name
Rubyname.size0name.first-1name.size - 1name.last
Rustname.len()0name.len() - 1
S-Langlength(name)0-1length(name)-1
Scheme(vector-length vector)0(- (vector-length vector) 1)
Smalltalkname size1name firstname sizename last
Swiftname.count0name.count - 1
Unicon*name1*name
Visual BasicUBound(name)-LBound(name)+1LBound(name)UBound(name)
Wolfram LanguageLength[name]1First[name]-1Last[name]
XojoUBound(name)0UBound(name)
XPath/XQuerycount($name)1count($name)last()array:size(name)5

Indexing

The following list contains syntax examples of how to access a single element of an array.

FormatLanguages
name[index] or name[index1, index2] etc.ALGOL 58, ALGOL 60, ALGOL 68, AWK, Julia, Modula, Pascal, Object Pascal, C#, S-Lang6 Icon, Unicon
name[index] or name[index1; index2] etc.or index⌷name or index1 index2⌷name etc.APL
name[index]ActionScript, C, CFML, Ch, Cobra, C++, D, Go, Haxe, Java, JavaScript, Lingo, Lua, Nim, Objective-C (NSArray *), Perl,7 PHP, Python,8 R, Ruby,9 Rust, Swift
$name[index]Perl,10 Windows PowerShell,11 XPath/XQuery12
@name[index]Raku
name(index) or name(index1, index2) etc.Ada, ALGOL W, BASIC, COBOL, Fortran, RPG, GNU Octave, MATLAB, PL/I, Scala, Visual Basic, Visual Basic (.NET), Xojo
$name(index)XPath/XQuery13
name.(index)OCaml
name.[index]F#, OCaml
name/indexRed
name ! indexHaskell
$name ? indexXPath/XQuery14
(vector-ref name index)Scheme
(aref name index)Common Lisp
(elt name index)ISLISP
name[[index]]Mathematica,15 Wolfram Language
name at:indexSmalltalk
[name objectAtIndex:index]Objective-C (NSArray * only)
index{nameJ
name.item(index) or name @ index16Eiffel

Slicing

The following list contains syntax examples of how a range of element of an array can be accessed.

In the following table:

  • first – the index of the first element in the slice
  • last – the index of the last element in the slice
  • end – one more than the index of last element in the slice
  • len – the length of the slice (= end - first)
  • step – the number of array elements in each (default 1)
FormatLanguages
name[first:last]ALGOL 68,17 Julia, Icon, Unicon
name[first+(⍳len)-⎕IO]APL
name[first:end:step]Python1819
name[first:end]Go
name[first..last]Pascal, Object Pascal, Delphi, Nim
$name[first..last]Windows PowerShell
@name[first..last]Perl20
name[first..last]name[first...end]name[first, len]Ruby21
copy/part skip name first lenRed
name(first..last)Ada22
name(first:last)Fortran,2324 GNU Octave, MATLAB2526
name[[first;;last;;step]]Mathematica,272829 Wolfram Language
name[[first:last]]S-Lang303132
name.[first..step..last]F#
name.slice(first, end)Haxe, JavaScript, Scala
name.slice(first, len)CFML
array_slice(name, first, len)PHP33
(subseq name first end)Common Lisp
(subseq name first end)ISLISP
Array.sub name first lenOCaml
[name subarrayWithRange:NSMakeRange(first, len)]Objective-C (NSArray * only)
(first([+i.@(-~)end){nameJ
name[first..<end]name[first...last]Swift
name copyFrom: first to:lastname copyFrom: first count:lenSmalltalk
name[first..end]D, C#3435
name[first..end]name[first..=last]Rust
name[first:end]Cobra
table.move(name, first, last, 1, {})Lua36

Array system cross-reference list

LanguageDefaultbase indexSpecifiableindex type37Specifiablebase indexBound checkMultidimensionalDynamically-sizedVectorized operations
Adaindex type38yesyescheckedyesinit39some, others definable40
ALGOL 681no41yesvariesyesyesuser definable
APL1?0 or 142checkedyesyesyes
AWK1yes, implicitlynouncheckedyes, as delimited stringyes, rehashedno
BASIC0?nocheckednoinit43?
C0nono44uncheckedpartiallyinit,4546 heap47no
Ch0nonocheckedyes, also array of array48init,4950 heap51yes
C++520nono53uncheckedyes, also array of array54heap55no
C#0nopartial56checkedyesheap5758yes (LINQ select)
CFML1nonocheckedyes, also array of array59yesno
COBOL1no60nocheckedarray of array6162no63some intrinsics
Cobra0nonocheckedarray of array64heap?
Common Lisp0?nochecked65yesyesyes (map or map-into)
D0yes66novaries67yesyes?
F#0nopartial68checkedyesheap6970yes (map)
FreeBASIC0noyescheckedyesinit,71 init72?
Fortran1yesyesvaries73yesyesyes
FoxPro1?nocheckedyesyes?
Go0nonocheckedarray of array74no75no
Hack0yesyescheckedyesyesyes
Haskell0yes76yescheckedyes, also array of array77init78?
IDL0?nocheckedyesyesyes
ISLISP0?nocheckedyesinit79yes (map or map-into)
J0?nocheckedyesyesyes
Java800nonocheckedarray of array81init82?
JavaScript0nonochecked83array of array84yesyes
Julia1yesyeschecked (can be skipped locally; or globally by user)yes, also array of arrayyesyes
Lingo1??uncheckedyesyesyes
Lua1?partial85checkedarray of array86yes?
Mathematica1nonocheckedyesyesyes
MATLAB1?nocheckedyes87yesyes
Nim0yes88yesoptional89array of array90yesyes91
Oberon0?nocheckedyesno?
Oberon-20?nocheckedyesyes?
Objective-C920nonocheckedarray of array93yesno
OCaml0nonochecked by defaultarray of array94init95?
Pascal, Object Pascalindex type96yesyesvaries97yesvaries98some
Perl0noyes ($[)checked99array of array100yesno101
Raku0nonochecked102yesyesyes
PHP0yes103yes104checked105yesyesyes
PL/I1yesyesoptionalyesnoyes106
Python0nonocheckedarray of array107yesno108
RPG1nono?nono?
R1?nouncheckedyes, also array of arrayyesyes
Ring1?partial109checkedarray of array110yes?
Ruby0nonochecked111array of array112yes?
Rust0nonocheckedarray of array113no?
Sass1nonocheckedarray of array114init115?
S-Lang0?nocheckedyesyesyes
Scala0nonocheckedarray of array116init117yes (map)
Scheme0?nocheckedarray of array118init119yes (map)
Smalltalk1201?nocheckedarray of array121yes122?
Swift0nonocheckedarray of array123yes?
Visual Basic (classic)0, 1, or index type124noyescheckedyesyes?
Visual Basic (.NET)0 or index type125nopartial126checkedyesyesyes (LINQ select)
Wolfram Language1nonocheckedyesyesyes
Windows PowerShell0nonocheckedyesheap?
Xojo0nonocheckedyesyesno
XPath/XQuery1nonocheckedarray of array127128yesyes

Vectorized array operations

Some compiled languages such as Ada and Fortran, and some scripting languages such as IDL, MATLAB, and S-Lang, have native support for vectorized operations on arrays. For example, to perform an element by element sum of two arrays, a and b to produce a third c, it is only necessary to write

c = a + b

In addition to support for vectorized arithmetic and relational operations, these languages also vectorize common mathematical functions such as sine. For example, if x is an array, then

y = sin (x)

will result in an array y whose elements are sine of the corresponding elements of the array x.

Vectorized index operations are also supported. As an example,

even = x(2::2); odd = x(::2);

is how one would use Fortran to create arrays from the even and odd entries of an array. Another common use of vectorized indices is a filtering operation. Consider a clipping operation of a sine wave where amplitudes larger than 0.5 are to be set to 0.5. Using S-Lang, this can be done by

y = sin(x); y[where(abs(y)>0.5)] = 0.5;

Mathematical matrix operations

Language/LibraryCreateDeterminantTransposeElementColumnRowEigenvalues
APLm←dims⍴x11 x12 ...-.×m⍉mm[i;j] or i j⌷mm[;j] or j⌷[2]m orj⌷⍤1⊢m or j⌷⍉mm[i;] or i⌷m⌹⍠1⊢m
Fortranm = RESHAPE([x11, x12, ...], SHAPE(m))TRANSPOSE(m)m(i,j)m(:,j)m(i,:)
Ch129m = {...}determinant(m)transpose(m)m[i-1][j-1]shape(m,0)shape(m,1)eigen(output, m, NULL)
Julia and its standard library LinearAlgebram = [1 2; 3 4] orm = [ 1 2 3 4]det(m)transpose(m) or

m' for real matrices

m[i, j]m[:, j]m[i, :]eigen(m).values
Mathematica /Wolfram Language{{x11, x12, ...}, ...}Det[m]Transpose[m]m[[i,j]]m[[;;,j]]m[[i]]Eigenvalues[m]
MATLAB /GNU Octavem = [...]det(m)m.'m(i,j)m(:,j)m(i,:)eig(m)
NumPym = mat(...)linalg.det(m)m.Tm[i-1,j-1]m[:,j-1]m[i-1,:]linalg.eigvals(m)
Rm <- matrix(...) or m <- array(...)det(m)t(m)m[i, j]m[, j]m[i, ]eigen(m)
S-Langm = reshape([x11, x12, ...], [new-dims])m = transpose(m)m[i,j]m[*,j]m[j,*]
SymPym = Matrix(...)m.det()m.Tm[i-1,j-1]m.col(j-1)m.row(i-1)m.eigenvals()

References

  1. "ECMAScript® 2025 Language Specification". https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.at

  2. "ECMAScript® 2025 Language Specification". https://tc39.es/ecma262/multipage/indexed-collections.html#sec-array.prototype.at

  3. "Programming in Lua : 11.1". https://www.lua.org/pil/11.1.html

  4. "Nim Tutorial (Part I)". https://nim-lang.org/docs/tut1.html#advanced-types-arrays

  5. XPath/XQuery has two kinds of arrays. Sequences (1,2,3) which cannot nest and in the XPath/XQuery 3.1 version arrays array { 1,2,3} or [1,2,3] which can.

  6. The index may be a negative number, indicating the corresponding number of places before the end of the array.

  7. The index may be a negative number, indicating the corresponding number of places before the end of the array.

  8. The index may be a negative number, indicating the corresponding number of places before the end of the array.

  9. The index may be a negative number, indicating the corresponding number of places before the end of the array.

  10. The index may be a negative number, indicating the corresponding number of places before the end of the array.

  11. The index may be a negative number, indicating the corresponding number of places before the end of the array.

  12. XPath/XQuery has two kinds of arrays. Sequences (1,2,3) which cannot nest and in the XPath/XQuery 3.1 version arrays array { 1,2,3} or [1,2,3] which can.

  13. XPath/XQuery has two kinds of arrays. Sequences (1,2,3) which cannot nest and in the XPath/XQuery 3.1 version arrays array { 1,2,3} or [1,2,3] which can.

  14. XPath/XQuery has two kinds of arrays. Sequences (1,2,3) which cannot nest and in the XPath/XQuery 3.1 version arrays array { 1,2,3} or [1,2,3] which can.

  15. The index may be a negative number, indicating the corresponding number of places before the end of the array.

  16. "Eiffeldoc : ARRAY". http://smarteiffel.loria.fr/libraries/api/lib.d/storage.d/loadpath.se.d/collection.d/ARRAY/ANY.html

  17. Slices for multidimensional arrays are also supported and defined similarly.

  18. Slices of the type first:last:step are also supported.

  19. last or end may be a negative number, indicating to stop at the corresponding number of places before the end of the array.

  20. More generally, for 1-d arrays Perl and S-Lang allow slices of the formarray[indices], where indices can be a range such mentioned in footnote 2 or an explicit list of indices, e.g., '[0,9,3,4]', or a mix of both, e.g., A[[[0:3]],7,9,[11:2:-3]]]. /wiki/Perl

  21. last or end may be a negative number, indicating to stop at the corresponding number of places before the end of the array.

  22. Slices for multidimensional arrays are also supported and defined similarly.

  23. Slices for multidimensional arrays are also supported and defined similarly.

  24. Slices of the type first:last:step are also supported.

  25. Slices for multidimensional arrays are also supported and defined similarly.

  26. More generally, for 1-d arrays Perl and S-Lang allow slices of the formarray[indices], where indices can be a range such mentioned in footnote 2 or an explicit list of indices, e.g., '[0,9,3,4]', or a mix of both, e.g., A[[[0:3]],7,9,[11:2:-3]]]. /wiki/Perl

  27. Slices for multidimensional arrays are also supported and defined similarly.

  28. Slices of the type first:last:step are also supported.

  29. last or end may be a negative number, indicating to stop at the corresponding number of places before the end of the array.

  30. Slices for multidimensional arrays are also supported and defined similarly.

  31. Slices of the type first:last:step are also supported.

  32. More generally, for 1-d arrays Perl and S-Lang allow slices of the formarray[indices], where indices can be a range such mentioned in footnote 2 or an explicit list of indices, e.g., '[0,9,3,4]', or a mix of both, e.g., A[[[0:3]],7,9,[11:2:-3]]]. /wiki/Perl

  33. last or end may be a negative number, indicating to stop at the corresponding number of places before the end of the array.

  34. C# 8.0 proposed feature (as of 29 August 2019[update]) /wiki/C_Sharp_(programming_language)

  35. "Ranges - C# 8.0 language proposals". Microsoft Docs. Microsoft. Retrieved 29 August 2019. https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/proposals/csharp-8.0/ranges

  36. "Lua 5.3 Reference Manual". www.lua.org. Retrieved 2022-04-02. https://www.lua.org/manual/5.3/manual.html#pdf-table.move

  37. The index type can be a freely chosen integer type, enumerated type, or character type. For arrays with non-compact index types see: Associative array /wiki/Integer_(computer_science)

  38. The default base index is the lowest value of the index type used

  39. Size can only be chosen on initialization after which it is fixed.

  40. This list is strictly comparing language features. In every language (even assembly language) it is possible to provide improved array handling via add on libraries. This language has improved array handling as part of its standard library /wiki/Assembly_language

  41. ALGOL 68 arrays must be subscripted (and sliced) by type INT. However a hash function could be used to convert other types to INT. e.g. name[hash("string")]

  42. The indexing base can be 0 or 1 as per the System Variable ⎕IO. This value may apply to the whole "workspace", or be localized to a user-defined function or a single primitive function by use of the Variant operator (⍠).

  43. Size can only be chosen on initialization after which it is fixed.

  44. Because C does not bound-check indices, a pointer to the interior of any array can be defined that will symbolically act as a pseudo-array that accommodates negative indices or any integer index origin.

  45. Size can only be chosen on initialization after which it is fixed.

  46. C99 allows for variable size arrays; however there is almost no compiler available to support this new feature

  47. Size can only be chosen on initialization when memory is allocated on the heap, as distinguished from when it is allocated on the stack. This note need not be made for a language that always allocates arrays on the heap.

  48. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  49. Size can only be chosen on initialization after which it is fixed.

  50. C99 allows for variable size arrays; however there is almost no compiler available to support this new feature

  51. Size can only be chosen on initialization when memory is allocated on the heap, as distinguished from when it is allocated on the stack. This note need not be made for a language that always allocates arrays on the heap.

  52. This list is strictly comparing language features. In every language (even assembly language) it is possible to provide improved array handling via add on libraries. This language has improved array handling as part of its standard library /wiki/Assembly_language

  53. Because C does not bound-check indices, a pointer to the interior of any array can be defined that will symbolically act as a pseudo-array that accommodates negative indices or any integer index origin.

  54. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  55. Size can only be chosen on initialization when memory is allocated on the heap, as distinguished from when it is allocated on the stack. This note need not be made for a language that always allocates arrays on the heap.

  56. The base can be changed when initializing with System.Array.CreateInstance (which returns System.Array), but not when using the language syntax. Arrays with non-zero base indices are not the same type as those with zero base indices and cannot be manipulated using language syntax (the GetValue and SetValue methods must be used instead) or downcast to a specific type (T[] in C#, or T() in VB.NET), preventing breakage of code assuming base indices of zero. /wiki/C_Sharp_(programming_language)

  57. Size can only be chosen on initialization when memory is allocated on the heap, as distinguished from when it is allocated on the stack. This note need not be made for a language that always allocates arrays on the heap.

  58. Allows creating fixed-size arrays in "unsafe" code, allowing enhanced interoperability with other language /wiki/Interoperability

  59. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  60. COBOL arrays may be indexed with "INDEX" types, distinct from integer types

  61. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  62. While COBOL only has arrays-of-arrays, array elements can be accessed with a multi-dimensional-array-like syntax, where the language automatically matches the indexes to the arrays enclosing the item being referenced

  63. COBOL provides a way to specify that the usable size of an array is variable, but this can never be greater than the declared maximum size, which is also the allocated size

  64. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  65. Most Common Lisp implementations allow checking to be selectively disabled

  66. Associative Arrays - D Programming Language http://dlang.org/hash-map.html

  67. Behaviour can be tuned via compiler switches. As in DMD 1.0 bounds are checked in debug mode and unchecked in release mode for efficiency

  68. The base can be changed when initializing with System.Array.CreateInstance (which returns System.Array), but not when using the language syntax. Arrays with non-zero base indices are not the same type as those with zero base indices and cannot be manipulated using language syntax (the GetValue and SetValue methods must be used instead) or downcast to a specific type (T[] in C#, or T() in VB.NET), preventing breakage of code assuming base indices of zero. /wiki/C_Sharp_(programming_language)

  69. Size can only be chosen on initialization when memory is allocated on the heap, as distinguished from when it is allocated on the stack. This note need not be made for a language that always allocates arrays on the heap.

  70. Allows creating fixed-size arrays in "unsafe" code, allowing enhanced interoperability with other language /wiki/Interoperability

  71. Size can only be chosen on initialization after which it is fixed.

  72. FreeBASIC supports both variable array lengths and fixed length arrays. Arrays declared with no index range are created as variable-length arrays, while arrays with a declared range are created as fixed-length arrays

  73. Almost all Fortran implementations offer bounds checking options via compiler switches. However by default, bounds checking is usually turned off for efficiency

  74. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  75. While Golang's Array type is not dynamically sized, the data type Slice is dynamically-sized and is much more common in use than arrays. https://tour.golang.org/moretypes/7

  76. Haskell arrays (Data.Array) allow using any type which is an instance of Ix as index type. So a custom type can be defined and used as an index type as long as it instances Ix. Also, tuples of Ix types are also Ix types; this is commonly used to implement multi-dimensional arrays

  77. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  78. Size can only be chosen on initialization after which it is fixed.

  79. Size can only be chosen on initialization after which it is fixed.

  80. This list is strictly comparing language features. In every language (even assembly language) it is possible to provide improved array handling via add on libraries. This language has improved array handling as part of its standard library /wiki/Assembly_language

  81. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  82. Size can only be chosen on initialization after which it is fixed.

  83. In these languages, one can access or write to an array index greater than or equal to the length of the array, and the array will implicitly grow to that size. This may appear at first as if the bounds are not checked; however, the bounds are checked to decide to grow the array, and you do not have unsafe memory access like you do in C.

  84. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  85. By specifying a base index, arrays at an arbitrary base can be created. However, by default, Lua's length operator does not consider the base index of the array when calculating the length. This behavior can be changed via metamethods.

  86. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  87. At least 2 dimensions (scalar numbers are 1×1 arrays, vectors are 1×n or n×1 arrays).

  88. "Nim Tutorial (Part I)". https://nim-lang.org/docs/tut1.html#advanced-types-arrays

  89. "Nim Compiler User Guide". https://nim-lang.org/docs/nimc.html

  90. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  91. "Vectorization - R-style logical vector operation in Nim". https://stackoverflow.com/questions/53084192/r-style-logical-vector-operation-in-nim

  92. This list is strictly comparing language features. In every language (even assembly language) it is possible to provide improved array handling via add on libraries. This language has improved array handling as part of its standard library /wiki/Assembly_language

  93. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  94. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  95. Size can only be chosen on initialization after which it is fixed.

  96. The default base index is the lowest value of the index type used

  97. Many implementations (Turbo Pascal, Object Pascal (Delphi), Free Pascal) allow the behaviour to be changed by compiler switches and in-line directives /wiki/Turbo_Pascal

  98. Varies by implementation. Newer implementations (Free Pascal, Object Pascal (Delphi)) allow heap-based dynamic arrays. /wiki/Free_Pascal

  99. In these languages, one can access or write to an array index greater than or equal to the length of the array, and the array will implicitly grow to that size. This may appear at first as if the bounds are not checked; however, the bounds are checked to decide to grow the array, and you do not have unsafe memory access like you do in C.

  100. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  101. Standard Perl array data types do not support vectorized operations as defined here. However, the Perl Data Language extension adds array objects with this ability. /wiki/Perl

  102. In these languages, one can access or write to an array index greater than or equal to the length of the array, and the array will implicitly grow to that size. This may appear at first as if the bounds are not checked; however, the bounds are checked to decide to grow the array, and you do not have unsafe memory access like you do in C.

  103. PHP's "arrays" are associative arrays. You can use integers and strings as the keys (indexes); floats can also be used as the key but are truncated to integers. There is not really any "base index" or "bounds"

  104. PHP's "arrays" are associative arrays. You can use integers and strings as the keys (indexes); floats can also be used as the key but are truncated to integers. There is not really any "base index" or "bounds"

  105. PHP's "arrays" are associative arrays. You can use integers and strings as the keys (indexes); floats can also be used as the key but are truncated to integers. There is not really any "base index" or "bounds"

  106. Size can be chosen when the array is declared, or when it is allocated, after which it is fixed.

  107. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  108. The standard Python array type, list, does not support vectorized operations as defined here. However, the numpy extension adds array objects with this ability /wiki/Python_(programming_language)

  109. By specifying a base index, arrays at an arbitrary base can be created. However, by default, Lua's length operator does not consider the base index of the array when calculating the length. This behavior can be changed via metamethods.

  110. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  111. In these languages, one can access or write to an array index greater than or equal to the length of the array, and the array will implicitly grow to that size. This may appear at first as if the bounds are not checked; however, the bounds are checked to decide to grow the array, and you do not have unsafe memory access like you do in C.

  112. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  113. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  114. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  115. Behaviour can be tuned via compiler switches. As in DMD 1.0 bounds are checked in debug mode and unchecked in release mode for efficiency

  116. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  117. Size can only be chosen on initialization after which it is fixed.

  118. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  119. Size can only be chosen on initialization after which it is fixed.

  120. This list is strictly comparing language features. In every language (even assembly language) it is possible to provide improved array handling via add on libraries. This language has improved array handling as part of its standard library /wiki/Assembly_language

  121. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  122. The class Array is fixed-size, but OrderedCollection is dynamic

  123. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  124. Microsoft QBASIC, QuickBASIC, Visual Basic, and VBA all had/have the ability to specify Option Base 1, which caused all arrays in the module to default starting at 1 instead of 0. Support for Option Base was phased out in Visual Basic (.NET). In various Microsoft BASIC implementations, arrays can be DIMensioned using to to specify the minimum and maximum index values (e.g. DIM MyArray(2 to 50) AS STRING would have the first index at 2 instead of the default). /wiki/QuickBASIC

  125. Microsoft QBASIC, QuickBASIC, Visual Basic, and VBA all had/have the ability to specify Option Base 1, which caused all arrays in the module to default starting at 1 instead of 0. Support for Option Base was phased out in Visual Basic (.NET). In various Microsoft BASIC implementations, arrays can be DIMensioned using to to specify the minimum and maximum index values (e.g. DIM MyArray(2 to 50) AS STRING would have the first index at 2 instead of the default). /wiki/QuickBASIC

  126. The base can be changed when initializing with System.Array.CreateInstance (which returns System.Array), but not when using the language syntax. Arrays with non-zero base indices are not the same type as those with zero base indices and cannot be manipulated using language syntax (the GetValue and SetValue methods must be used instead) or downcast to a specific type (T[] in C#, or T() in VB.NET), preventing breakage of code assuming base indices of zero. /wiki/C_Sharp_(programming_language)

  127. XPath/XQuery has two kinds of arrays. Sequences (1,2,3) which cannot nest and in the XPath/XQuery 3.1 version arrays array { 1,2,3} or [1,2,3] which can.

  128. Allows arrays of arrays which can be used to emulate most—but not all—aspects multi-dimensional arrays

  129. Ch numerical features http://www.softintegration.com/products/features/ch_vs_matlab.html