Etimología de "cadena"

58

Entonces, es obvio que una cadena de cosas es una secuencia de cosas y, por lo tanto, una secuencia de caracteres / bytes / etc. bien podría llamarse una cadena. ¿Pero quién los llamó primero cuerdas? ¿Y cuando? ¿Y en qué contexto se quedó? Siempre me he preguntado sobre esto.

sclv
fuente
10
ya preguntado en stackoverflow
Alb
1
@ Mark lo siento, no me di cuenta de que era una convención. Tiene sentido.
Alb
1
@Alb no hay problema. Para su referencia y la de otras personas (esta pregunta se marcó como un duplicado), una pregunta existente en Stack Overflow no afecta el estado de esta pregunta, pero definitivamente es útil comentar y tomar nota de otras preguntas en la red eso podría ayudar a responderlo.
1
Alb, con la gran respuesta del usuario 4051, recomiendo eliminar su comentario que hace referencia a la pregunta de stackoverflow y poner un enlace allí de nuevo a esta pregunta.
Tyler Collier
1
Tenga en cuenta que aunque voté para cerrar, creo que deberíamos mantener esta pregunta como señal. Las respuestas a esta pregunta son mucho más completas y completas que las respuestas a cualquiera de las otras preguntas similares en Programmers.SE o en Stack Overflow. Esta también es una pregunta interesante que es objetivamente responsable.

Respuestas:

47

¿Podemos obtener una cita real antes de la referencia de Hugo de 1963? Si. John McCarthy usó la palabra "cadena" en funciones recursivas de expresiones simbólicas y su cálculo por máquina, Parte I , de abril de 1960.

Para los símbolos atómicos, usaremos cadenas de letras mayúsculas latinas y dígitos ...

pero más útil para esta pregunta, una referencia a una cadena como tipo de datos:

Cualquier cadena de caracteres admitidos [es] una expresión L.

Ese no es un gran ejemplo. Al decir "una cadena de caracteres", McCarthy no está usando "cadena" en el sentido que los programadores especializados lo dicen hoy. Puede decir fácilmente "una cadena" a un programador de Java y sabrá que la parte "de caracteres" está implícita: el uso de McCarthy no demuestra esta característica. Intentemos retroceder a la década de 1950, para ver si McCarthy estaba jugando a lo seguro o si el término realmente no existía en ese momento. LISP probablemente no va a ayudar mucho aquí, ya que se basa en un cálculo matemático, por lo que las funciones de cadena de McCarthy pueden haber sido la primera aplicación de la idea al procesamiento de cadenas.

Un importante sistema de procesamiento de cadenas de la década de 1960 fue SNOBOL, un lenguaje de manipulación de cadenas de 1964 . Esto cita el artículo de McCarthy anterior, pero también analiza COMIT y SCL. El trabajo que citan en SCL es inédito: un callejón sin salida desafortunado.

COMIT es más fácil de rastrear. The Art of Computer Programming (Volumen 1, tercera edición, p.461) nos dice que VH Yngve escribió un artículo de 1963 CACM sobre él. Pero estoy buscando el uso más temprano de "string", así que haré una búsqueda de autor para publicaciones anteriores.

Lo primero que puedo encontrar es Un lenguaje de programación para la traducción mecánica , de julio de 1958. Esto solo contiene un uso de la palabra "cadena":

Cada cadena continua de letras entre signos de puntuación o espacios se busca en el diccionario.

Una vez más, este uso es como el de McCarthy: esto no es evidencia de que se use "cadena" en su sentido actual. Mirando el documento en detalle, vemos que la estructura de datos es una "línea" en una tarjeta (permitiendo la continuación de "líneas" más largas).

OK, avanzaremos en la historia de COMIT y veremos qué podemos obtener. La primera referencia útil es el sistema COMIT para la traducción mecánica , de las actas de una conferencia de junio de 1959.

Si queremos reemplazar D SIN (F) por COS (F) D (F), donde F no está restringido y puede ser cualquier secuencia arbitraria de componentes, usamos la notación $ para representar esta cadena.

Esto parece más parecido a la forma en que lo usamos hoy en día: "string" está solo y, como bonificación, tiene un símbolo especial reconocible: el signo de dólar todavía se usa en algunos sabores BÁSICOS para significar una variable de cadena.

