"Diejenigen, die sich nicht an die Vergangenheit erinnern können, sind dazu verdammt, sie zu wiederholen."
Den Typ vor der Variable zu setzen begann mit Fortran und Algol harmlos genug, aber es wurde wirklich hässlich in C, wo einige Modifikatoren vor der Variable, andere nach. Aus diesem Grund in C Sie solche Schönheiten wie
int (*p)[10];
oder
void (*signal(int x, void (*f)(int)))(int)
zusammen mit einem Dienstprogramm (cdecl), deren Zweck haben, ist eine solche Kauderwelsch zu entschlüsseln.
In Pascal, kommt die Art nach den Variablen, so dass die ersten Beispiele werden
p: pointer to array[10] of int
Contrast mit
q: array[10] of pointer to int
, die in C, ist
int *q[10]
In C , benötigen Sie Klammern, um dies von int (* p) [10] zu unterscheiden. In Pascal sind keine Klammern erforderlich, wenn nur die Reihenfolge zählt.
würde die Signalfunktion
signal: function(x: int, f: function(int) to void) to (function(int) to void)
Noch ein Schluck, aber zumindest im Bereich des menschlichen Fassungsvermögens sein.
Fairerweise ist das Problem nicht, dass C die Typen vor den Namen stellt, sondern dass es pervers darauf besteht, Bits und Stücke vor und nach dem Namen zu setzen.
Aber wenn Sie versuchen, alles vor dem Namen zu setzen, ist der Auftrag noch nicht intuitiv:
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
So lautet die Antwort: Ein vernünftig entworfen Programmiersprache die Variablen vor dem Typ setzt, weil das Ergebnis mehr ist lesbar für Menschen.
@Jurily - Ich werde das nicht bestreiten. Ich war nur neugierig, ob es einen Vorteil darin gibt, Dinge auf die eine oder andere Art zu tun. –
@Jurily, um ganz genau zu sein, _everyone_ hat ihren Nachnamen zuletzt :-). Und um fair zu sein, denke ich, wenn die meisten Leute es unvoreingenommen betrachten würden, würden sie zustimmen, dass der allgemeine zu spezifische Ansatz (wie in Chinesisch oder, wie Sie sagen, Ungarisch) mehr Sinn macht. –
https://stackoverflow.com/questions/1891775/any-reason-for-having-val-capacity-int-instead-of-val-int-capacity-in-scal/1893263 – starblue