"Coloro che non ricordano il passato sono condannati a ripeterlo."
Inserire il tipo prima che la variabile iniziasse in modo innocuo con Fortran e Algol, ma è diventato davvero brutto in C, dove alcuni tipi di modificatori vengono applicati prima della variabile, altri dopo. Ecco perché in C si dispone di tali bellezze come
int (*p)[10];
o
void (*signal(int x, void (*f)(int)))(int)
insieme ad un programma di utilità (cdecl) il cui scopo è quello di decifrare quali senza senso.
In Pascal, il tipo viene dopo la variabile, in modo che i primi esempi diventa
p: pointer to array[10] of int
contrasto con
q: array[10] of pointer to int
che, in C, è
int *q[10]
In C , hai bisogno di parentesi per distinguere questo da int (* p) [10]. Le parentesi non sono richieste in Pascal, dove conta solo l'ordine.
La funzione segnale sarebbe
signal: function(x: int, f: function(int) to void) to (function(int) to void)
Ancora un sorso, ma almeno all'interno del regno della comprensione umana.
In tutta onestà, il problema non è che C metta il tipo prima del nome, ma che insiste perversamente sul mettere prima i pezzi, e altri dopo, il nome.
Ma se si tenta di mettere tutto ciò che prima del nome, l'ordine è ancora poco intuitivo:
int [10] a // an int, ahem, ten of them, called a
int [10]* a // an int, no wait, ten, actually a pointer thereto, called a
Quindi, la risposta è: Un linguaggio di programmazione sensibilmente progettato mette le variabili prima che i tipi perché il risultato è più leggibile per gli umani.
@Jurily - non voglio contestare questo. Ero solo curioso di sapere se c'era qualche vantaggio nel fare le cose in un modo o in un altro. –
@Jurily, per essere precisi, _everyone_ ha il loro ultimo cognome :-). E per essere onesti, penso che se la maggior parte delle persone dovesse guardarlo in modo imparziale, concorderebbero sul fatto che l'approccio generale a specifico (come in cinese o, come dici tu, ungherese) ha più senso. –
https://stackoverflow.com/questions/1891775/any-reason-for-having-val-capacity-int-instead-of-val-int-capacity-in-scal/1893263 – starblue