Etimologia di "String"


58

Quindi è ovvio che una serie di cose è una sequenza di cose, e quindi una sequenza di caratteri / byte / ecc. potrebbe anche essere chiamato una stringa. Ma chi per primo li ha chiamati stringhe? E quando? E in quale contesto è rimasto bloccato? Mi sono sempre chiesto questo.


10
già chiesto su StackOverflow
Alb

1
@Mark scusa, non avevo capito che era una convenzione. Ha senso.
Alb

1
@Alb nessun problema. Per riferimento tuo e di altre persone (questa domanda è stata contrassegnata come duplicata), una domanda esistente su Stack Overflow non influisce sullo stato di questa domanda, ma è sicuramente utile commentare e prendere nota di altre domande sulla rete questo potrebbe aiutare a rispondere.

1
Alb, con la grande risposta di user4051, ti consiglio di rimuovere il tuo commento facendo riferimento alla domanda StackOverflow e di reinserire un link a questa domanda.
Tyler Collier,

1
Si noti che mentre ho votato per chiudere, penso che dovremmo tenere questa domanda come un cartello. Le risposte a questa domanda sono molto più esaurienti e complete delle risposte a qualsiasi altra domanda simile su Programmers.SE o Stack Overflow. Questa è anche una domanda interessante che è obiettivamente rispondente.

Risposte:


47

Possiamo ottenere una vera citazione prima del riferimento di Hugo del 1963? Sì. John McCarthy usò la parola "stringa" nelle funzioni ricorsive delle espressioni simboliche e nel loro calcolo per macchina, Parte I , dall'aprile 1960.

Per i simboli atomici, useremo stringhe di lettere e cifre latine maiuscole ...

ma più utile per questa domanda, un riferimento a una stringa come tipo di dati:

Qualsiasi stringa di caratteri ammessi [è] un'espressione a L.

Questo non è un grande esempio. Dicendo "una stringa di caratteri", McCarthy non sta usando "stringa" nel senso specializzato che i programmatori intendono oggi. Puoi facilmente dire "una stringa" a un programmatore Java e loro sapranno che la parte "dei caratteri" è implicita: l'uso di McCarthy non dimostra questa caratteristica. Proviamo a risalire agli anni '50, per vedere se McCarthy lo stava giocando in modo sicuro o se il termine non esisteva davvero allora. Probabilmente LISP non sarà di grande aiuto qui, poiché si basa su un calcolo matematico, quindi le funzioni di stringa di McCarthy potrebbero essere state la prima applicazione dell'idea all'elaborazione di stringhe.

Un importante sistema di elaborazione delle stringhe degli anni '60 fu SNOBOL, A String Manipulation Language del 1964 . Questo cita il documento di McCarthy sopra, ma discute anche di COMIT e SCL. Il lavoro che citano su SCL non è stato pubblicato: uno sfortunato vicolo cieco.

COMIT è più facile da rintracciare. The Art of Computer Programming (Volume 1, terza edizione, p.461) ci dice che VH Yngve scrisse un articolo CACM del 1963 su di esso. Ma sto cercando il primo utilizzo di "stringa", quindi cercherò un autore per cercare pubblicazioni precedenti.

Il primo che posso trovare è Un linguaggio di programmazione per la traduzione meccanica , dal luglio 1958. Questo contiene solo un uso della parola "stringa":

Ogni stringa continua di lettere tra segni di punteggiatura o spazi viene cercata nel dizionario.

Ancora una volta, questo uso è come quello di McCarthy: questa non è la prova che "stringa" sia usata nel suo significato attuale. Osservando il documento in dettaglio, vediamo che la struttura dei dati è una "linea" su una carta (consentendo continuazioni per "linee" più lunghe).

OK, andremo avanti nella storia di COMIT e vedremo cosa possiamo ottenere. Il primo riferimento utile è il sistema COMIT per la traduzione meccanica , dagli atti di una conferenza del giugno 1959.

Se vogliamo sostituire D SIN (F) con COS (F) D (F), dove F non ha restrizioni e può essere qualsiasi sequenza arbitraria di componenti, utilizziamo la notazione $ per indicare questa stringa.

Questo sembra più simile al modo in cui lo usiamo oggi: "stringa" è isolata e come bonus ha un simbolo speciale riconoscibile: il simbolo del dollaro è ancora usato in alcuni gusti BASIC per indicare una variabile stringa.

