Этимология «Струны»


58

Таким образом, очевидно, что строка вещей - это последовательность вещей, и поэтому последовательность символов / байтов / и т. Д. с тем же успехом можно назвать строкой. Но кто первым назвал их струнами? И когда? И в каком контексте такой, что он застрял? Я всегда задавался вопросом об этом.


10
уже спрашивал о stackoverflow
Alb

1
@ Прошу прощения, не понял, что это была конвенция. Имеет смысл.
Alb

1
@ Без проблем. Для справки ваших и других людей (этот вопрос был помечен как дубликат), вопрос, существующий в переполнении стека, не влияет на статус этого вопроса, но, безусловно, полезно комментировать и записывать другие вопросы в сети. это могло бы помочь ответить на это.

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

1
Обратите внимание, что хотя я и проголосовал за закрытие, я думаю, что мы должны держать этот вопрос в качестве указателя. Ответы на этот вопрос гораздо более полны и полны, чем ответы на любые другие подобные вопросы на Programmers.SE или на Stack Overflow. Это также интересный вопрос, который объективно отвечает.

Ответы:


47

Можем ли мы получить реальную цитату до ссылки Хьюго в 1963 году? Да. Джон Маккарти использовал слово «строка» в рекурсивных функциях символических выражений и их вычислении на машине, часть I , с апреля 1960 года.

Для атомарных символов мы будем использовать строки заглавных латинских букв и цифр ...

но более полезно для этого вопроса, ссылка на строку как тип данных:

Любая строка допустимых символов [является] L-выражением.

Это не хороший пример. Говоря «строка символов», Маккарти не использует «строку» в том смысле, в каком программисты понимают это сегодня. Вы можете легко сказать «строку» программисту на Java, и они будут знать, что часть «символов» неявна: использование Маккарти не демонстрирует эту функцию. Давайте попытаемся вернуться к 1950-м годам, чтобы увидеть, был ли Маккарти в безопасности, или тогда термин действительно не существовал. LISP, вероятно, не сильно поможет здесь, поскольку он основан на математическом исчислении, поэтому строковые функции Маккарти, возможно, были первым применением этой идеи к обработке строк.

Важной системой обработки строк 1960-х годов был SNOBOL 1964 года , язык манипулирования строками . Это цитирует статью Маккарти выше, но также обсуждает COMIT и SCL. Работа, которую они цитируют в SCL, неопубликована: печальный тупик.

COMIT легче отследить. Искусство компьютерного программирования (Том 1, третье издание, стр. 461) говорит нам, что В. Х. Ингве написал об этом статью CACM 1963 года. Но я ищу самое раннее использование «строки», поэтому я сделаю поиск автора для более ранних публикаций.

Первое, что я могу найти - это язык программирования для механического перевода , с июля 1958 года. Он содержит только одно использование слова «строка»:

Каждая непрерывная цепочка букв между знаками препинания или пробелами ищется в словаре.

Опять же, это использование похоже на Маккарти: это не доказательство того, что «строка» используется в ее нынешнем смысле. Рассматривая статью подробно, мы видим, что структура данных - это «линия» на карте (с учетом продолжения для более длинных «линий»).

Хорошо, мы двинемся вперед в истории COMIT и посмотрим, что мы можем получить. Первое полезное упоминание о системе механического перевода КОМИТ из материалов конференции, состоявшейся в июне 1959 года.

Если мы хотим заменить D SIN (F) на COS (F) D (F), где F неограниченно и может быть любой произвольной последовательностью составляющих, мы используем обозначение $ для обозначения этой строки.

Это кажется более схожим с тем, как мы используем его сегодня: «строка» стоит отдельно и в качестве бонуса имеет узнаваемый специальный символ: знак доллара по-прежнему используется в некоторых вариантах BASIC для обозначения строковой переменной.

Примерно в это же время слово «строка» также много раз встречается в языке команд A для обработки строк символов Перлисом и Смитом из материалов ACM '58 и один раз в системе Share 709: машинная реализация символьного программирования Бема и Сталь.

Поиск в цифровой библиотеке ACM по «строке» в начале 1960-х годов дает 62 результата, включая такие заголовки, как «Обработка строк в ALGOL», «Манипулирование строками на новом языке» и «Техника хранения в виде списка для буквенно-цифровой информации». Кажется, что идея укоренилась к тому времени.

Я бы сказал, что термин «строка» в его жаргонизме как упорядоченный список символов стал обычным явлением за пару лет, примерно в 1960 году. До этого такие авторы, как Ингве и МакКарти, могли сказать «строка символов» и быть уверенными, что они были понял, но не смог использовать «строку» как голое слово в том смысле, в каком оно используется сегодня.

Сокращение было, вероятно, введено в основной поток вычислений в статье Перлиса и Смита. Это не было широко цитировано, но одним важным цитированием являются синтаксические и семантические дополнения к Алголу Джозефа В. Смита в апреле 1960 года (в том же выпуске CACM, что и описание Маккарти для LISP). Из этой статьи:

Цель этой статьи - предложить набор синтаксических и семантических дополнений к Алголу. Предложенные расширения предназначены для облегчения описания манипуляций со «строками» на этом языке; они не составляют всеобъемлющего языка для манипулирования символами.

Для меня это является доказательством того, что «строка» означает тип данных для символьных вычислений, подтвержденный в академической лексике и важный введенный в инструменты, используемые для коммерческих вычислений.

Кстати, в « Языках программирования: история и будущее » Жана Саммета (1972) предполагается, что COMIT и SNOBOL были прародителями манипуляции со строками, поэтому я вполне уверен, что более ранних примеров не будет.


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

4
Это напоминает мне процесс, который превратил «поезд из автомобилей», в котором поезд использовался как поезд свадебного платья, в просто «поезд» как вид транспорта. Переход от «строки символов» к просто «строке» является ключевым
Кейт Грегори

2
OED уже сделали эту работу. Запись для строки (paywall, но члены британской библиотеки, вероятно, могут получить к ней доступ) имеет «1954 Jrnl. Assoc. Computing Machinery 1 120/2 Конечная, возможно нулевая, последовательность элементов алфавита называется строкой». который выглядит для меня, чтобы быть точно современным использованием.
AakashM

1
@AakashM спасибо за эту ссылку, их результат 1954 года согласуется с другими результатами, которые я нашел в 1950-х годах. Слово «строка» используется только в смысле «строка символов», когда его значение в этом смысле объяснено . Только в 1960 году авторы могут использовать «строку» без объяснения причин, и это стало жаргонным термином с более конкретным значением, используемым в вопросе.

1
@AakashM OED классы, которые 1954 года по математике, и т. Д. Последовательность символов или лингвистических элементов в определенном порядке , с первым примером из книги 1932 Символическая логика . У них есть отдельная запись для вычислений. Линейная последовательность записей или данных , я добавил первый пример 1956 года к своему ответу .
Хьюго

14

Не полный ответ, но использование строки для обозначения «ряда объектов, расположенных в линию» было уже в конце 1400-х годов. Источник

Это по сути то же самое использование.


5

Самое раннее упоминание, которое я мог найти в вычислительной технике, было в марте 1963 года « METEOR: интерпретатор LISP для строковых преобразований » Дэниела Дж. Боброу в AI Labs MIT.

Оксфордский словарь английского языка имеет ранее вычислительный пример из 1956 выпуска журнала Ассоциации вычислительной техники :

Области откладываются для перемещения строк полей управления вперед и назад, пока не будет получена полностью отсортированная последовательность.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.