Etimologia de "Corda"


58

Portanto, é óbvio que uma sequência de coisas é uma sequência de coisas e, portanto, uma sequência de caracteres / bytes / etc. pode muito bem ser chamado de string. Mas quem primeiro os chamou de cordas? E quando? E em que contexto tal que ficou por aí? Eu sempre me perguntei sobre isso.


10
já perguntei no stackoverflow
Alb

11
@ Mark desculpe, não percebi que era convenção. Faz sentido.
Alb

11
@ Alb não tem problema. Para referência sua e de outras pessoas (esta pergunta foi sinalizada como duplicada), uma pergunta existente no Stack Overflow não afeta o status dessa pergunta, mas é definitivamente útil comentar e anotar outras perguntas na rede isso poderia ajudar a responder.

11
Alb, com a ótima resposta do user4051, recomendo remover o seu comentário referente à questão stackoverflow e colocar um link lá de volta a esta pergunta.
Tyler Collier #

11
Observe que, enquanto votei para fechar, acho que devemos manter essa pergunta como uma placa de sinalização. As respostas nesta pergunta são muito mais completas e completas do que as respostas de qualquer outra pergunta semelhante no Programmers.SE ou no Stack Overflow. Essa também é uma pergunta interessante, objetivamente responsável.

Respostas:


47

Podemos obter uma citação real antes da referência de Hugo em 1963? Sim. John McCarthy usou a palavra "string" em funções recursivas de expressões simbólicas e seu cálculo por máquina, parte I , de abril de 1960.

Para símbolos atômicos, usaremos cadeias de letras maiúsculas e dígitos latinos…

mas mais útil para esta pergunta, uma referência a uma string como um tipo de dados:

Qualquer sequência de caracteres admitidos [é] uma expressão L.

Esse não é um ótimo exemplo. Ao dizer "uma sequência de caracteres", McCarthy não está usando "sequência" no sentido especializado que os programadores querem dizer hoje. Você pode facilmente dizer "uma string" para um programador Java e eles saberão que a parte "of characters" está implícita: o uso de McCarthy não demonstra esse recurso. Vamos tentar voltar à década de 1950, para ver se McCarthy estava jogando pelo seguro ou se o termo realmente não existia na época. O LISP provavelmente não vai ajudar muito aqui, pois é baseado em um cálculo matemático, de modo que as funções de string de McCarthy podem ter sido a primeira aplicação da idéia ao processamento de strings.

Um importante sistema de processamento de strings da década de 1960 foi o SNOBOL de 1964 , uma linguagem de manipulação de strings . Isso cita o artigo de McCarthy acima, mas também discute COMIT e SCL. O trabalho que eles citam no SCL é inédito: um infeliz beco sem saída.

COMIT é mais fácil de localizar. The Art of Computer Programming (Volume 1, terceira edição, p.461) nos diz que VH Yngve escreveu um artigo do CACM de 1963 sobre ele. Mas eu estou procurando o uso mais antigo de "string", por isso vou procurar um autor para publicações anteriores.

O primeiro que posso encontrar é Uma linguagem de programação para tradução mecânica , de julho de 1958. Ela contém apenas um uso da palavra "string":

Cada sequência contínua de letras entre sinais de pontuação ou espaços é pesquisada no dicionário.

Novamente, esse uso é como o de McCarthy: isso não é evidência de que "string" seja usada no sentido atual. Observando o artigo em detalhes, vemos que a estrutura de dados é uma "linha" em um cartão (permitindo continuações por "linhas" mais longas).

OK, avançaremos na história do COMIT e veremos o que podemos obter. A primeira referência útil é o sistema COMIT para tradução mecânica , a partir dos anais de uma conferência de junho de 1959.

Se queremos substituir D SIN (F) por COS (F) D (F), onde F é irrestrito e pode ser qualquer sequência arbitrária de constituintes, usamos a notação $ para representar essa sequência.

Isso parece mais com a maneira como a usamos hoje: "string" fica sozinha e como bônus tem um símbolo especial reconhecível: o cifrão ainda é usado em alguns sabores do BASIC para significar uma variável de string.

