Многие языки программирования используют синтаксис a[i]
для ссылки на i
ый элемент массива, последовательности или вектора a
- в частности, C и Pascal (с конца 1960-х и начала 1970-х) делают это. С другой стороны, некоторые более ранние языки, такие как Фортран (1950-х годов), не используют это соглашение. Кроме того, я немного изучил математику, и математики используют квадратные скобки для интервалов и индексы для, ну, в общем, подписки на массивы и матрицы (или регулярные скобки, если массив рассматривается как функция от неотрицательных целых чисел).
Итак, мой вопрос: где / как / в каком контексте были разработаны эти квадратные скобки для подписки на массив и кем?
Примечание. Совсем не вопрос этого вопроса об использовании фигурных скобок в C.
Ответы:
Основным языком-предшественником Си и Паскаля был алгол . Самой ранней версией этого был Algol 58, который использовал квадратные скобки для объявлений и ссылок на массивы.
Причина, по которой Алгол использовал квадратные скобки, а не, например, круглые скобки, была трехкратной:
Обратите внимание, что в отличие от C, который использует массивы главным образом для индексирования памяти, Algol позволяет указывать как нижнюю, так и верхнюю границы индекса. Опять же, это соответствовало его более математическим намерениям. Настолько, что Алгол был языком де-факто для псевдокода на протяжении многих лет.
источник
[x]
он использовался для классов эквивалентности, а не для обозначения позиций в векторах или матрицах.Это интересное чтение: https://en.m.wikipedia.org/wiki/Bracket
Ниже приведены мои собственные наблюдения.
Дизайнеры C очень старались принять значение символов и конструкций, так как они использовались в течение сотен лет на обычном письменном языке. При этом им приходилось работать с довольно ограниченным набором символов ASCII. В западном языке больше символов группировки используется в письменном тексте, но они просто не вошли в ASCII.
На обычном языке значение круглых скобок заключается в предоставлении дополнительной информации без прерывания основного сообщения. Это имеет смысл при вызове процедуры: основное сообщение - это действие, которое нужно выполнить, а подинформация - это аргументы.
Фигурные скобки используются для группировки. «Эта коллекция слов принадлежит друг другу, должны быть отделены от остальных». Поэтому имеет смысл использовать их для блоков кода, составных операторов.
Квадратные скобки используются для вставок в текст, которые не были частью оригинала, чтобы уточнить исходный текст и обеспечить контекст. Или указать на упущение с помощью многоточия: [...]. «Она [королева] не была удивлена». В компьютерном программировании имеет смысл использовать скобку для индексации массива, поскольку это своего рода контекст. «Массив? Какой массив? Ну, конкретно этот элемент». Но даже если первоначальное значение не полностью охватывает использование на компьютерном языке, в ASCII осталось не так уж много других опций.
Поэтому я бы сказал, что это комбинация предшествующего уровня техники и того, что было доступно в то время, что привело к использованию квадратных скобок для индексации массивов.
[редактировать из-за комментария Алекса]
Согласно этому источнику, ASCII был введен в 1963 году и получил одобрение правительства в 1968 году. Согласно этой вики, развитие языка Си началось только в 1969 году . Поэтому вполне вероятно, что г-н Ричи при выборе персонажей следил за этим новым широко поддерживаемым стандартом ASCII.
Пожалуйста, посмотрите также другие ответы, которые подтверждают, что Алгол, «мать многих языков», оказал сильное влияние.
источник