Czy możemy dostać prawdziwy cytat przed referencją Hugo z 1963 roku? Tak. John McCarthy użył słowa „ciąg znaków” w rekurencyjnych funkcjach wyrażeń symbolicznych i ich obliczeniu maszynowym, część I , od kwietnia 1960 r.
W przypadku symboli atomowych użyjemy ciągów wielkich liter i cyfr łacińskich…
ale bardziej przydatne w przypadku tego pytania jest odwołanie do ciągu jako typu danych:
Każdy ciąg dopuszczonych znaków [jest] wyrażeniem L.
To nie jest świetny przykład. Mówiąc „ciąg znaków”, McCarthy nie używa słowa „ciąg” w wyspecjalizowanym znaczeniu, że programiści mają to na myśli dzisiaj. Możesz łatwo powiedzieć „ciąg” programistom Java, a oni wiedzą, że część „znaków” jest niejawna: użycie McCarthy'ego nie wykazuje tej funkcji. Spróbujmy cofnąć się do lat 50., aby przekonać się, czy McCarthy grał bezpiecznie, czy też naprawdę nie istniał ten termin. LISP prawdopodobnie tutaj niewiele pomoże, ponieważ opiera się na rachunku matematycznym, więc funkcje łańcuchowe McCarthy'ego mogły być pierwszą aplikacją pomysłu na przetwarzanie łańcucha.
Ważnym systemem przetwarzania ciągów w latach 60. był SNOBOL, język ciągów manipulacyjnych z 1964 r . To cytuje artykuł McCarthy'ego powyżej, ale także omawia COMIT i SCL. Praca, którą cytują w SCL, nie została opublikowana: niefortunny ślepy zaułek.
COMIT jest łatwiejszy do wyśledzenia. The Art of Computer Programming (Tom 1, trzecie wydanie, str. 461) mówi nam, że VH Yngve napisał na ten temat artykuł CACM z 1963 roku. Ale szukam najwcześniejszego użycia „łańcucha”, więc przeprowadzę wyszukiwanie autorów wcześniejszych publikacji.
Pierwszy, jaki mogę znaleźć, to język programowania dla tłumaczenia mechanicznego , z lipca 1958 r. Zawiera on tylko jedno użycie słowa „ciąg”:
Każdy ciąg ciąg liter między znakami interpunkcyjnymi lub spacjami jest sprawdzany w słowniku.
Ponownie, to użycie jest podobne do zastosowania McCarthy'ego: nie jest to dowód na to, że „sznurek” jest używany w obecnym sensie. Przyglądając się szczegółowo artykułowi, widzimy, że struktura danych to „linia” na karcie (pozwalająca na kontynuację dłuższych „linii”).
OK, przejdziemy do historii COMIT i zobaczymy, co możemy uzyskać. Pierwszym przydatnym odniesieniem jest system COMIT do tłumaczenia mechanicznego z materiałów z konferencji z czerwca 1959 r.
Jeśli chcemy zastąpić D SIN (F) przez COS (F) D (F), gdzie F jest nieograniczone i może być dowolną dowolną sekwencją składników, używamy notacji $ do oznaczenia tego ciągu.
Wydaje się to bardziej podobne do sposobu, w jaki go dzisiaj używamy: „ciąg” jest samodzielny, a jako bonus ma rozpoznawalny specjalny symbol: znak dolara jest nadal używany w niektórych odmianach BASIC do oznaczania zmiennej łańcuchowej.
Mniej więcej w tym czasie słowo „ciąg znaków” pojawia się również wielokrotnie w języku poleceń A do obsługi ciągów symboli Perlisa i Smitha z postępowania ACM '58, a raz w Systemie Share 709: Implementacja maszynowa programowania symbolicznego przez Boehm i Stal.
Przeszukanie cyfrowej biblioteki ACM pod kątem „łańcucha” na początku lat 60. daje 62 wyniki, w tym tytuły takie jak „Obsługa łańcucha w ALGOL”, „Manipulacja ciągiem w nowym języku” i „Technika przechowywania typu listy dla informacji alfanumerycznych”. Wygląda na to, że do tego czasu pomysł się zakorzenił.
Twierdziłbym, że „ciąg” w sensie żargonu informatycznego jako uporządkowana lista postaci stał się powszechny przez kilka lat około 1960 roku. Wcześniej autorzy tacy jak Yngwe i McCarthy mogli powiedzieć „ciąg znaków” i mieć pewność, że byli zrozumiałe, ale nie może używać „łańcucha” jako nagiego słowa w takim znaczeniu, w jakim jest używane dzisiaj.
Stenografia prawdopodobnie została wprowadzona do głównego nurtu informatyki w pracy Perlis i Smith. Nie był szeroko cytowany, ale jednym ważnym cytatem jest syntaktyczne i semantyczne rozszerzenia do ALGOL autorstwa Josepha W. Smitha w kwietniu 1960 r. (W tym samym wydaniu CACM, co opis LISP przez McCarthy'ego). Z tego artykułu:
Celem tego artykułu jest zaproponowanie ALGOL zestawu rozszerzeń składniowych i semantycznych. Proponowane rozszerzenia mają na celu ułatwienie opisu manipulacji „ciągiem” w tym języku; nie stanowią kompleksowego języka do manipulacji symbolami.
Dla mnie stanowi to dowód na „ciąg” oznaczający typ danych dla obliczeń symbolicznych potwierdzony w leksykonie akademickim i co ważne wprowadzony do narzędzi wykorzystywanych do obliczeń komercyjnych.
Nawiasem mówiąc, Programming Languages: History and Future autorstwa Jeana Sammeta (1972) sugeruje, że COMIT i SNOBOL były prekursorami manipulacji ciągami, więc jestem całkiem pewien, że nie będzie wcześniejszych przykładów.