stringtranslate.com

обратная косая черта

Обратная косая черта \ — это знак, используемый в основном в вычислительной технике и математике . Это зеркальное отражение обычной косой черты / . Это сравнительно недавний знак, впервые задокументированный в 1930-х годах. Иногда его называют hack , Whack , escape (из C / UNIX ), обратная косая черта , slosh , downwhack , backslant , backwhack , bash , обратный наклон , обратный солидус и перевернутая косая черта . [1] [2]

История

Клавиатура Teletype Wheatstone Perforator 1930-х годов с обратной косой чертой в конце третьего ряда.
Раскладка клавиатуры Teletype ASR-33 с набором символов ASCII, до 14 июня 1966 г., с обратной косой чертой при нажатии клавиши Shift+L.

По состоянию на ноябрь 2022 года попытки определить происхождение этого персонажа или его цель до 1960-х годов не увенчались успехом. Самая ранняя известная ссылка, найденная на сегодняшний день, - это руководство по техническому обслуживанию от Teletype Corporation 1937 года с фотографией, показывающей клавиатуру ее перфоратора клавиатуры Kleinschmidt WPE-3, использующую систему Уитстона . [3] [4] Этот символ назывался «диагональным ключом», [5] и ему был присвоен (нестандартный) код Морзе  ▄▄▄ ▄ ▄ ▄▄▄  . [6] [а]

В июне 1960 года IBM опубликовала «Стандарт расширенного набора символов», который включает символ по адресу 0x19. [4] В сентябре 1961 года Боб Бемер (IBM) предложил комитету по стандартизации X3.2 сделать обратную косую черту частью предложенного стандарта, описав обратную косую черту как «оператор обратного деления» и сославшись на ее предыдущее использование компанией Teletype в телекоммуникациях [. . В частности, по его словам, \ был необходим для того, чтобы логические операторы АЛГОЛА ( логическая конъюнкция ) и ( логическая дизъюнкция ) могли быть составлены с использованием /\ и \/ соответственно. Комитет принял эти изменения в проект американского стандарта (впоследствии названного ASCII ) на своем заседании в ноябре 1961 года. [4]]\

Эти операторы использовались для min и max в ранних версиях языка программирования C, поставляемых с Unix V6 [7] и V7. [8]

Применение

Языки программирования

Во многих языках программирования , таких как C , Perl , PHP , Python , языках сценариев Unix , а также во многих форматах файлов, таких как JSON , обратная косая черта используется в качестве escape-символа , чтобы указать, что символ, следующий за ним, должен обрабатываться особым образом (если он будет в противном случае к нему следует относиться буквально) или буквально (если в противном случае к нему следует относиться особым образом). Например, внутри строкового литерала C последовательность \nсоздает байт новой строки вместо 'n', и последовательность \"создает фактическую двойную кавычку, а не специальное значение двойной кавычки, завершающей строку. Фактическая обратная косая черта создается двойной обратной косой чертой \\.

Языки регулярных выражений использовали его таким же образом, заменяя последующие литеральные символы метасимволами и наоборот. Например, \||b ищет либо '|' или «b», первая полоса экранируется и ищется, вторая не экранируется и действует как «или».

За пределами строк в кавычках единственное распространенное использование обратной косой черты — это игнорирование («экранирование») новой строки сразу после нее. В этом контексте ее можно назвать «продолжающейся строкой» [9] , поскольку текущая строка переходит в следующую. Некоторые программы заменяют обратную косую черту+новую строку пробелом. [10]

Для поддержки компьютеров , в которых отсутствовала обратная косая черта, был добавлен триграф C ??/ , эквивалентный обратной косой черте. Поскольку при этом можно избежать следующего символа, который сам по себе может быть ?, основное современное использование может быть для обфускации кода . Поддержка триграфов в C++ была удалена в C++17 , а поддержку их в C планируется удалить в C23 .

В Visual Basic (и некоторых других диалектах BASIC ) обратная косая черта используется в качестве символа оператора для обозначения целочисленного деления . [11] Это округление в сторону нуля.

