Etymologia „struny”

58

Jest więc oczywiste, że ciąg rzeczy jest sekwencją rzeczy, a więc sekwencją znaków / bajtów / itp. równie dobrze można nazwać ciągiem. Ale kto pierwszy nazwał je łańcuchami? I kiedy? I w takim kontekście, że utknął w pobliżu? Zawsze się nad tym zastanawiałem.

sclv
źródło
10
już zadałem pytanie na stackoverflow
Alb
1
@ Mark przepraszam, nie zdawałem sobie sprawy, że to konwencja. Ma sens.
Alb
1
@Alb nie ma problemu. Dla odniesienia twojego i innych osób (to pytanie zostało oznaczone jako duplikat) pytanie istniejące w przepełnieniu stosu nie wpływa na status tego pytania, ale zdecydowanie pomocne jest komentowanie i zanotowanie innych pytań w sieci które mogłyby pomóc odpowiedzieć na to pytanie.
1
Alb, ze świetną odpowiedzią user4051, zalecam usunięcie twojego komentarza odnoszącego się do pytania dotyczącego przepełnienia stosu i umieszczenie tam linku z powrotem do tego pytania.
Tyler Collier
1
Pamiętaj, że chociaż głosowałem za zamknięciem, myślę, że powinniśmy zachować to pytanie jako drogowskaz. Odpowiedzi na to pytanie są znacznie dokładniejsze i kompletniejsze niż odpowiedzi na inne podobne pytania w Programmers.SE lub Stack Overflow. Jest to również interesujące pytanie, na które można obiektywnie odpowiedzieć.

Odpowiedzi:

47

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.


źródło
2
Łał. Świetna archeologia.
sclv
4
To przypomina mi proces, który przekształcił „pociąg samochodów”, w którym pociąg był używany jak pociąg sukni ślubnej, w po prostu „pociąg” jako formę transportu. Kluczem jest przejście od „ciągu znaków” do samego „ciągu”
Kate Gregory
2
OED już wykonał tę pracę. Wpis dla ciągu (paywall, ale członkowie brytyjskiej biblioteki prawdopodobnie mają dostęp) ma „1954 Jrnl. Assoc. Computing Machinery 1 120/2 Skończona, być może zerowa sekwencja członków alfabetu jest nazywana ciągiem”. co wydaje mi się być współczesnym zastosowaniem.
AakashM
1
@AakashM dzięki za to odniesienie, ich wynik z 1954 roku jest zgodny z innymi wynikami, które znalazłem w latach 50. XX wieku. Słowo „ciąg znaków” jest używane tylko w znaczeniu „ciąg znaków”, gdy wyjaśniono jego znaczenie w tym znaczeniu . Dopiero około 1960 roku autorzy mogą używać „łańcucha” bez wyjaśnienia, i że stał się terminem żargonowym o bardziej szczegółowym znaczeniu stosowanym w pytaniu.
1
@AakashM Klasy OED, które w 1954 r . Odbywały się pod matematyką, itp. Sekwencja symboli lub elementów językowych w określonej kolejności , z pierwszym przykładem z książki Logika symboliczna z 1932 r . Mają osobny wpis dotyczący informatyki. Liniowa sekwencja rekordów lub danych , do mojej odpowiedzi dodałem pierwszy przykład z 1956 r .
Hugo
14

Nie jest to kompletna odpowiedź, ale użycie ciągu znaków w celu oznaczenia „pewnej liczby obiektów ułożonych w linii” było już pod koniec 1400 roku. Źródło

Jest to zasadniczo takie samo użycie.

Peter Taylor
źródło
5

Najwcześniejsze wzmianki udało mi się znaleźć w informatyce jest od marca 1963 roku „s Meteor: interpretera LISP dla Smyczkowych Przekształceń Daniel G. Bobrow na MIT AI Labs.

Oxford English Dictionary zawiera wcześniejszą obliczeniowej przykład z 1956 numerze Journal of Association for Computing Machinery :

Obszary są odkładane na sekwencje pól kontrolnych tam iz powrotem, aż do uzyskania całkowicie posortowanej sekwencji.

Hugo
źródło