Etymologie de "String"


58

Il est donc évident qu’une chaîne de choses est une séquence de choses, et donc une séquence de caractères / octets / etc. pourrait aussi bien s'appeler une chaîne. Mais qui les a appelés les premiers? Et quand? Et dans quel contexte tel qu'il est resté? Je me suis toujours demandé à ce sujet.


10
déjà demandé sur stackoverflow
Alb

1
@ Mark Désolé, je ne savais pas que c'était une convention. Logique.
Alb.

1
@Alb pas de problème. Pour votre référence et celle d'autres personnes (cette question a été signalée comme étant un doublon), une question existante sur Stack Overflow n'affecte pas le statut de cette question, mais il est certainement utile de commenter et de noter d'autres questions sur le réseau. cela pourrait aider à y répondre.

1
Alb, avec la bonne réponse de user4051, je recommande de supprimer votre commentaire faisant référence à la question de stackoverflow et de mettre un lien vers cette question
Tyler Collier

1
Veuillez noter que même si j'ai voté pour la clôture, je pense que nous devrions garder cette question comme un poteau indicateur. Les réponses à cette question sont beaucoup plus approfondies et complètes que celles de toutes les autres questions similaires sur Programmers.SE ou Stack Overflow. C'est aussi une question intéressante qui doit être répondue objectivement.

Réponses:


47

Pouvons-nous obtenir une vraie citation avant la référence de Hugo en 1963? Oui. John McCarthy a utilisé le mot "chaîne" dans Fonctions récursives d'expressions symboliques et leur calcul par machine, première partie , à partir d'avril 1960.

Pour les symboles atomiques, nous utiliserons des chaînes de lettres majuscules et de chiffres latins…

mais plus utilement pour cette question, une référence à une chaîne en tant que type de données:

Toute chaîne de caractères admis [est] une expression-L.

Ce n'est pas un bon exemple. En disant "une chaîne de caractères", McCarthy n'utilise pas "chaîne" au sens spécialisé du terme, ce que les programmeurs veulent dire aujourd'hui. Vous pouvez facilement dire "une chaîne" à un programmeur Java et il saura que la partie "des caractères" est implicite: l'utilisation de McCarthy ne démontre pas cette fonctionnalité. Essayons de revenir aux années 50 pour voir si McCarthy jouait la sécurité ou si le terme n'existait pas vraiment à l'époque. LISP ne va probablement pas beaucoup aider ici, car il est basé sur un calcul mathématique et les fonctions de chaîne de McCarthy ont peut-être été la première application de l'idée au traitement de chaîne.

Le système de traitement des chaînes important des années 1960 était SNOBOL, un langage de manipulation des chaînes de 1964 . Cite l'article de McCarthy ci-dessus, mais aborde également COMIT et SCL. Le travail qu'ils citent sur SCL est inédit: une impasse malheureuse.

COMIT est plus facile à localiser. L'art de la programmation informatique (volume 1, troisième édition, p.461) nous dit que VH Yngve a écrit un article du CACM de 1963 à ce sujet. Mais je cherche la première utilisation de "chaîne", alors je vais faire une recherche par auteur pour les publications précédentes.

Le premier que je puisse trouver est Un langage de programmation pour la traduction mécanique , datant de juillet 1958. Il ne contient qu'une utilisation du mot "string":

Chaque chaîne continue de lettres entre des signes de ponctuation ou des espaces est recherchée dans le dictionnaire.

Encore une fois, cet usage ressemble à celui de McCarth: il ne s’agit pas d’une preuve que "chaîne" est utilisé dans son sens actuel. En regardant le papier en détail, nous voyons que la structure de données est une "ligne" sur une carte (permettant des continuations pour des "lignes" plus longues).

OK, nous allons avancer dans l'histoire de COMIT et voir ce que nous pouvons obtenir. La première référence utile est le système COMIT pour la traduction mécanique , tiré des débats d’une conférence tenue en juin 1959.

Si nous voulons remplacer D SIN (F) par COS (F) D (F), où F n’est pas restreint et peut être une séquence quelconque de constituants, nous utilisons la notation $ pour représenter cette chaîne.

Cela ressemble plus à la façon dont nous l’utilisons aujourd’hui: "chaîne" est unique et comporte en prime un symbole spécial reconnaissable: le signe dollar est toujours utilisé dans certaines versions BASIC pour indiquer une variable chaîne.

