Die Geschichte hinter der Definition eines 'Strings'

71

Ich habe bis vor kurzem noch nie darüber nachgedacht, bin mir aber nicht sicher, warum wir Strings nennen strings. Ich bin ein .NET-Programmierer, aber ich glaube, dass das Konzept der Zeichenfolgen in praktisch jeder Programmiersprache existiert.

Außerhalb der Programmierung glaube ich nicht, dass ich das Wort gehört stringhabe, mit dem Wörter oder Buchstaben beschrieben werden. Ein kurzes Google von 'Define: string' liefert eine Reihe von Definitionen, die nichts mit dem Konzept von Buchstaben, Wörtern oder irgendetwas zu tun haben, das mit der Programmierung verbunden ist.

Ich vermute, dass Strings früher wirklich nur Anordnungen von Zeichen einer bestimmten Länge waren, oft mit einem abgrenzenden Zeichen am Ende. Aber ich sehe keinen natürlichen Übergang von 'Zeichenarray' zu string.

Kann jemand einen Einblick geben, warum wir Strings nennen strings?

Rob P.
quelle
18
Außerdem habe ich mich gefragt, warum sie $ verwendet haben, um Zeichenfolgen in älteren Versionen von BASIC zu definieren. Vielleicht nur, weil es wie der Buchstabe S aussieht. Einmal sagte ich beim Chatten in einem FPS-Spiel: "Was ist los, G-Saite?" zu einem Spieler mit dem Namen "G $" und er wurde ein bisschen verrückt danach. Er sagte, die richtige Art zu sagen sei "G-Geld". Zum Glück gab es ein paar andere Programmierer im Haus, die es bekommen haben.
Bratch
1
Im Übrigen wurde der größte Teil unserer Programmiersprache schamlos von Dingen gestohlen, die eine vorübergehende abstrakte Ähnlichkeit mit dem hatten, was wir dem Namen gegeben haben.
Camilo Martin
1
Das Programmieren der Umgangssprache ist schrecklich und unzugänglich abstrakt und komplex. Ich denke, das liegt daran, dass alle Programmierer programmieren.
Kevin Behan
Ähnliche Frage auf Programmers.SE: softwareengineering.stackexchange.com/questions/43329/…
Kevin

Antworten:

29

Aus dieser Referenz:

Die OED von 1971 (S. 3097) zitiert ein 1891 Century Dictionary aus einer Quelle im Milwaukee Sentinel vom 11. Januar 1898 (Abschnitt 3, S. 1), wonach dies der Begriff eines Komponisten ist. Drucker fügten den Text, den sie generiert hatten, in einen langen Zeichenstreifen ein. (Vermutlich wurden sie am Fuß bezahlt, nicht am Wort!) Das Zitat besagt, dass es für Komponisten nicht ungewöhnlich war, mehr als 1500 (Zeichen?) Pro Stunde zu erstellen.

Paul Sonier
quelle
9
Wenn dies korrekt ist, ist es wahrscheinlich die Antwort. Wir nehmen viele solcher Begriffe aus der Welt des Druckens, z. B. "Schrift" ist die Schale, aus der einzelne Bleiteile gezogen wurden, um die "Schnur" auszufüllen. "Schrift" bezog sich auf seine Ähnlichkeit mit einem Taufbecken (Brunnen).
John Saunders
Es ist nicht so, als hätte ich eine Kopie des OED von 1971 zu überprüfen, aber das Zitat erscheint mir vernünftig.
Paul Sonier
John hat recht. Bei dieser Antwort geht es mehr um die Geschichte als um die Definition, nach der gefragt wurde.
Bratch
2
Ich glaube nicht, dass das Drucken im frühen Computer einen großen Einfluss hatte. Schriftarten und dergleichen kamen später mit grafischen Anzeigen und Nadeldruckern.
Starblue
36

Meine Annahme war immer, dass der Programmierbegriff aus der folgenden Definition des Wortes "Zeichenfolge" (von Merriam-Webster) stammt:

(1): eine Reihe von Dingen, die in oder wie in einer Reihe angeordnet sind <a Reihe von Autos> <a Reihe von Namen>

(2): eine Folge gleicher Elemente (als Bits, Zeichen oder Wörter)

Da eine Zeichenfolge in der Programmierung einfach eine geordnete Folge von Zeichen ist, scheint es der wahrscheinlichste Ursprung zu sein, dies als "Zeichenfolge" (oder einfach als "Zeichenfolge") zu bezeichnen.

CloudyMusic
quelle
13

Durch die Suche in der ACM-Bibliographie scheint das Wort String in den 1960er Jahren seine Bedeutung in der Informatik erlangt zu haben. Am Anfang ist eine Zeichenfolge eine allgemeine Art von Sequenz oder Liste, z. B. eine Befehlssprache für die Behandlung von Zeichenfolgen aus Symbolen von 1958.

In diesem Artikel werden "Zeichenketten" aus dem Jahr 1964 ausdrücklich erwähnt.

Leider kann ich nicht auf die Volltexte zugreifen, die sich hinter einer Mautstelle befinden.

Sternenblau
quelle
11

Ich hatte vermutet, dass "String" von Mathematikern lange vor seiner Einführung in Programmiersprachen verwendet wurde. Turingmaschinen arbeiten effektiv mit Saiten. Turing hat den Begriff vielleicht nicht verwendet, aber er wird überall in Automatenlehrbüchern verwendet, die Jahrzehnte zurückreichen.