Язык программирования АЛГОЛ 68 использует «\» в качестве символа десятичной экспоненты . В АЛГОЛе 68 есть выбор из 4 символов десятичной экспоненты: e, E, \ или 10 . Примеры: 6.0221415e23 , 6.0221415E23 , 6.0221415\23 или 6.0221415 10 23 . [12]

В APL \ называется Expand , когда используется для вставки элементов заполнения в массивы, и Scan , когда используется для сокращения префикса (кумулятивного сгиба).

В PHP версии 5.3 и выше обратная косая черта используется для обозначения пространства имен . [13]

В Haskell обратная косая черта используется как для введения специальных символов, так и для введения лямбда-функций (поскольку она является разумным приближением в ASCII греческой буквы лямбда, λ) . [14]

Имена файлов

MS-DOS 2.0, выпущенная в 1983 году, скопировала идею иерархической файловой системы из Unix и поэтому использовала косую черту (прямую) в качестве разделителя каталогов. [15] Возможно, по настоянию IBM, [16] [17] Microsoft добавила обратную косую черту, чтобы разрешить ввод путей в командной строке интерпретатора, сохраняя при этом совместимость с MS-DOS 1.0 (в которой / был командной строкой). Индикатор опции. Ввод « DIR/W » давал «широкую» опцию команде « DIR », поэтому требовался какой-то другой метод, если кто-то действительно хотел запустить программу под названием W внутри каталога под названием DIR ). За исключением COMMAND.COM , все остальные части операционной системы принимают оба символа в пути , но соглашение Microsoft по-прежнему использует обратную косую черту, а API , возвращающие пути, используют обратную косую черту. [18] В некоторых версиях символ опции можно изменить с / на - с помощью SWITCHAR , что позволяет COMMAND.COM сохранять / в имени команды.

Семейство операционных систем Microsoft Windows унаследовало поведение MS-DOS и поэтому по-прежнему поддерживает любой символ, но отдельные программы и подсистемы Windows могут ошибочно принимать только обратную косую черту в качестве разделителя пути или могут неправильно интерпретировать косую черту, если она есть. используется как таковой. Некоторые программы принимают косую черту только в том случае, если путь заключен в двойные кавычки . [19] Неспособность функций безопасности Microsoft распознавать косые черты в неожиданном направлении в локальных и интернет-путях, в то время как другие части операционной системы все еще действуют на них, привела к серьезным нарушениям в безопасности. Доступ к ресурсам, которые не должны быть доступны, осуществлялся по путям с использованием определенных сочетаний, например http://example.net/secure\private.aspx . [20] [21]

Текстовая разметка

Обратная косая черта используется в системе набора текста TeX и в файлах RTF для начала тегов разметки.

В USFM [ 22] обратная косая черта используется для обозначения функций формата для редактирования переводов Библии .

В обозначениях каретки представляет ^\управляющий символ 0x1C, разделитель файлов . [23] Это полностью совпадение и не имеет ничего общего с его использованием в путях к файлам.

Математика

Для обозначения установленной разницы используется символ, похожий на обратную косую черту . [24]

Обратная косая черта также иногда используется для обозначения правого смежного класса. [25]

Особенно при описании компьютерных алгоритмов принято определять обратную косую черту так, чтобы a \ b эквивалентно a / b . [ нужна цитата ] Это целочисленное деление, которое округляется в меньшую сторону, а не в сторону нуля. В Wolfram Mathematica обратная косая черта используется для целочисленного деления. [26]

В MATLAB и GNU Octave обратная косая черта используется для деления матрицы слева , а косая черта (прямая) — для деления матрицы справа. [27]

Путаница с ¥ и другими символами

В японских кодировках ISO 646-JP (7-битный код на основе ASCII ), JIS X 0201 (8-битный код) и Shift JIS (многобайтовая кодировка, 8-битная для ASCII), код точка 0x5C, которая будет использоваться для обратной косой черты в ASCII, вместо этого отображается как знак иены ¥ . Из-за широкого использования кодовой точки 005C для обозначения знака иены даже сегодня некоторые шрифты, такие как MS Mincho, отображают символ обратной косой черты как ¥, поэтому символы в кодовых точках Unicode 00A5 (¥) и 005C (\) оба отображаются как ¥ , когда выбраны эти шрифты. Компьютерные программы в этих средах по-прежнему воспринимают 005C как обратную косую черту, но отображают ее как знак иены, что вызывает путаницу, особенно в именах файлов MS-DOS. [28]