Desde essa época, a palavra "string" também aparece muitas vezes na linguagem de comando A, para lidar com seqüências de símbolos de Perlis e Smith dos ACM '58 Proceedings, e uma vez no sistema Share 709: máquina de implementação de programação simbólica de Boehm e Aço.

A pesquisa de 'string' na biblioteca digital do ACM produz 62 resultados, incluindo títulos como "Manipulação de String no ALGOL", "Manipulação de String no Novo Idioma" e "Uma técnica de armazenamento do tipo lista para informações alfanuméricas". Parece que a idéia ficou arraigada até então.

Eu argumentaria que "string", no sentido do jargão da ciência da computação, como uma lista ordenada de caracteres se tornou comum ao longo de alguns anos por volta de 1960. Antes disso, autores como Yngwe e McCarthy podiam dizer "string de caracteres" e ter certeza de que estavam entendido, mas não podia usar "string" como uma palavra simples, no sentido em que é usado hoje.

A abreviação provavelmente foi introduzida no mainstream da computação pelo artigo de Perlis e Smith. Não foi amplamente citado, mas uma citação importante é o aumento sintático e semântico da ALGOL por Joseph W. Smith em abril de 1960 (na mesma edição do CACM que a descrição de McCarthy do LISP). Desse trabalho:

O objetivo deste artigo é propor um conjunto de aumentos sintáticos e semânticos para a ALGOL. As extensões propostas são projetadas para facilitar a descrição da manipulação de "string" nesse idioma; eles não constituem uma linguagem abrangente para manipulação de símbolos.

Para mim, isso constitui evidência de "string", que significa um tipo de dados para computação simbólica sendo afirmado no léxico acadêmico e introduzido de maneira importante nas ferramentas usadas para computação comercial.

Aliás, Linguagens de Programação: História e Futuro, por Jean Sammet (1972), sugere que COMIT e SNOBOL foram os progenitores da manipulação de strings, por isso estou bastante confiante de que não haverá exemplos anteriores.


2
Uau. Grande arqueologia lá.
Sclv

4
Isso me lembra o processo que transformou o "trem de carros" em que o trem era usado como o trem de um vestido de noiva, em apenas "trem" como forma de transporte. A transição da "cadeia de caracteres" para apenas "string" é a chave
Kate Gregory

2
O OED já fez esse trabalho. A entrada para string (paywall, mas provavelmente os membros da biblioteca do Reino Unido podem acessar) possui "1954 Jrnl. Assoc. Computing Machinery 1 120/2 Uma sequência finita, possivelmente nula, de membros do alfabeto é chamada de string". que me parece exatamente o uso moderno.
AakashM

11
@AakashM obrigado por essa referência, o resultado de 1954 é consistente com os outros resultados encontrados nos anos 50. A palavra "string" é usada apenas no sentido de "string of characters" quando seu significado nesse sentido é explicado . Somente em 1960, os autores podem usar "string" sem explicação, e isso se tornou um termo de jargão com o significado mais específico usado na pergunta.

11
@AakashM As classes OED que 1954 em Math., Etc. Uma sequência de símbolos ou elementos linguísticos em uma ordem definida , com um primeiro exemplo de um livro de 1932 Symbolic Logic . Eles têm uma entrada separada para Computação. Uma sequência linear de registros ou dados , adicionei o primeiro exemplo de 1956 à minha resposta .
293 Hugo

14

Não é uma resposta completa, mas o uso de string para significar "vários objetos organizados em uma linha" já existia no final dos anos 1400. Fonte

Este é essencialmente o mesmo uso.


5

A referência mais antiga que pude encontrar na computação é o METEOR: um intérprete LISP para transformações de cordas, de março de 1963 , por Daniel G. Bobrow, no AI Labs do MIT.

O Oxford English Dictionary tem um exemplo de computação anterior, de uma edição de 1956 do Journal of the Association for Computing Machinery :

As áreas são reservadas para transportar seqüências de caracteres de campos de controle para frente e para trás até que uma sequência completamente classificada seja obtida.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.