À partir de cette époque environ, le mot "chaîne" apparaît également à plusieurs reprises dans Un langage de commande pour la gestion de chaînes de symboles de Perlis et Smith issues des Actes ACM '58, et une fois dans The Share 709: Implémentation automatique de la programmation symbolique par Boehm et Acier.

La recherche de 'chaîne' dans la bibliothèque numérique ACM au début des années 1960 donne 62 résultats, notamment "Titres de traitement des chaînes dans ALGOL", "Manipulation de chaînes dans le nouveau langage" et "Technique de stockage de type liste pour les informations alphanumériques". Il semble que l’idée soit retranchée d’ici là.

Je dirais que "chaîne", dans son sens du jargon informatique, comme une liste ordonnée de caractères, est devenue courante au cours des années 1960. Avant cela, des auteurs comme Yngwe et McCarthy pouvaient dire "chaîne de caractères" et être sûrs qu'ils le seraient. compris, mais ne pouvait pas utiliser "chaîne" comme un mot nu dans le sens où il est utilisé aujourd'hui.

La sténographie a probablement été introduite dans le grand public informatique par le papier Perlis et Smith. Cela n'a pas été beaucoup cité, mais une citation importante est la synthèse syntaxique et sémantique à ALGOL de Joseph W. Smith en avril 1960 (dans le même numéro de CACM que la description de LISP par McCarthy). De ce papier:

Le but de cet article est de proposer un ensemble d’augmentations syntaxiques et sémantiques à ALGOL. Les extensions proposées sont conçues pour faciliter la description de la manipulation de "chaîne" dans cette langue; ils ne constituent pas un langage complet pour la manipulation de symboles.

Pour moi, cela constitue la preuve que "chaîne" signifie un type de données pour le calcul symbolique qui est affirmé dans le lexique universitaire et introduit de manière importante dans les outils utilisés pour le calcul commercial.

Incidemment, Programming Languages: History and Future de Jean Sammet (1972) suggère que COMIT et SNOBOL étaient les géniteurs de la manipulation de chaîne. Je suis donc plutôt convaincu qu'il n'y aura pas d'exemples antérieurs.


2
Sensationnel. Grande archéologie là-bas.
sclv

4
Cela me rappelle le processus qui a transformé le "train de voitures" où le train était utilisé comme le train d’une robe de mariée, en "train" comme moyen de transport. La transition de "chaîne de caractères" à juste "chaîne" est la clé
Kate Gregory

2
L'OED a déjà effectué ce travail. L'entrée pour string (paywall, mais les membres de la bibliothèque britannique sont probablement capables d'y accéder) est "1954 juniors. Machine informatique. 1 120/2 Une séquence finie, voire nulle, de membres de l'alphabet est appelée une chaîne". ce qui me semble être exactement l'utilisation moderne.
AakashM

1
@AakashM merci pour cette référence, leur résultat de 1954 est cohérent avec les autres résultats que j'ai trouvés dans les années 1950. Le mot "chaîne" n’est utilisé dans le sens de "chaîne de caractères" que lorsque sa signification dans ce sens est expliquée . Ce n'est que vers 1960 que les auteurs peuvent utiliser "chaîne" sans explication et que cela devint un terme de jargon avec le sens plus spécifique utilisé dans la question.

1
@AakashM Les classes OED de 1954 sous Math., Etc. Une séquence de symboles ou d'éléments linguistiques dans un ordre défini , avec un premier exemple tiré d'un livre logique de 1932 . Ils ont une entrée séparée pour l' informatique. Séquence linéaire d'enregistrements ou de données , j'ai ajouté le premier exemple de 1956 à ma réponse .
Hugo

14

Pas une réponse complète, mais l'utilisation d'une chaîne de caractères pour signifier "un nombre d'objets disposés en ligne" existait déjà à la fin des années 1400. La source

C'est essentiellement le même usage.


5

La première référence que je pouvais trouver dans le calcul est de Mars 1963 « de la METEOR: Un LISP interprète pour les transformations de chaîne par Daniel G. Bobrow à AI Labs du MIT.

Le Oxford English Dictionary a un exemple informatique précédent tiré d’un numéro de 1956 du Journal de l’Association for Computing Machinery :

Des zones sont réservées pour faire défiler des chaînes de champs de contrôle jusqu'à l'obtention d'une séquence complètement triée.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.