Alrededor de este tiempo, la palabra "cadena" también aparece muchas veces en el lenguaje de comando A para manejar cadenas de símbolos por Perlis y Smith de los Procedimientos ACM '58, y una vez en El Sistema Share 709: Implementación de Máquina de Programación Simbólica por Boehm y Acero.

La búsqueda de 'cadenas' en la biblioteca digital de ACM a principios de la década de 1960 arroja 62 resultados, incluidos títulos como "Manejo de cadenas en ALGOL", "Manipulación de cadenas en el nuevo idioma" y "Una técnica de almacenamiento de tipo de lista para información alfanumérica". Parece que la idea se ha atrincherado para entonces.

Yo diría que "cadena" en su sentido de jerga informática como una lista ordenada de caracteres se hizo común durante un par de años alrededor de 1960. Antes de eso, autores como Yngwe y McCarthy podían decir "cadena de caracteres" y asegurarse de que fueran entendido, pero no podía usar "cadena" como una palabra desnuda en el sentido que se usa hoy en día.

La taquigrafía probablemente fue presentada a la corriente principal de la informática por el artículo de Perlis y Smith. No ha sido ampliamente citado, pero una cita importante son los aumentos sintácticos y semánticos a ALGOL por Joseph W. Smith en abril de 1960 (en el mismo número de CACM que la descripción de McCarthy de LISP). De ese papel:

El propósito de este artículo es proponer un conjunto de aumentos sintácticos y semánticos a ALGOL. Las extensiones propuestas están diseñadas para facilitar la descripción de la manipulación de "cadenas" en ese idioma; no constituyen un lenguaje integral para la manipulación de símbolos.

Para mí, esto constituye evidencia de "cadena" que significa un tipo de datos para la computación simbólica que se afirma en el léxico académico, y se introduce de manera importante en las herramientas utilizadas para la computación comercial.

Por cierto, los lenguajes de programación: Historia y futuro de Jean Sammet (1972) sugieren que COMIT y SNOBOL fueron los progenitores de la manipulación de cadenas, por lo que estoy bastante seguro de que no habrá ejemplos anteriores.


fuente
2
Guau. Gran arqueología allí.
sclv
44
Esto me recuerda el proceso que convirtió el "tren de autos" donde el tren se usaba como el tren de un vestido de novia, en solo "tren" como una forma de transporte. La transición de "cadena de caracteres" a solo "cadena" es la clave
Kate Gregory
2
El DEO ya ha hecho este trabajo. La entrada para la cadena (paywall, pero los miembros de la biblioteca del Reino Unido probablemente puedan acceder) tiene "1954 Jrnl. Assoc. Computing Machinery 1 120/2 Una secuencia finita, posiblemente nula, de miembros del alfabeto se llama una cadena". que me parece exactamente el uso moderno.
AakashM
1
@AakashM gracias por esa referencia, su resultado de 1954 es consistente con los otros resultados que encontré en la década de 1950. La palabra "cadena" solo se usa en el sentido de "cadena de caracteres" cuando se explica su significado en ese sentido . No es hasta alrededor de 1960 que los autores pueden usar "cadena" sin explicación, y que se convirtió en un término jerga con el significado más específico que se utiliza en la pregunta.
1
@AakashM Las clases de OED de 1954 bajo Matemáticas, etc. Una secuencia de símbolos o elementos lingüísticos en un orden definido , con un primer ejemplo de un libro de lógica simbólica de 1932 . Tienen una entrada separada para computación. Una secuencia lineal de registros o datos , he agregado el primer ejemplo de 1956 a mi respuesta .
Hugo
14

No es una respuesta completa, pero el uso de una cadena para significar "una cantidad de objetos dispuestos en una línea" ya existía a fines de la década de 1400. Fuente

Este es esencialmente el mismo uso.

Peter Taylor
fuente
5

La primera referencia que pude encontrar en informática es de METEOR: un intérprete de LISP para transformaciones de cadenas de marzo de 1963 , de Daniel G. Bobrow, en los laboratorios de IA del MIT.

El Oxford English Dictionary tiene un ejemplo informático anterior de una edición de 1956 del Journal of the Association for Computing Machinery :

Las áreas se reservan para trasladar cadenas de campos de control de un lado a otro hasta que se obtiene una secuencia completamente ordenada.

Hugo
fuente