Етимологія "Рядок"


58

Тож очевидно, що рядок речей - це послідовність речей, і тому послідовність символів / байтів / тощо. може також називатися рядком. Але хто перший назвав їх струнами? І коли? І в якому контексті таке, що воно застрягло? Я завжди цікавився цим.


10
вже запитували в stackoverflow
Alb

1
@ Марк вибачте, не усвідомлював, що це конвенція. Має сенс.
Альб

1
@Alb немає проблем. Для вашої та інших посилань (це запитання було позначено як дублікат), питання, що існує у переповненні стека, не впливає на статус цього питання, але, безумовно, корисно прокоментувати та зробити замітку щодо інших питань у мережі. це могло б допомогти відповісти на це.

1
Альб, з чудовою відповіддю user4051, я рекомендую видалити ваш коментар із посиланням на питання stackoverflow і покласти туди посилання на це питання.
Тайлер Колліер

1
Зауважте, що, хоча я проголосував за закриття, я думаю, що ми повинні тримати це питання навколо як покажчика. Відповіді на це питання набагато ґрунтовніші та повніші, ніж відповіді на будь-яке інше подібне запитання на Programmers.SE або на переповнення стека. Це також цікаве питання, на яке об'єктивно відповідають.

Відповіді:


47

Чи можемо ми отримати справжнє цитування до посилання Гюго 1963 року? Так. Джон Маккарті вживав слово "рядок" у рекурсивних функціях символічних виразів та їх обчисленні машиною, частина I , з квітня 1960 року.

Для атомних символів ми будемо використовувати рядки великих літер і цифр ...

але більш корисно для цього питання посилання на рядок як тип даних:

Будь-який рядок допущених символів [є] L-виразом.

Це не чудовий приклад. Говорячи "рядок символів", Маккарті не використовує "рядок" у спеціалізованому сенсі програмісти означають це сьогодні. Ви можете легко сказати "рядок" програмісту Java, і вони дізнаються, що частина "символів" неявна: використання Маккарті не демонструє цієї функції. Давайте спробуємо відсунутись до 1950-х років, щоб побачити, чи МакКарті грав у безпеку, чи термін справді тоді не існував. LISP, мабуть, не дуже допоможе тут, оскільки він заснований на математичному обчисленні, тому рядкові функції Маккарті, можливо, були першим застосуванням ідеї до обробці рядків.

Важливою системою обробки струнних шістдесятників була SNOBOL 1964 року , струнна мова маніпуляції . Це цитує документ Маккарті вище, але також обговорює COMIT і SCL. Робота, яку вони цитують у SCL, не публікується: нещасна тупик.

COMIT легше простежити. Мистецтво комп’ютерного програмування (Том 1, третє видання, с.461) говорить нам, що В.Г. Інгве написав про це статтю CACM 1963 року. Але я шукаю якнайшвидшого використання «рядка», тому буду робити пошук автора за більш ранніми публікаціями.

Перше, що я можу знайти, - Мова програмування для механічного перекладу з липня 1958 р. Це містить лише одне використання слова "рядок":

Кожен безперервний рядок літер між розділовими знаками чи пробілами шукається в словнику.

Знову ж таки, це використання схоже на Маккарті: це не є свідченням того, що "струна" використовується у сучасному розумінні. Детально дивлячись на папір, ми бачимо, що структура даних - це "лінія" на картці (що дозволяє продовжувати довші "рядки").

Гаразд, ми продовжимо історію COMIT і подивимося, що ми можемо отримати. Перша корисна посилання - це система COMIT для механічного перекладу з матеріалів конференції в червні 1959 року.

Якщо ми хочемо замінити D SIN (F) на COS (F) D (F), де F необмежений і може бути будь-яка довільна послідовність складових, ми використовуємо позначення $ для позначення цього рядка.

Це здається більш схожим на те, як ми його використовуємо сьогодні: "рядок" стоїть окремо і як бонус має впізнаваний спеціальний символ: знак долара все ще використовується в деяких BASIC ароматах для позначення змінної рядка.

