title: Dope vector
text: # Dope vector
  
  Nella teoria della programmazione, il dope vector (in italiano "vettore di informazione") è una struttura dati che contiene le informazioni su un oggetto (ad esempio un array) e in particolare il suo layout in memoria. È tipicamente usato nei compilatori dei linguaggi di programmazione ad alto livello per passare array alle subroutine.
  
  Il dope vector di un array contiene usualmente almeno rango (numero di dimensioni), extent (intervalli degli indici) e stride (la distanza in memoria tra due elementi consecutivi, che può differire dall'effettiva dimensione dell'elemento per via dell'allineamento della memoria), oltre al puntatore ad un elemento fisso rispetto al quale si calcola l'offset degli altri elementi (tipicamente l'elemento iniziale). La posizione in memoria di un generico elemento dell'array si ottiene sommando l'indirizzo di tale elemento fisso con il prodotto scalare dello stride per la differenza tra l'ennupla di indici che individuano l'elemento e l'ennupla dei valori iniziali per ogni indice (se i valori iniziali sono tutti nulli, come ad esempio in C, la differenza corrisponde all'ennupla stessa degli indici).
  
  