История, стоящая за определением «струны» - PullRequest
67 голосов
/ 19 мая 2009

Я никогда не задумывался до недавнего времени, но я не уверен, почему мы называем строки strings. Я программист .NET, но я считаю, что концепция строк существует практически в каждом языке программирования.

Вне программирования я не верю, что слышал слово string, используемое для описания слов или букв. Краткий гугл «Define: string» дает набор определений, которые не имеют ничего общего с концепцией букв, слов или чего-либо такого, что связано с программированием.

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

Может кто-нибудь подсказать, почему мы называем строки strings?

Ответы [ 10 ]

33 голосов
/ 19 мая 2009

Я всегда предполагал, что термин программирования возник из следующего определения слова "строка" (от Merriam-Webster):

(1): ряд вещей, расположенных в виде или как в строке <строка машин> <строка имен>

(2): последовательность похожих элементов (в виде битов, символов или слов)

Поскольку строка в программировании - это просто упорядоченная последовательность символов, упоминание ее как «строки символов» (или просто «строки») кажется наиболее вероятным источником.

29 голосов
/ 19 мая 2009

С это ссылка:

OED 1971 года (стр. 3097) цитирует 1891 В. Словарь на источник в Milwaukee Sentinel от 11 января 1898 года (раздел 3, стр. 1) о том, что это термин композитора. Принтеры вставил бы текст, который у них был генерируется в длинной полосе персонажи. (Предположительно, они были заплатил ногой, а не словом!) Цитата говорит, что это не было необычным для композиторов, чтобы создать более 1500 (символов?) В час.

11 голосов
/ 19 мая 2009

Из поиска в библиографии ACM кажется, что слово string приобрело свое значение в информатике в 1960-х годах. В начале строка представляет собой общий вид последовательности или списка, например, Командный язык для обработки строк символов с 1958 года.

В этой статье явно упоминаются "строки символов" в 1964 году.

К сожалению, я не могу получить доступ к полным текстам, которые находятся за платной стойкой.

8 голосов
/ 22 июня 2011

Я догадывался, что «строка» использовалась математиками задолго до ее принятия в языках программирования. Машины Тьюринга эффективно работают на струнах. Тьюринг, возможно, не использовал этот термин, но он используется повсеместно в учебниках автоматов, начиная с десятилетий.

Самой ранней ссылкой, которую я смог найти, был фрагмент в книгах Google статьи 1944 года "Рекурсивно перечислимые наборы натуральных чисел и проблемы их решения", составленной логиком Эмилем Постом в Бюллетене AMS. К счастью, AMS предоставляет онлайн-архивы полных статей, которые можно бесплатно скачать. Вот ссылка: http://www.ams.org/journals/bull/1944-50-05/S0002-9904-1944-08111-1/S0002-9904-1944-08111-1.pdf

Я думаю, что мало сомнений в том, что он использует «струну» в общепринятом смысле, используемом в информатике. P. 286 "Для рабочих целей мы введите букву b и рассмотрите "строки" из 1 и b, такие как 11b1bb1. Операция над такими строками, как "b1bP производит P1bb1" мы называем нормальную работу. Эта конкретная нормальная операция применимо только к строкам, начинающимся с b1b, а производная строка затем получается из заданной строки, сначала удаляя начальный b1b, а затем добавив 1bb1 в конце. Таким образом, b1bb становится b1bb1. "

6 голосов
/ 19 мая 2009

I подозреваю это потому, что string изначально означало просто последовательность значений данных: «Я просто сошну их вместе» и т. Д. Эти значения не должны быть символами. Одним из очень распространенных случаев использования этого общего понятия была последовательность символов, и это стало общим значением слова.

5 голосов
/ 31 мая 2011

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

Однако определение 15d. в Оксфордском словаре английского языка - это:

Вычисление Линейная последовательность записей или данных.

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

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

Это использование естественно следует из определения 15c.:

Math. и т. Д. Последовательность символов или языковых элементов в определенном порядке.

... и впервые использованный в Кларенс Ирвинг Льюис и Купер Гарольд Лэнгфорд Символическая логика (1932):

Предложения не являются цепочками меток или сериями звуков, кроме случайных.

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

2 голосов
/ 19 мая 2009

Слово изначально использовалось для различения набора значений, для которых не имеет значения конкретный порядок элементов (например, набор случайных выборок измерений), и другого, значение которого могло сохраняться только в том случае, если порядок также сохраняется. Первоначально строка могла представлять собой набор значений любого типа, но, поскольку в эпоху после мэйнфрейма строка символов является наиболее распространенным видом, тот факт, что значения являются символами, стал «значением по умолчанию».

1 голос
/ 26 июля 2014

Строка - это последовательность дискретных объектов (обычно char).

Учитывая это, я, вероятно, рискну предположить, что это может быть связано с метафорой, относящейся к "нитке жемчуга". Каждый шарик в строке представляет собой один символ.

1 голос
/ 07 ноября 2013

В своем выступлении об истории Javascript Дуглас Крокфорд говорит: «Никто не знает» и дает несколько альтернатив: http://www.youtube.com/watch?v=RO1Wnu-xKoY#t=2989

Я нашел отчет, в котором, как утверждается, впервые в истории компьютеров упоминается серия символов в виде «строки». Я думаю, что это в верхнем правом столбце страницы 4 PDF, который пронумерован 47:

http://web.eecs.umich.edu/~bchandra/courses/papers/Naure_Algol60.pdf

0 голосов
/ 19 мая 2009

Это называется строкой, потому что на самом деле это массив элементов типа char.

При этом они "связывают вместе" (или связывают) через этот массив, который превращает их в "строку".

...