2016-06-04 5 views
4

Недавно я пытался найти причины, которые привели к использованию фигурных скобок для блоков (составных операторов) на языке C и других языках same family.Обоснование синтаксиса C для блоков

Думает, что квадратные скобки для массивов или круглых скобок для изменения приоритета оператора, по-видимому, исходят от mathematicalnotation, используемых для этих целей, так что это имеет смысл для меня. Точка с запятой имеет смысл тоже, это означало отделить related sentences with independent clauses, и он делает что-то подобное в C.

Но я не мог найти что-то похожее на фигурные скобки: они используются для sets в математике, и что-то как-то подобное есть их использование в musical notation (Ансамблевые ноты), где они используются для , показывают, что музыка на всех шестнадцатеричных играх должна воспроизводиться одновременно (не совсем то же самое, но я думал, что это ближе, чем их использование в математике для наборов) ,

Кроме того, мне было интересно, является ли C на самом деле первым языком, который представляет этот синтаксис блока или просто популяризировал его?

+1

Может быть так же просто, как '()' и '[]' уже были приняты. Почему мы используем '< >' для шаблонов/дженериков? –

ответ

4

Первый curly brace programming language был в 1966 BCPL, хотя это позволило $( и $) для разделения блоков в дополнение к { и }.

BCPL был основан на CPL, который использовал необычные (для современных программистов) глаза §, чтобы открыть блок и тот же символ с линией, проходящей через него, чтобы закрыть блок. Мартин Ричардс, изобретатель BCPL в "How BCPL evolved from CPL": говорит:

CPL используется символ раздела (§) эквивалентная Алгол-х BEGIN и треугольник сечения с трещинами накладываются слэшем представлять END. BCPL принял $( и $) для этих жетонов, и, как и в случае с CPL, такие секционные кронштейны могут быть маркированы, что позволяет закрыть скобу для закрытия нескольких разделов . К сожалению, это соглашение приведет к довольно неясным ошибкам программирования и поэтому, когда фигурные скобки ({ и }) стали доступны, они используются только в качестве неразмеченной раздела скобки и использования $( и $) унывает.

Кудрявые скобы пришли к C (1972) по B (1969).

+1

Я думаю, что вы догадываетесь. Доступность специальных символов в наборах символов и на клавиатуре была (и по-прежнему иногда) проблемой для портативного программирования. Вот почему '{' и '}' все еще имеют альтернативные кодировки как триграф ('<' and '??>') и орграф ('<%' and '%>'). –

+0

Моя догадка была неправильной, поэтому я ее отредактировал - я нашел ссылку от Мартина Ричардса и заменил мое предположение. –

+0

Спасибо за ссылку «[Как BCPL эволюционировал от CPL] (http://www.cl.cam.ac.uk/~mr10/cpl2bcpl.pdf)», довольно интересно иметь объяснение эволюции от синтаксис/язык другому! – evuez

Смежные вопросы