Можем ли мы получить реальную цитату до ссылки Хьюго в 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 были прародителями манипуляции со строками, поэтому я вполне уверен, что более ранних примеров не будет.