Почему для VERTICAL TAB существует escape-последовательность? - PullRequest
7 голосов
/ 10 сентября 2011

Другой вопрос, Что такое вертикальная табуляция? , описывает, для чего изначально использовался символ вертикальной табуляции.

Но почему U+000B VERTICAL TAB считался достаточно важным, чтобы его можно было использовать как escapeпоследовательность ('\v'), во-первых, на С и многих других языках программирования?

См. также: какой-то парень жалуется на это .

Ответы [ 2 ]

9 голосов
/ 08 января 2015

Правильный ответ: TELETYPE

Он не имеет отношения к разделителям.Мои родители работали с большими данными, и многие вещатели и Fortune 500 все еще использовали перфокарты до 80-х годов.Помните, что большинство языков изначально были предназначены для ввода и использования на телетайпе, а не на экране.Принтер был не просто для печати документов, как сегодня. Не было монитора вообще .Распечатка была на дисплее.

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

Забавное видео: https://www.youtube.com/watch?v=qv5b1Xowxdk

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

  • Сверните текст или свою электронную почту на 80столбцы?
    Поскольку перфокарты IBM имели ширину 80 символов.

  • Используете ли вы графику, поддерживающую кодирование снизу вверх, например растровые изображения Windows, или любую графикубиблиотеки с источником в нижнем углу?
    Поскольку машины телетайпа прокручивались снизу вверх.

  • Используете ли вы \ n, чтобы указать новую строкуtext?
    Потому что \ n означает перевод строки, который приходит от пишущих машинок до того, как он использовался в телетайпах.

  • Вы когда-нибудь отправляли сообщение другу, написав в / dev / tty под Linux?
    Поскольку TTY - сокращение от телетайпа.

  • Вы когда-нибудь говорили кому-либо использовать существующую библиотеку вместо изобретения колеса?Вы когда-нибудь использовали библиотеку или фреймворк?
    Потому что именно так старый код висит.Конечно, преимущества перевешивают вред, но библиотеки, построенные поверх библиотек, построенных поверх библиотек, приводят к такой ползучей зависимости, что даже когда исходная библиотека давно исчезла, все, что когда-либо было совместимо с ней, заставляет жить ее соглашения... и вкл ... и вкл ...

Эти условные обозначения телетайпа так прочно укоренились в самой операционной системе IПолностью ожидаю, что так будет всегда, пока кто-то не напишет операционную систему с нуля, и даже тогда я не уверен.Там нет сомнений, почему язык C взял их.Помните, что C появился намного позже LISP, Forth, COBOL, FORTRAN, Pascal и даже BASIC.

PS Использование символа колокольчика в качестве разделителя было бы безумной вещью.Молоть молоть молоть молоть гудок молоть молоть BEEEEEEP молоть чука чука BEEP молоть чука молоть молоть BEEEP.Whizzzz глушит.Измельчить Измельчить BEEP ...

4 голосов
/ 10 сентября 2011

Возможно, что при создании C ожидалось, что символы вертикальной табуляции и колокольчиков должны были быть достаточно полезны в качестве разделителей в коде, который будет переноситься между ASCII и EBCDIC, чтобы код должен был обеспечивать читаемый и переносимый способотмечая их.Хотя можно было бы написать

#define QVTAB "\013"
printf("Field1" QVTAB "Field2");

Я не думаю, что такое использование было законным на самых ранних диалектах языка C. Кроме того, даже если такое использование разрешено, использование специальных макросов для цитируемой версии символов, вероятно, было бысчитается немного некрасивым.Я знаю, что такие вещи оказывались необходимыми в спецификаторах формата printf переносного типа, но это не значит, что это красиво.

Еще одна вещь, которую следует учитывать, это то, что C не был задуман как язык программирования, который люди будут использоватьв ближайшие десятилетия.Он был разработан, чтобы решить некоторые насущные потребности.K & R не заботился бы о том, захотят ли кому-нибудь персонажи VTAB после 1970-х годов;если их непосредственные клиенты могли бы использовать их, это было бы очень веской причиной, чтобы включить их.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...