Тож очевидно, що рядок речей - це послідовність речей, і тому послідовність символів / байтів / тощо. може також називатися рядком. Але хто перший назвав їх струнами? І коли? І в якому контексті таке, що воно застрягло? Я завжди цікавився цим.
Тож очевидно, що рядок речей - це послідовність речей, і тому послідовність символів / байтів / тощо. може також називатися рядком. Але хто перший назвав їх струнами? І коли? І в якому контексті таке, що воно застрягло? Я завжди цікавився цим.
Відповіді:
Чи можемо ми отримати справжнє цитування до посилання Гюго 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 були родоначальниками струнних маніпуляцій, тому я досить впевнений, що попередніх прикладів не буде.
Не повна відповідь, але використання рядка для позначення "ряду об'єктів, розташованих у рядку", було вже в кінці 1400-х років. Джерело
Це по суті те саме використання.
Найперша згадка , я міг би знайти в обчисленні з березня 1963 року «s МЕТЕОР: шепелявість перекладач для струнних Transformations Даніель Г. Боброва в AI Labs Массачусетського технологічного інституту.
Оксфордський словник англійської мови має більш ранні обчислення прикладу з +1956 випуску журналу Асоціації обчислювальної техніки :
Області відкладаються для обертання рядків контрольних полів вперед і назад до отримання повністю відсортованої послідовності.