В некоторых других версиях ISO 646 обратная косая черта также заменяется другими символами, включая ₩ (корейский), Ö (немецкий, шведский), Ø (датский, норвежский), ç (французский) и Ñ (испанский), что приводит к аналогичным проблемам, хотя и с меньшими затратами. длительное воздействие по сравнению со знаком иены.

В 1991 году RFC 1345 предложил //уникальную двухсимвольную мнемонику , которую можно было бы использовать в интернет-стандартах как «практический способ идентификации [этого] символа без ссылки на кодированный набор символов и его код в [этом] кодированном наборе символов». . [29] Следовательно, этот стиль можно увидеть в ранних документах Internet Engineering Task Force .

Примечания

  1. ^ Это обратный код косой черты (   ▄▄▄ ▄ ▄ ▄▄▄ ▄  ).

Рекомендации

  1. ^ Словарь Macquarie (3-е издание)
  2. ^ Раймонд, Эрик С. «ASCII». Файл жаргона . Архивировано из оригинала 18 января 2019 г. Проверено 28 июля 2007 г.
  3. ^ Бюллетень 125, выпуск 2: Описание и регулировка перфоратора Teletype Wheatstone (PDF) . Телетайп Корпорация. Май 1938 г. [август 1937 г.]. п. ii. Архивировано (PDF) из оригинала 12 февраля 2021 г. Получено 15 марта 2021 г. - через navy-radio.com.
  4. ^ abc Фишер, Эрик (20 июня 2000 г.). «Эволюция кодировок символов, 1874–1968» (PDF) . С. 14–15 (табл. 35). Архивировано (PDF) из оригинала 30 ноября 2022 года . Проверено 30 ноября 2022 г.Ссылаясь на Бемера, RW; Бухгольц, В. (1 июня 1960 г.). Стандарт расширенного набора символов (Технический отчет). Лаборатория разработки продукции, Отдел систем обработки данных, Международная корпорация Business Machines. ТР 00.721.Коллекция компьютерных стандартов, Архивный центр, Национальный музей американской истории, Смитсоновский институт, вставка 1.
  5. ^ «Бюллетень 188: Набор автоматических перфораторов телетайпа» (PDF) . Телетайп Корпорация. Август 1945 г. с. 6. Архивировано (PDF) из оригинала 19 декабря 2021 г. Получено 19 декабря 2021 г. - через navy-radio.com.
  6. ^ «Бюллетень 1025, выпуск 3: Детали для перфоратора Teletype Wheatstone» (PDF) . Телетайп Корпорация. Июль 1945 г. с. 9. Архивировано (PDF) из оригинала 19 декабря 2021 г. Получено 19 декабря 2021 г. - через navy-radio.com.
  7. ^ "Исходный код компилятора C" . bitsavers.org . 1975. Архивировано из оригинала 15 августа 2011 г. Проверено 11 октября 2009 г.
  8. ^ "Исходный код компилятора C" . mit.edu . 1979. Архивировано из оригинала 3 декабря 2013 г. Проверено 11 октября 2009 г.
  9. ^ "Препроцессор C" . GNU.org . _ Архивировано из оригинала 3 августа 2021 г. Проверено 4 января 2021 г.
  10. ^ «3.1.1 Разделение длинных строк» ​​. GNU сделать руководство . Архивировано из оригинала 5 июня 2018 года . Проверено 28 июля 2019 г.
  11. ^ «Арифметические операторы в Visual Basic». Возможности языка Visual Basic: операторы и выражения . MSDN. 10 июля 2012 года. Архивировано из оригинала 17 сентября 2012 года . Проверено 7 октября 2012 г.
  12. ^ «Пересмотренный отчет об алгоритмическом языке Алгол 68» . Акта Информатика . 5 (1–3): 1–236. Сентябрь 1973 г. doi : 10.1007/BF00265077. S2CID  2490556. Архивировано из оригинала 26 июля 2020 г. Проверено 10 февраля 2020 г.
  13. ^ «Обзор пространств имен» . php.net . Архивировано из оригинала 16 октября 2012 г. Проверено 10 октября 2012 г.
  14. ^ О'Салливан, Стюарт и Герцен, Real World Haskell , гл. 4: анонимные (лямбда) функции, стр.99
  15. ^ «Почему путь DOS представляет собой символ «\"?». Блоги.msdn.com. 24 июня 2005 г. Архивировано из оригинала 19 ноября 2022 г. Проверено 16 июня 2013 г.
  16. Некасек, Михал (24 мая 2019 г.). «Почему Windows действительно использует обратную косую черту в качестве разделителя пути?». Музей OS/2 . Архивировано из оригинала 24 мая 2019 года . Проверено 28 мая 2019 г.
  17. ^ Ларсон, Крис; Иммервар, Дон (1983), Исходный код MS-DOS v1.25 и v2.0, README.txt, Microsoft, заархивировано из оригинала 21 ноября 2022 г. , получено 21 ноября 2022 г. Руководство пользователя содержит некоторые существенные ошибки. Большинство из них связано с изменениями, внесенными в последнюю минуту для достижения большей степени совместимости с реализацией MS-DOS от IBM (PC DOS). Сюда входит использование «\» вместо «/» в качестве разделителя пути и «/» вместо «-» в качестве символа переключения. Для транспортировки пакетных файлов между компьютерами Microsoft рекомендует использовать на рынке США символы «\» и «/» соответственно. [...] Мы приносим извинения за любые неудобства, которые эти изменения могли причинить вашим сотрудникам технических изданий.
  18. ^ "Метод Path.GetFullPath" . Библиотека классов .NET Framework . Майкрософт. Архивировано из оригинала 21 декабря 2008 года . Проверено 2 января 2009 г.
  19. ^ «Когда Windows начала принимать косую черту в качестве разделителя путей?». Байтс.com. Архивировано из оригинала 6 февраля 2009 года . Проверено 2 января 2009 г.
  20. ^ Каплан, Симона (2004). «Microsoft обнаруживает ошибку в ASP.NET». DevSource, спонсируемый Microsoft . Ziff Davis Enterprise Holdings Inc. Архивировано из оригинала 21 января 2013 г. Проверено 14 июня 2009 г.
  21. ^ Бернетт, Марк (2004). «Глубокие дыры в безопасности». БезопасностьФокус. Архивировано из оригинала 2 февраля 2021 г. Проверено 14 июня 2009 г.
  22. ^ «USFM - Маркеры единого стандартного формата» . Сайт paratext.org . 18 апреля 2017 г. Архивировано из оригинала 13 августа 2020 г. . Проверено 30 июня 2013 г.
  23. ^ "Набор управляющих символов C0, 1987" . pd.infn.it. _ Архивировано из оригинала 06 сентября 2019 г. Проверено 14 марта 2021 г.
  24. ^ «Количества и единицы - Часть 2: Математические знаки и символы, используемые в естественных науках и технологиях». ИСО 80000-2:2009 . Международная Организация Стандартизации. 15 апреля 2008 г. Архивировано из оригинала 26 марта 2014 г. Проверено 7 октября 2012 г.
  25. ^ «Определение: смежное пространство» . ДоказательствоВики. Архивировано из оригинала 26 февраля 2021 года . Проверено 1 февраля 2017 г.
  26. ^ «Целое деление». mathworld.wolfram.com . Архивировано из оригинала 21 февраля 2020 г. Проверено 10 марта 2020 г.
  27. ^ Итон, Джон В.; Дэвид Бейтман; Сорен Хауберг (февраль 2011 г.). «GNU Octave: интерактивный язык высокого уровня для числовых вычислений» (PDF) . Фонд свободного программного обеспечения. п. 145. Архивировано (PDF) из оригинала 24 октября 2012 года . Проверено 7 октября 2012 г.
  28. ^ «Когда обратная косая черта не является обратной косой чертой?». Блоги.msdn.com. Архивировано из оригинала 23 марта 2016 г. Проверено 16 июня 2013 г.
  29. ^ Симонсен, Келд (26 декабря 1991 г.). «RFC 1345». Tools.ietf.org. Архивировано из оригинала 13 июня 2016 г. Проверено 16 июня 2013 г.

Внешние ссылки