Programming languages with 1-based array indexes
📄 BetterWays.dev wiki page | 🕑 Last updated: Aug 29, 2022Most mainstream programming languages today are using 0-based array indexes, i.e.:
0 => item1,
1 => item2,
2 => item3,
3 => item4,
But if you have worked with programming languages like Lua, Julia, or Mathematica/WolframLang, you'll know that's not always the case.
In human languages, when we're referring to a first item in a list, we use the term "first", not "zeroth" item, so 0-based indexing can be confusing to non-programmers. For that reason, historically, many languages used 1-based indexing, i.e.:
1 => item1,
2 => item2,
3 => item3,
4 => item4,
I worked with such languages in the past in the past, and in the practical sense, the advantage of this approach is that the last element is just array[count]
instead of array[count -1]
in 0-based indexing.
But on the other hand, there are a lot of cases where you have to add +1
all over the place (i.e. working with offsets or pointer arithmetics). Overall, I prefer 0-based access.
List of languages
There is a Wikipedia page on Array-based comparison of programming languages with a table of programming languages which we can use to extract only the list of languages with 1-based arrays:
ALGOL 68
APL
AWK
CFML
COBOL
Fortran
FoxPro
Julia
Lingo
Lua
Mathematica
MATLAB
PL/I
R
Ring
RPG
Sass
Smalltalk[16]
Wolfram Language
XPath/XQuery
We could probably remove the XPath/XQuery and Sass from the list as they are not really programming languages, and there were some variants of BASIC with 1-based indexing.
Updated list:
ALGOL 68
APL
AWK
BASIC (some variants)
CFML
COBOL
Fortran
FoxPro
Julia
Lingo
Lua
Mathematica
MATLAB
PL/I
R
Ring
RPG
Smalltalk[16]
Wolfram Language
For the sake of completeness, here's also the other part of the list (0-based):
BASIC
C
C#
C++[16]
Ch
Cobra
Common Lisp
D
F#
FreeBASIC
Go
Hack
Haskell
IDL
ISLISP
J
Java[16]
JavaScript
Nim
Oberon
Oberon-2
Objective-C[16]
OCaml
Perl
PHP
Python
Raku
Ruby
Rust
S-Lang
Scala
Scheme
Swift
Visual Basic
Visual Basic .NET
Windows PowerShell
Xojo
Comments and suggestions
If you find this site useful, please consider supporting it. Supporters also get access to some extras.