Приблизно в цей час слово "рядок" також багато разів з'являється в командній мові для обробки рядків символів Перліса та Сміта з "Праць АСМ '58" та одного разу в системі "Share 709": "Машинна реалізація символічного програмування " Бомом і Сталь.

Пошук на цифровій бібліотеці ACM для "рядка" на початку 1960-х дав 62 результати, серед яких такі заголовки, як "Обробка рядків в ALGOL", "Маніпуляція з рядками новою мовою" та "Техніка зберігання списку для буквено-цифрової інформації". Здається, ідея вже тоді закріпилася.

Я заперечую, що "рядок" в його жаргонному розумінні інформатики як упорядкований список персонажів став загальним за пару років близько 1960 року. До цього такі автори, як Інгве та Маккарті, могли сказати "рядок символів" і бути впевненими, що вони зрозуміла, але не могла використовувати "рядок" як голе слово в тому сенсі, яке воно використовується сьогодні.

Стенограма, ймовірно, була введена в обчислювальну мережу газетою Perlis і Smith. Це не часто цитується, але однією з важливих цитат є синтаксичні та семантичні доповнення до ALGOL Джозефа В. Сміта у квітні 1960 року (у тому ж випуску CACM, що й Маккарті опис LISP). З цього паперу:

Метою даної роботи є запропонувати ALGOL набір синтаксичних та семантичних відрізків. Запропоновані розширення призначені для полегшення опису "рядкових" маніпуляцій на цій мові; вони не є всеосяжною мовою для маніпулювання символом.

Для мене це є свідченням "рядкового", що означає тип даних для символічних обчислень, що підтверджується в академічній лексиці, і що важливо вводиться до інструментів, що використовуються для комерційних обчислень.

Між іншим, мови програмування: історія та майбутнє Жана Саммета (1972) говорить про те, що COMIT і SNOBOL були родоначальниками струнних маніпуляцій, тому я досить впевнений, що попередніх прикладів не буде.


2
Ого. Велика археологія там.
sclv

4
Це нагадує мені процес, який перетворив "поїзд вагонів", де поїзд використовувався як поїзд весільної сукні, просто "поїзд" як вид транспорту. Перехід від "рядка символів" до просто "рядка" є ключовим
Кейт Грегорі

2
ОРЕ вже зробили цю роботу. Запис для рядка (paywall, але члени бібліотеки Великобританії, ймовірно, можуть отримати доступ) має "1954 Jrnl. Доц. що, як мені здається, саме сучасне використання.
AakashM

1
@AakashM дякую за це посилання, їх результат у 1954 році відповідає іншим результатам, знайденим у 1950-х роках. Слово "рядок" використовується лише у сенсі "рядок символів", коли його значення в цьому сенсі пояснено . Лише в 1960 році автори можуть використовувати "рядок" без пояснень, і це стало терміном жаргону з більш конкретним значенням, яке використовується в питанні.

1
@AakashM Класи OED, які в 1954 р . Знаходяться під математикою тощо. Послідовність символів або мовних елементів у визначеному порядку з першим прикладом із книги символічної логіки 1932 року . У них є окремий запис для обчислювальної техніки. Лінійна послідовність записів чи даних , я додав перший приклад 1956 року до своєї відповіді .
Гюго

14

Не повна відповідь, але використання рядка для позначення "ряду об'єктів, розташованих у рядку", було вже в кінці 1400-х років. Джерело

Це по суті те саме використання.


5

Найперша згадка , я міг би знайти в обчисленні з березня 1963 року «s МЕТЕОР: шепелявість перекладач для струнних Transformations Даніель Г. Боброва в AI Labs Массачусетського технологічного інституту.

Оксфордський словник англійської мови має більш ранні обчислення прикладу з +1956 випуску журналу Асоціації обчислювальної техніки :

Області відкладаються для обертання рядків контрольних полів вперед і назад до отримання повністю відсортованої послідовності.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.