DEV Community

Cover image for Exploring 1-Based Indexing in Programming Languages
Abdelrahman hassan hamdy
Abdelrahman hassan hamdy

Posted on

Exploring 1-Based Indexing in Programming Languages

Introduction

In the diverse world of programming languages, indexing is a fundamental concept, with most languages adopting 0-based indexing. However, several languages stand out with their choice of 1-based indexing, an intriguing deviation from the norm.

Why 1-Based Indexing?

1-based indexing isn't merely a whimsical choice; it often stems from historical reasons, mathematical convenience, or the preferences of a specific user base. Understanding these languages offers insight into the varied paradigms in programming.

Implications of 1-Based Indexing

The choice of 1-based indexing affects everything from algorithm design to beginner learning curves. It's a testament to the diversity of programming paradigms and their adaptation to different needs.

Language Examples

-------------

1- lua

In Lua, tables (akin to arrays) begin at index 1. This design aligns with Lua's user-friendly philosophy.

local fruits = {"apple", "banana", "cherry"}
print(fruits[1])  -- apple
Enter fullscreen mode Exit fullscreen mode

2 - Fortran

Fortran's arrays start at 1, a choice rooted in its history as a pioneer in scientific computing.

INTEGER :: numbers(5) = [1, 2, 3, 4, 5]
PRINT *, numbers(1)  -- 1
Enter fullscreen mode Exit fullscreen mode

3- matlab

MATLAB's matrix-centric design uses 1-based indexing, ideal for its target audience in engineering and science.

A = [1, 2; 3, 4];
disp(A(1,1))  -- 1
Enter fullscreen mode Exit fullscreen mode

4 - R

R, a language for statistical analysis, uses 1-based indexing, aligning with statistical conventions.

numbers <- c(10, 20, 30)
print(numbers[1])  -- 10
Enter fullscreen mode Exit fullscreen mode

5 - COBOL

In COBOL, often used in business applications, arrays start with index 1, reflecting its business-oriented design.

01 NUMBERS PIC 9(3) OCCURS 5 TIMES.
MOVE 100 TO NUMBERS(1)
DISPLAY NUMBERS(1)
Enter fullscreen mode Exit fullscreen mode

5 - Julia

Julia combines performance and ease of use with 1-based indexing, appealing to scientific computing users.

numbers = [5, 10, 15]
println(numbers[1])  -- 5
Enter fullscreen mode Exit fullscreen mode

6 - Smalltalk

Smalltalk's 1-based arrays reflect its role in pioneering object-oriented programming.

| numbers |
numbers := Array with: 1 with: 2 with: 3.
Transcript show: numbers at: 1.  -- 1
Enter fullscreen mode Exit fullscreen mode

Conclusion

The world of programming languages is rich and varied. The choice between 1-based and 0-based indexing is more than a mere technicality; it reflects deeper philosophical and practical considerations in language design.

Top comments (3)

Collapse
 
connortrue profile image
Connor True

Why is COBOL so ugly :crying:

Collapse
 
3bdelrahman profile image
Abdelrahman hassan hamdy

LoL True

Collapse
 
marwan90 profile image
Marwan Alhusaini

Is there any point to starting indices at 0? Since other languages keep updating why don't they do the same and start indexing at [1] as the languages mentioned in this article do?