Etymologie von "String"

58

Es ist also offensichtlich, dass eine Folge von Dingen eine Folge von Dingen ist, und so eine Folge von Zeichen / Bytes / etc. könnte auch eine Zeichenfolge genannt werden. Aber wer nannte sie zuerst Saiten? Und wann? Und in welchem ​​Zusammenhang so, dass es hängen blieb? Ich habe mich immer darüber gewundert.

sclv
quelle
10
bereits auf stackoverflow
Alb
1
@ Mark sorry, wusste nicht, dass das Konvention war. Macht Sinn.
Alb
1
@Alb kein Problem. Als Referenz für Sie und andere Personen (diese Frage wurde als Duplikat markiert) hat eine im Stapelüberlauf vorhandene Frage keinen Einfluss auf den Status dieser Frage. Es ist jedoch auf jeden Fall hilfreich, andere Fragen im Netzwerk zu kommentieren und zu notieren das könnte helfen, es zu beantworten.
1
Alb, mit der großartigen Antwort von user4051 empfehle ich, Ihren Kommentar zu entfernen, der auf die Stapelüberlauf-Frage verweist, und dort einen Link zurück zu dieser Frage zu setzen.
Tyler Collier
1
Bitte beachten Sie, dass wir diese Frage, während ich für den Abschluss gestimmt habe, als Wegweiser behalten sollten. Die Antworten auf diese Frage sind weitaus gründlicher und vollständiger als die Antworten auf alle ähnlichen Fragen zu Programmers.SE oder zu Stack Overflow. Dies ist auch eine interessante Frage, die objektiv beantwortet werden kann.

Antworten:

47

Können wir vor Hugos Referenz von 1963 ein echtes Zitat bekommen? Ja. John McCarthy verwendete das Wort "Zeichenkette" in rekursiven Funktionen symbolischer Ausdrücke und ihrer maschinellen Berechnung, Teil I , ab April 1960.

Für Atomsymbole werden Zeichenfolgen aus lateinischen Großbuchstaben und Ziffern verwendet.

Sinnvoller für diese Frage ist jedoch ein Verweis auf einen String als Datentyp:

Jede Zeichenfolge mit zugelassenen Zeichen [ist] ein L-Ausdruck.

Das ist kein gutes Beispiel. McCarthy sagt "eine Zeichenkette" und verwendet "Zeichenkette" nicht in dem Sinne, wie es Programmierer heute meinen. Sie können einem Java-Programmierer leicht "eine Zeichenfolge" sagen, und er wird wissen, dass der Teil "von Zeichen" implizit ist: McCarthys Verwendung demonstriert diese Funktion nicht. Versuchen wir, in die 1950er Jahre zurückzukehren, um herauszufinden, ob McCarthy auf Nummer sicher ging oder ob der Begriff damals wirklich nicht existierte. LISP wird hier wahrscheinlich nicht viel helfen, da es auf einem mathematischen Kalkül basiert, sodass McCarthys String-Funktionen möglicherweise die erste Anwendung der Idee für die String-Verarbeitung waren.

Ein wichtiges Saitenverarbeitungssystem der 1960er Jahre war SNOBOL (A String Manipulation Language) aus dem Jahr 1964 . Dies zitiert McCarthys Artikel oben, erörtert aber auch COMIT und SCL. Die Arbeit, die sie zu SCL zitieren, ist unveröffentlicht: eine unglückliche Sackgasse.

COMIT ist leichter zu finden. Die Kunst der Computerprogrammierung (Band 1, dritte Ausgabe, S. 461) besagt, dass VH Yngve einen CACM-Artikel von 1963 darüber geschrieben hat. Aber ich suche nach der frühesten Verwendung von "string", also mache ich eine Autorensuche nach früheren Veröffentlichungen.

Das erste, was ich finden kann, ist eine Programmiersprache für mechanische Übersetzung vom Juli 1958. Diese enthält nur eine Verwendung des Wortes "string":

Jede fortlaufende Folge von Buchstaben zwischen Satzzeichen oder Leerzeichen wird im Wörterbuch nachgeschlagen.

Wieder ist diese Verwendung wie die von McCarthy: Dies ist kein Beweis dafür, dass "Zeichenfolge" in seinem heutigen Sinne verwendet wird. Wenn wir uns das Papier im Detail ansehen, sehen wir, dass die Datenstruktur eine "Zeile" auf einer Karte ist (was Fortsetzungen für längere "Zeilen" ermöglicht).

OK, wir werden in der Geschichte von COMIT vorankommen und sehen, was wir bekommen können. Die erste nützliche Referenz ist das COMIT-System für maschinelle Übersetzung aus dem Bericht einer Konferenz vom Juni 1959.

Wenn wir D SIN (F) durch COS (F) D (F) ersetzen möchten, wobei F uneingeschränkt ist und eine beliebige Folge von Bestandteilen sein kann, verwenden wir die Notation $, um für diesen String zu stehen.

Dies scheint mehr der Art zu entsprechen, wie wir es heute verwenden: "string" steht für sich und hat als Bonus ein erkennbares spezielles Symbol: Das Dollarzeichen wird in einigen BASIC-Varianten immer noch verwendet, um eine Stringvariable zu kennzeichnen.

