Comparison of programming languages (array)

List of programming language comparisons From Wikipedia, the free encyclopedia

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.

More information Languages, Size ...
Languages Size First Last
Ada name'Lengthname'Firstname'Last
ALGOL 68 UPB name - LWB name+1
2 UPB name - 2 LWB name+1
etc.
LWB name
2 LWB name
etc.
UPB name

2 UPB name
etc.

APL name
(⍴ name)[index]
⎕IO(⍴ name)-~⎕IO
(⍴ name)[index]-~⎕IO
AWK length1asorti
C#, Visual Basic (.NET), Windows PowerShell, F# name.Lengthname.GetLowerBound(dimension)name.GetUpperBound(dimension)
CFML arrayLen(name)
name.len()
1name.len()
Ch max(shape(name))0max(shape(name))-1
Common Lisp (length name)0(1- (length name))
D name.length0name.length-1
$-1
Fortran size(name)lbound(name)ubound(name)
Go len(name)0len(name) - 1
Haskell rangeSize (bounds name)fst (bounds name)snd (bounds name)
ISLISP (length name)0(1- (length name))
Icon *name1*name
Cobra, D, Haxe, Java, JavaScript, Scala name.length0name.length - 1
J #name0<:@#name
JavaScript (ES2022) name.length0
name.at(0)[1]
name.length - 1
name.at(-1)[1]
Julia length(name)
size(name)
begin
first.(axes(name))
end
last.(axes(name))
Lingo count(name)1getLast(name)
LiveCode length(name)1
first
-1
last
Lua #name1 by convention; any integer[2]#name
Mathematica Length[name]1
First[name]
-1
Last[name]
MATLAB, GNU Octave length(name)1end
Nim name.lenname.low[3]name.high
Oberon LEN(name)0LEN(name) - 1
Object Pascal Length(name)0
low(name)
Length(name)-1
high(name)
Objective-C (NSArray * only) [name count]0[name count] - 1
OCaml Array.length name0Array.length name - 1
Perl scalar(@name)$[$#name
PHP count(name)0count(name) - 1
PL/I dim(name[,dim])lbound(name[,dim])hbound(name[,dim])
Python len(name)0-1
len(name) - 1
R length(name)1length(name)
Raku @name.elems0@name.end
Red length? namename/1
first name
last name
Ruby name.size0
name.first
-1
name.size - 1
name.last
Rust name.len()0name.len() - 1
S-Lang length(name)0-1
length(name)-1
Scheme (vector-length vector)0(- (vector-length vector) 1)
Smalltalk name size1
name first
name size
name last
Swift name.count 0 name.count - 1
Unicon *name1*name
Visual Basic UBound(name)-LBound(name)+1LBound(name)UBound(name)
Wolfram Language Length[name]1
First[name]
-1
Last[name]
Xojo UBound(name)0UBound(name)
XPath/XQuery count($name)1count($name)
last()
array:size(name)[4]
Close

Indexing

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

More information Format, Languages ...
Format Languages
name[index] or name[index1, index2] etc. ALGOL 58, ALGOL 60, ALGOL 68, AWK, Julia, Modula, Pascal, Object Pascal, C#, S-Lang[5] Icon, Unicon
name[index] or name[index1; index2] etc.
or indexname or index1 index2name etc.
APL
name[index] ActionScript, C, CFML, Ch, Cobra, C++, D, Go, Haxe, Java, JavaScript, Lingo, Lua, Nim, Objective-C (NSArray *), Perl,[5] PHP, Python,[5] R, Ruby,[5] Rust, Swift
$name[index] Perl,[5] Windows PowerShell,[5] XPath/XQuery[4]
@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/XQuery[4]
name.(index) OCaml
name.[index] F#, OCaml
name/index Red
name ! index Haskell
$name ? index XPath/XQuery[4]
(vector-ref name index) Scheme
(aref name index) Common Lisp
(elt name index) ISLISP
name[[index]] Mathematica,[5] Wolfram Language
name at:index Smalltalk
[name objectAtIndex:index] Objective-C (NSArray * only)
index{name J
name.item(index) or name @ index[6] Eiffel
Close

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)
More information Format, Languages ...
Format Languages
name[first:last] ALGOL 68,[7] Julia, Icon, Unicon
name[first+(⍳len)-⎕IO] APL
name[first:end:step] Python[8][9]
name[first:end] Go
name[first..last] Pascal, Object Pascal, Delphi, Nim
$name[first..last] Windows PowerShell
@name[first..last] Perl[10]
name[first..last]
name[first...end]
name[first, len]
Ruby[9]
copy/part skip name first len Red
name(first..last) Ada[7]
name(first:last) Fortran,[7][8] GNU Octave, MATLAB[7][10]
name[[first;;last;;step]] Mathematica,[7][8][9] Wolfram Language
name[[first:last]] S-Lang[7][8][10]
name.[first..step..last] F#
name.slice(first, end) Haxe, JavaScript, Scala
name.slice(first, len) CFML
array_slice(name, first, len) PHP[9]
(subseq name first end) Common Lisp
(subseq name first end) ISLISP
Array.sub name first len OCaml
[name subarrayWithRange:NSMakeRange(first, len)] Objective-C (NSArray * only)
(first([+i.@(-~)end){name J
name[first..<end]
name[first...last]
Swift
name copyFrom: first to:last
name copyFrom: first count:len
Smalltalk
name[first..end] D, C#[11][12]
name[first..end]
name[first..=last]
Rust
name[first:end] Cobra
table.move(name, first, last, 1, {}) Lua[13]
Close

Array system cross-reference list

More information Language, Defaultbase index ...
Language Default
base index
Specifiable
index type[14]
Specifiable
base index
Bound check Multidimensional Dynamically sized Vectorized operations
Ada index type[15] yes yes checked yes init[16] some, others definable[17]
ALGOL 68 1 no[18] yes varies yes yes user definable
APL 1 ? 0 or 1[19] checked yes yes yes
AWK 1 yes, implicitly no unchecked yes, as delimited string yes, rehashed no
BASIC 0 ? no checked no init[16] ?
C 0 no no[20] unchecked partially init,[16][21] heap[22] no
Ch 0 no no checked yes, also array of array[23] init,[16][21] heap[22] yes
C++[17] 0 no no[20] unchecked yes, also array of array[23] heap[22] no
C# 0 no partial[24] checked yes heap[22][25] yes (LINQ select)
CFML 1 no no checked yes, also array of array[23] yes no
COBOL 1 no[26] no checked array of array[23][27] no[28] some intrinsics
Cobra 0 no no checked array of array[23] heap ?
Common Lisp 0 ? no checked[29] yes yes yes (map or map-into)
D 0 yes[30] no varies[31] yes yes ?
F# 0 no partial[24] checked yes heap[22][25] yes (map)
FreeBASIC 0 no yes checked yes init,[16] init[32] ?
Fortran 1 yes yes varies[33] yes yes yes
FoxPro 1 ? no checked yes yes ?
Go 0 no no checked array of array[23] no[34] no
Hack 0 yes yes checked yes yes yes
Haskell 0 yes[35] yes checked yes, also array of array[23] init[16] ?
IDL 0 ? no checked yes yes yes
ISLISP 0 ? no checked yes init[16] yes (map or map-into)
J 0 ? no checked yes yes yes
Java[17] 0 no no checked array of array[23] init[16] ?
JavaScript 0 no no checked[36] array of array[23] yes yes
Julia 1 yes yes checked (can be skipped locally; or globally by user) yes, also array of array yes yes
Lingo 1 ? ? unchecked yes yes yes
Lua 1 ? partial[37] checked array of array[23] yes ?
Mathematica 1 no no checked yes yes yes
MATLAB 1 ? no checked yes[38] yes yes
Nim 0 yes[3] yes optional[39] array of array[23] yes yes[40]
Oberon 0 ? no checked yes no ?
Oberon-2 0 ? no checked yes yes ?
Objective-C[17] 0 no no checked array of array[23] yes no
OCaml 0 no no checked by default array of array[23] init[16] ?
Pascal, Object Pascal index type[15] yes yes varies[41] yes varies[42] some
Perl 0 no yes ($[) checked[36] array of array[23] yes no[43]
Raku 0 no no checked[36] yes yes yes
PHP 0 yes[44] yes[44] checked[44] yes yes yes
PL/I 1 yes yes optional yes no yes[45]
Python 0 no no checked array of array[23] yes no[46]
RPG 1 no no ? no no ?
R 1 ? no unchecked yes, also array of array yes yes
Ruby 0 no no checked[36] array of array[23] yes ?
Rust 0 no no checked array of array[23] no ?
Sass 1 no no checked array of array[23] init[31] ?
S-Lang 0 ? no checked yes yes yes
Scala 0 no no checked array of array[23] init[16] yes (map)
Scheme 0 ? no checked array of array[23] init[16] yes (map)
Smalltalk[17] 1 ? no checked array of array[23] yes[47] ?
Swift 0 no no checked array of array[23] yes ?
Visual Basic (classic) 0, 1, or index type[48] no yes checked yes yes ?
Visual Basic (.NET) 0 or index type[48] no partial[24] checked yes yes yes (LINQ select)
Wolfram Language 1 no no checked yes yes yes
Windows PowerShell 0 no no checked yes heap ?
Xojo 0 no no checked yes yes no
XPath/XQuery 1 no no checked array of array[4][23] yes yes
Close

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

More information Language/ Library, Create ...
Language/
Library
Create Determinant Transpose Element Column Row Eigenvalues
APL mdimsx11 x12 ... -.×m m m[i;j] or i jm m[;j] or j[2]m or
j1m or j⌷⍉m
m[i;] or im 1m
Fortran m = RESHAPE([x11, x12, ...], SHAPE(m)) TRANSPOSE(m) m(i,j) m(:,j) m(i,:)
Ch[49] m = {...} determinant(m) transpose(m) m[i-1][j-1] shape(m,0) shape(m,1) eigen(output, m, NULL)
Julia and its standard library
LinearAlgebra
m = [1 2; 3 4] or
m = [
    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 Octave
m = [...] det(m) m.' m(i,j) m(:,j) m(i,:) eig(m)
NumPy m = mat(...) linalg.det(m) m.T m[i-1,j-1] m[:,j-1] m[i-1,:] linalg.eigvals(m)
R m <- matrix(...) or m <- array(...) det(m) t(m) m[i, j] m[, j] m[i, ] eigen(m)
S-Lang m = reshape([x11, x12, ...], [new-dims]) m = transpose(m) m[i,j] m[*,j] m[j,*]
SymPy m = Matrix(...) m.det() m.T m[i-1,j-1] m.col(j-1) m.row(i-1) m.eigenvals()
Close

References

Related Articles

Wikiwand AI