Die früheste Referenz, die ich finden konnte, war ein Fragment in Google-Büchern eines Artikels von 1944 "Rekursiv aufzählbare Mengen positiver Ganzzahlen und ihre Entscheidungsprobleme" von Logiker Emil Post im Bulletin des AMS. Glücklicherweise bietet AMS Online-Archive mit vollständigen Artikeln zum kostenlosen Download an. Hier ist ein Link: http://www.ams.org/journals/bull/1944-50-05/S0002-9904-1944-08111-1/S0002-9904-1944-08111-1.pdf

Ich denke, es gibt kaum Zweifel, dass er "String" im herkömmlichen Sinne der Informatik verwendet. S. 286 "Zu Arbeitszwecken führen wir den Buchstaben b ein und betrachten" Strings "von 1 und b wie 11b1bb1. Eine Operation mit solchen Strings wie" b1bP erzeugt P1bb1 "bezeichnen wir als normale Operation. Diese besondere Normalität Die Operation ist nur auf Zeichenfolgen anwendbar, die mit b1b beginnen, und die abgeleitete Zeichenfolge wird dann aus der gegebenen Zeichenfolge erhalten, indem zuerst das anfängliche b1b entfernt und dann am Ende 1bb1 angeheftet wird. Somit wird b1bb zu b1bb1. "

Paul Callahan
quelle
7

Ich vermute, es liegt daran, dass stringursprünglich nur eine Folge von Datenwerten gemeint war: "Ich werde diese nur aneinander reihen" usw. Diese Werte mussten keine Zeichen sein. Eine sehr häufige Verwendung für dieses allgemeine Konzept war eine Folge von Zeichen, die als allgemeine Bedeutung des Wortes übernommen wurde.

Jon Skeet
quelle
Also nannten die Leute Arrays "Strings"? Ich denke darüber nach, wie einige Sprachen immer noch Zeichenfolgen für Binärdaten verwenden: PHP funktioniert immer noch und Javascript hat dies möglicherweise einmal getan (aufgrund des Fehlens typisierter Arrays).
Camilo Martin
7

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

Definition 15d. im Oxford English Dictionary ist:

Berechnen Eine lineare Folge von Datensätzen oder Daten.

... und mit einem ersten Zitat aus einem Journal der Association for Computing Machinery von 1956 :

Bereiche sind reserviert, um Strings von Kontrollfeldern hin und her zu verschieben, bis eine vollständig sortierte Sequenz erhalten wird.

Diese Verwendung folgt natürlich aus Definition 15c.:

Mathematik. usw. Eine Folge von Symbolen oder sprachlichen Elementen in einer bestimmten Reihenfolge.

... und zuerst in verwendet Clarence Irving Lewis and Cooper Harold Langford ‚s Symbolic Logic (1932):

Sätze sind keine Markierungen oder Tonfolgen, außer im Übrigen.

Dies folgt wiederum aus vielen anderen, viel früheren Definitionen für Dinge in einer Zeile.

Hugo
quelle
3

Das Wort wurde ursprünglich verwendet, um zwischen einer Reihe von Werten zu unterscheiden, für die die bestimmte Reihenfolge der Elemente keine Rolle spielt (z. B. eine Reihe von zufälligen Stichproben von Messungen), und einer anderen, deren Bedeutung nur erhalten bleiben kann, wenn die Reihenfolge ebenfalls erhalten bleibt . Ursprünglich konnte eine Zeichenfolge eine Reihe von Werten jeder Art sein, aber da in der Post-Mainframe-Ära eine Zeichenfolge bei weitem die häufigste Art ist, wurde die Tatsache, dass die Werte Zeichen sind, zu einem "Standard".

Fabio Ceconello
quelle
Ich denke, das und @ jonskeets Verweis auf die Sequenz bedeutet definitiv geordnet, wie Arrays und Vektoren. Aber definitiv das Vorhandensein von Bestellungen (und damit ein "endgültiger" Terminator, der den Unterschied zwischen Anfang und Ende bestätigt).
Dean Radcliffe
1

In einem Vortrag über die Geschichte von Javascript sagt Douglas Crockford "Niemand weiß" und gibt einige Alternativen an: http://www.youtube.com/watch?v=RO1Wnu-xKoY#t=2989

Ich fand den Bericht, in dem angeblich der erste Hinweis in der Computergeschichte auf eine Reihe von Zeichen als "Zeichenfolge" enthalten ist. Ich denke, es befindet sich in der oberen rechten Spalte von Seite 4 des PDFs mit der Nummer 47:

http://web.eecs.umich.edu/~bchandra/courses/papers/Naure_Algol60.pdf

Lior
quelle
1

Eine Zeichenfolge ist (normalerweise char) eine Folge von diskreten Objekten .

Angesichts dessen würde ich wahrscheinlich vermuten, dass es sich um eine Metapher handelt, die sich auf "Perlenkette" bezieht. Jede Perle an der Schnur ist ein einzelnes Zeichen.

Bobobobo
quelle
-2

Es wird als Zeichenfolge bezeichnet, da es sich tatsächlich um ein Array von Elementen vom Typ char handelt.

Davon abgesehen werden sie über dieses Array "aneinandergereiht" (oder aneinandergereiht), wodurch sie zu einem "String" werden.

KdgDev
quelle