Ab dieser Zeit taucht das Wort "string" auch in der Kommandosprache A zur Behandlung von Zeichenketten von Perlis und Smith aus dem ACM '58-Verfahren und einmal in " The Share 709 System: Machine Implementation of Symbolic Programming" von Boehm und Stahl.

Das Durchsuchen der digitalen Bibliothek von ACM nach 'string' in den frühen 1960er-Jahren ergab 62 Ergebnisse, darunter Titel wie "String-Handling in ALGOL", "String-Manipulation in der neuen Sprache" und "Eine Listenspeichertechnik für alphanumerische Informationen". Es scheint, dass sich die Idee bis dahin festgesetzt hat.

Ich würde argumentieren, dass "Zeichenfolge" im Sinne der Informatik im Laufe der Jahre um 1960 als geordnete Liste von Zeichen verbreitet wurde. Vorher konnten Autoren wie Yngwe und McCarthy "Zeichenfolge" sagen und sicher sein, dass dies der Fall ist verstanden, konnte aber "string" nicht als bloßes Wort in dem Sinne verwenden, wie es heute verwendet wird.

Die Abkürzung wurde wahrscheinlich von Perlis und Smith in den Computing-Mainstream eingeführt. Es wurde nicht häufig zitiert, aber ein wichtiges Zitat ist die syntaktische und semantische Erweiterung von ALGOL durch Joseph W. Smith im April 1960 (in derselben Ausgabe von CACM wie McCarthys Beschreibung von LISP). Aus diesem Papier:

Der Zweck dieses Papiers ist es, ALGOL eine Reihe syntaktischer und semantischer Erweiterungen vorzuschlagen. Die vorgeschlagenen Erweiterungen sollen die Beschreibung der Manipulation von Zeichenfolgen in dieser Sprache erleichtern. Sie stellen keine umfassende Sprache für die Manipulation von Symbolen dar.

Für mich ist dies ein Beweis dafür, dass "string" ein Datentyp für symbolische Berechnungen ist, der im akademischen Lexikon bestätigt und in die für kommerzielle Berechnungen verwendeten Tools eingeführt wird.

Übrigens, Programmiersprachen: Geschichte und Zukunft von Jean Sammet (1972) legen nahe, dass COMIT und SNOBOL die Vorläufer der String-Manipulation waren, daher bin ich ziemlich zuversichtlich, dass es keine früheren Beispiele geben wird.


quelle
2
Beeindruckend. Große Archäologie dort.
sclv
4
Dies erinnert mich an den Prozess, der "Zug der Autos", in dem der Zug wie der Zug eines Hochzeitskleides verwendet wurde, zu "Zug" als Transportmittel machte. Der Übergang von "Zeichenfolge" zu nur "Zeichenfolge" ist der Schlüssel
Kate Gregory
2
Die OED hat diese Arbeit bereits geleistet. Der Eintrag für string (paywall, auf den Mitglieder der britischen Bibliothek wahrscheinlich zugreifen können) lautet "1954 Jrnl. Assoc. Computing Machinery 1 120/2 Eine endliche, möglicherweise null, Folge von Mitgliedern des Alphabets wird als string bezeichnet." das scheint mir genau die moderne verwendung zu sein.
AakashM
1
@AakashM danke für diesen Hinweis, ihr Ergebnis von 1954 stimmt mit den anderen Ergebnissen überein, die ich in den 1950er Jahren gefunden habe. Das Wort "Zeichenfolge" wird nur im Sinne von "Zeichenfolge" verwendet, wenn seine Bedeutung in diesem Sinne erläutert wird . Erst um 1960 können Autoren "string" ohne Erklärung verwenden und es wurde ein Jargonbegriff mit der spezifischeren Bedeutung, wie er in der Frage verwendet wird.
1
@AakashM Die OED-Klassen, die 1954 unter Mathe usw. aufgeführt wurden. Eine Folge von Symbolen oder sprachlichen Elementen in einer bestimmten Reihenfolge , mit einem ersten Beispiel aus einem symbolischen Logikbuch von 1932 . Sie haben einen separaten Eintrag für Computing. Als lineare Folge von Datensätzen oder Daten habe ich meiner Antwort das erste Beispiel von 1956 hinzugefügt .
Hugo
14

Keine vollständige Antwort, aber die Verwendung von Zeichenketten als "mehrere in einer Linie angeordnete Objekte" gab es bereits Ende des 14. Jahrhunderts. Quelle

Dies ist im Wesentlichen die gleiche Verwendung.

Peter Taylor
quelle
5

Die früheste Referenz, die ich im Computer finden konnte, ist METEOR ( März 1963 ) : Ein LISP-Interpreter für String-Transformationen von Daniel G. Bobrow an den AI Labs des MIT.

Das Oxford English Dictionary enthält ein früheres Rechenbeispiel aus einer Ausgabe des Journal of the Association for Computing Machinery von 1956 :

Bereiche zum Hin- und Herschieben von Kontrollfeldern werden reserviert, bis eine vollständig sortierte Sequenz erhalten wird.

Hugo
quelle