"Array [1]" è il primo elemento o secondo elemento dell'array?

3

Dopo la lettura della domanda Perché sono zero matrici basate sulla norma? , mi chiedo dei termini da usare per riferirsi a specifici elementi dell'array, nella prospettiva della lettura linguistica della programmazione.

Dovrebbe Array[1] essere chiamato il primo elemento di Array o il secondo elemento? Nel secondo caso, come si dovrebbe riferire all'elemento 0?

    
posta profaisal 03.12.2017 - 06:09
fonte

3 risposte

7

Linguaggi di programmazione:

Array[1] utilizza un mapping implicito tra l'indice 1 di un elemento di matrice specifico.

Questa mappatura è specifica per la lingua. Molte lingue iniziano da 0, alcune a 1. Alcune lingue consentono di iniziare con un altro offset . Alcuni linguaggi implementano array sparsi . Alcune lingue non hanno matrici generiche come una struttura dati fondamentale e usano list e mappature invece .

Linguistica:

La parola "primo" è un ordinale . Quindi, quando si dice "il primo elemento", non si intende l'elemento numero 1, ma si intende l'elemento che è all'inizio della sequenza ordinata di elementi.

Ogni programmatore mapperà quindi "prima" ciò che è realmente il primo elemento nella mappatura che conosce (ad esempio Array[0] se l'indicizzazione è zero e Array[1] se gli indici iniziano da 1).

Algorithms:

Molti algoritmi usano la parola "prima" in una descrizione neutrale della lingua. Quindi penso che la tua domanda sia definitivamente rilevante nell'ambito dell'ingegneria del software, anche se si tratta di linguistica.

    
risposta data 03.12.2017 - 15:27
fonte
3

È sbagliato pensare ai linguaggi di programmazione in termini di linguistica.

Non sono lingue naturali.

In ogni linguaggio di programmazione è chiaramente definito quale è il primo elemento di un array dopo ogni operazione. In alcune lingue puoi addirittura dichiarare matrici che iniziano su indici diversi come [3..50].

È semplice nel contesto del linguaggio attuale discusso per comprendere il concetto del primo elemento.

E come definiresti l'elemento recuperato dalla chiamata al metodo First ?

    
risposta data 03.12.2017 - 11:54
fonte
0

Penso che la confusione derivi dall'interpretazione mista degli indici:

Ordinale : che di solito è il modo in cui vengono interpretati, l'elemento numerato ordinato anche se con un valore iniziale non naturale di 0.

Cardinal : il numero di elementi necessari per essere saltati dal puntatore iniziale per raggiungere la posizione di memoria.

Forse dovrebbero essere trattati come numeri nominali con vincoli semantici aggiunti.

IMO: l'uso dell'elemento "Zeroth" dovrebbe essere vietato. Dovremmo usare 0-ennesimo, 1-ennesimo, 2-ennesimo, 3-ennesimo, ... (pronunciato come zero-ennesimo, un-ennesimo, due-ennesimo, tre-ennesimo ...) se vogliamo fare riferimento a un elemento in una matrice con il suo indice.

    
risposta data 14.12.2017 - 20:42
fonte

Leggi altre domande sui tag