Откуда возникли escape-коды строк (\n, \t)?

Просто интересно... так как они все еще существуют и используются в С# сегодня...

Откуда взялся шаблон использования escape-кодов строки? На каком языке оно впервые появилось? Какие языки, если таковые имеются, решили проблему по-другому?


person Brandon    schedule 04.11.2009    source источник
comment
Спасибо, Google: bobbemer.com/ESCAPE.HTM   -  person Michael Todd    schedule 04.11.2009
comment
Речь идет о символе ASCII ESC и основанных на нем последовательностях. На самом деле речь не идет об идее использования вводного символа ('\') в литеральной строке, чтобы можно было вставлять другие непечатаемые символы ASCII.   -  person T.E.D.    schedule 04.11.2009
comment
Вот почему это был комментарий, а не ответ....   -  person Michael Todd    schedule 04.11.2009


Ответы (1)


Я подозреваю, что эти escape-коды были созданы на B, языке программирования высокого уровня для операционной системы Honeywell 6000 GCOS. Этот язык был разработан в Bell Labs на основе британского языка BCPL. Поскольку BCPL был довольно многословным, разработчики B упростили синтаксис и добавили такие вещи, как фигурные скобки, вместо BEGIN и END. Отсюда и произошло название B, потому что это была сокращенная форма BCPL.

Позже некоторые люди в Bell Labs создали язык, который стал преемником B, в основном за счет добавления типизации и стандартной библиотеки ввода-вывода. Поскольку это был преемник B, они выбрали следующую букву в имени BCPL.

Я не припоминаю, чтобы видел обратную косую черту перед B, и, поскольку C и UNIX унаследовали ее от B, я думаю, что B является источником этой записи, или, точнее, Bell Labs была источником. Вполне возможно, что это обозначение использовалось в другом программном обеспечении Bell Labs до B, поскольку они были плодовитым производителем программного обеспечения, большая часть которого бесплатно распространялась среди университетов, таких как тот, в котором я учился в середине 1970-х годов.

Между прочим, идея escape-последовательности существовала задолго до этого, восходя к коду Бодо 19-го века, который представлял собой 5-битный двоичный код фиксированной длины, предназначенный для замены кода Морзе переменной длины. У Бодо были коды SI (Shift In) и SO (Shift Out), которые переводили буквы в их заглавные вариации, как клавиша Shift на пишущей машинке.

person Michael Dillon    schedule 04.11.2009
comment
Обозначение обратной косой черты - это разработка C, B использовал звездочку ('* n'). cm.bell-labs.com/cm/cs/who/ дмр/бтут.html - person ; 16.11.2009
comment
Э-э, в BCPL не было begin или end. По памяти это были $( и $). Я также не помню, чтобы он был особенно многословным (если только вы не говорите о CPL, на которой он был основан). - person paxdiablo; 06.01.2011
comment
Эскейп-последовательности с обратной косой чертой начинались с C. B использовала escape-последовательности со звездочкой. - person Mr.DeleteMyMessages; 28.10.2019