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.