Da questo momento, la parola "stringa" appare anche molte volte in un linguaggio di comando per la gestione di stringhe di simboli di Perlis e Smith dagli Atti ACM '58 e una volta in The Share 709 System: Machine Implementation of Symbolic Programming by Boehm and Acciaio.

La ricerca della 'stringa' nella libreria digitale ACM all'inizio degli anni '60 produce 62 risultati, tra cui titoli come "Gestione delle stringhe in ALGOL", "Manipolazione delle stringhe nella nuova lingua" e "Una tecnica di memorizzazione di tipo elenco per informazioni alfanumeriche". Sembra che l'idea sia ormai radicata.

Direi che "stringa" nel suo senso del gergo informatico come elenco ordinato di personaggi divenne comune nel giro di un paio di anni intorno al 1960. Prima di allora, autori come Yngwe e McCarthy potevano dire "stringa di caratteri" ed essere sicuri che fossero capito, ma non potevo usare "stringa" come una parola nuda, nel senso in cui è usata oggi.

La scorciatoia fu probabilmente introdotta nel mainstream dell'informatica dal giornale Perlis e Smith. Non è stato ampiamente citato, ma un'importante citazione sono gli aumenti sintattici e semantici di ALGOL di Joseph W. Smith nell'aprile 1960 (nello stesso numero di CACM della descrizione di LISP di McCarthy). Da quel foglio:

Lo scopo di questo documento è di proporre una serie di aumenti sintattici e semantici ad ALGOL. Le estensioni proposte sono progettate per facilitare la descrizione della manipolazione "stringa" in quella lingua; non costituiscono un linguaggio completo per la manipolazione dei simboli.

Per me, ciò costituisce la prova di "stringa" che significa che un tipo di dati per il calcolo simbolico è affermato nel lessico accademico e introdotto in modo importante agli strumenti utilizzati per il calcolo commerciale.

Per inciso, Programming Languages: History and Future di Jean Sammet (1972) suggerisce che COMIT e SNOBOL erano i progenitori della manipolazione delle stringhe, quindi sono abbastanza fiducioso che non ci saranno esempi precedenti.


2
Wow. Grande archeologia lì.
sclv,

4
Questo mi ricorda il processo che ha trasformato il "treno di automobili" in cui il treno era usato come il treno di un abito da sposa, in un semplice "treno" come forma di trasporto. Il passaggio da "stringa di caratteri" a solo "stringa" è la chiave
Kate Gregory

2
L'OED ha già svolto questo lavoro. La voce per stringa (paywall, ma probabilmente i membri della biblioteca del Regno Unito sono probabilmente in grado di accedere) ha "1954 Jrnl. Assoc. Computing Machinery 1 120/2 Una sequenza finita, possibilmente nulla, di membri dell'alfabeto è chiamata stringa." che mi sembra essere esattamente l'uso moderno.
AakashM,

1
@AakashM grazie per quel riferimento, il loro risultato del 1954 è coerente con gli altri risultati che ho trovato negli anni '50. La parola "stringa" viene utilizzata solo nel senso "stringa di caratteri" quando viene spiegato il suo significato in quel senso . È solo verso il 1960 che gli autori possono usare "stringa" senza spiegazioni e che è diventato un termine gergale con il significato più specifico usato nella domanda.

1
@AakashM Le classi OED che nel 1954 in matematica., Ecc. Una sequenza di simboli o elementi linguistici in un ordine definito , con un primo esempio tratto da un libro di logica simbolica del 1932 . Hanno una voce separata per il calcolo. Una sequenza lineare di record o dati , ho aggiunto il primo esempio del 1956 alla mia risposta .
Hugo,

14

Non una risposta completa, ma l'uso della stringa per indicare "un numero di oggetti disposti in una linea" era già in circolazione alla fine del 1400. fonte

Questo è essenzialmente lo stesso utilizzo.


5

Il primo riferimento che ho trovato nel calcolo va da marzo 1963 's METEOR: Un LISP Interprete per String trasformazioni da Daniel G. Bobrow di Ai laboratori del MIT.

L' Oxford English Dictionary ha un precedente esempio di calcolo tratto da un numero del 1956 del Journal of the Association for Computing Machinery :

Le aree sono riservate per spostare le stringhe dei campi di controllo avanti e indietro fino ad ottenere una sequenza completamente ordinata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.