Viele Programmiersprachen verwenden die Syntax a[i]
, um auf das i
'th Element eines Arrays, einer Sequenz oder eines Vektors zu verweisen a
- speziell C und Pascal (aus den späten 1960er und frühen 1970er Jahren) tun dies. Andererseits verwenden einige frühere Sprachen, wie Fortran (aus den 1950er Jahren), diese Konvention nicht. Außerdem habe ich ein bisschen Mathematik studiert, und Mathematiker verwenden eckige Klammern für Intervalle und Indizes für Array- und Matrix-Subskriptionen (oder reguläre Klammern, wenn das Array als Funktion von nicht negativen ganzen Zahlen betrachtet wird).
Meine Frage lautet also: Wo / wie / in welchem Kontext haben sich diese eckigen Klammern für das Array-Abonnement entwickelt und von wem?
Hinweis: Überhaupt kein Betrug dieser Frage zur Verwendung von geschweiften Klammern in C.
Antworten:
Die Hauptvorläufersprache für C und Pascal war Algol . Die früheste Version davon war Algol 58 , bei dem eckige Klammern für Array-Deklarationen und Referenzen verwendet wurden.
Der Grund, warum Algol eckige Klammern anstelle von beispielsweise Klammern verwendete, war dreifach:
Beachten Sie, dass Algol im Gegensatz zu C, bei dem Arrays hauptsächlich zum Indizieren des Speichers verwendet werden, sowohl die unteren als auch die oberen Indexgrenzen angegeben werden konnte. Auch dies entsprach seiner eher mathematischen Absicht. So sehr, dass Algol viele Jahre lang de facto die Sprache für Pseudocode war.
quelle
[x]
wurde es für Äquivalenzklassen verwendet, nicht für Anzeigepositionen innerhalb von Vektoren oder Matrizen.Dies ist eine interessante Lektüre: https://en.m.wikipedia.org/wiki/Bracket
Das Folgende sind meine eigenen Beobachtungen.
Die C-Designer haben die Bedeutung von Zeichen und Konstrukten, wie sie seit Hunderten von Jahren in regulärer Schriftsprache verwendet wurden, mit großer Sorgfalt übernommen. Dabei mussten sie mit der recht begrenzten Teilmenge der ASCII-Zeichen arbeiten. In der westlichen Sprache werden im geschriebenen Text mehr Gruppierungszeichen verwendet, aber diese haben es einfach nicht in ASCII geschafft.
In der regulären Sprache bedeutet die Bedeutung von Klammern, Nebeninformationen bereitzustellen, ohne die Hauptnachricht zu unterbrechen. Dies ist beim Aufrufen einer Prozedur sinnvoll: Die Hauptnachricht ist die auszuführende Aktion, und die Unterinformationen sind die Argumente.
Zum Gruppieren werden geschweifte Klammern verwendet. "Diese Wortsammlung gehört zusammen, soll sich von den anderen abheben". Daher ist es sinnvoll, sie für Codeblöcke und zusammengesetzte Anweisungen zu verwenden.
Eckige Klammern werden für Einfügungen in Text verwendet, die nicht Teil des Originals waren, um den Originaltext zu verdeutlichen und den Kontext bereitzustellen. Oder um eine Auslassung mit Auslassungspunkten anzuzeigen: [...]. "Sie [die Königin] war nicht amüsiert". In der Computerprogrammierung ist es ein wenig sinnvoll, die Klammer für die Array-Indizierung zu verwenden, da es sich um eine Art Kontext handelt, der bereitgestellt wird. "Array? Welches Array? Nun, speziell dieses Element." Aber selbst wenn die ursprüngliche Bedeutung die Verwendung in einer Computersprache nicht vollständig abdeckt, gibt es in ASCII nicht mehr viele Optionen.
Ich würde also sagen, dass es eine Kombination aus dem Stand der Technik und dem, was zu diesem Zeitpunkt verfügbar war, zur Verwendung von eckigen Klammern für die Array-Indizierung führte.
[wegen Alex 'Kommentar bearbeiten]
Laut dieser Quelle wurde ASCII 1963 eingeführt und 1968 von der Regierung genehmigt. Die Entwicklung der C-Sprache begann laut diesem Wiki erst 1969 . Es ist also wahrscheinlich, dass Mr. Ritchie diesen neuen, weit verbreiteten Standard namens ASCII bei der Auswahl seiner Charaktere im Auge behalten hat.
Bitte beachten Sie auch die anderen Antworten, die Algol, "die Mutter vieler Sprachen", vertreten und einen starken Einfluss haben.
quelle