Обратной косой черты \ является типографской маркой , используемой главным образом в вычислительных и является зеркальным отражением общего слэш / . Это иногда называют обходное , сильный удар , побег (от C / UNIX ), обратный слэш , выплескивание , downwhack , backslant , backwhack , удар , обратный уклон , и обращенно запятая . [1] [2] В Unicode и ASCIIон закодирован как U + 005C \ REVERSE SOLIDUS (92 в десятичной системе ).
\ | |
---|---|
Обратная косая черта | |
В Юникоде | U + 005C \ REVERSE SOLIDUS (HTML \ · &bsol ) |
⧵ ⧹ \ Оператор обратного солидуса Большой обратный солидус Обратный солидус полной ширины |
История
По состоянию на май 2021 г.[Обновить], попытки определить происхождение этого персонажа или его цель до 1960-х годов не увенчались успехом. Самая ранняя известная ссылка, найденная на сегодняшний день, - это руководство по техническому обслуживанию от 1937 года от Teletype Corporation с фотографией, показывающей клавиатуру ее перфоратора Уитстона . [3] [4] Назначение ключа еще предстоит выяснить, поскольку символ не имел кодировки кода Морзе и, следовательно, не мог быть передан.
В июне 1960 года IBM опубликовала «Стандарт расширенного набора символов», который включает символ в 0x19. [4] В сентябре 1961, Боб Bemer (IBM) предложил комитету по стандартизации X3.2 , что [
, ]
и \
стать частью предлагаемого стандарта, описывая обратную косую черту в качестве «оператора обратного деления» и цитируемой свое предварительное применение по телетайпу в сфере телекоммуникаций . В частности, по его словам, \ был необходим для того, чтобы логические операторы ALGOL ∧
( логическое соединение ) и ∨
( логическое дизъюнкция ) могли быть составлены с использованием / \ и \ / соответственно. Комитет принял эти изменения в проект американского стандарта (впоследствии названный ASCII ) на собрании в ноябре 1961 года. [4]
Эти операторы использовались для min и max в ранних версиях языка программирования C, поставляемого с Unix V6. [5] и V7 [6]
Телетайпный Модель 33 ( «АСР-33») , как представляется, первый коммерчески доступный блок , который имеет характер как стандартный keytop для продажи на некоторых рынках; эта модель имеет полный набор символов ASCII.
Применение
Языки программирования
Во многих языках программирования, таких как C , Perl , PHP , Python , языки сценариев Unix и во многих форматах файлов, таких как JSON , обратная косая черта используется в качестве escape-символа , чтобы указать, что следующий за ним символ должен обрабатываться особым образом (если он в противном случае лечить нормально), или нормально (если иначе лечить особо). Например, внутри строкового литерала C последовательность \n
создает байт новой строки вместо 'n', а последовательность \"
создает фактическую двойную кавычку, а не особое значение двойной кавычки, заканчивающей строку. Фактическая обратная косая черта создается двойной обратной косой чертой \\
.
Языки регулярных выражений использовали это так же, заменяя последующие буквальные символы на метасимволы и наоборот. Например \ || b ищет либо '|' или 'b', первая полоса экранируется и ищется, вторая не экранируется и действует как «или».
За пределами строк в кавычках единственным распространенным использованием обратной косой черты является игнорирование («экранирование») символа новой строки сразу после него. В этом контексте ее можно назвать «продолжающейся строкой» [7], поскольку текущая строка продолжается в следующую. Некоторые программы заменяют обратную косую черту + новую строку пробелом. [8]
Для поддержки компьютеров , на которых отсутствует обратная косая черта, был добавлен триграф C ??/
, который эквивалентен обратной косой черте. Поскольку это может экранировать следующий символ, который сам может быть a ?
, основное современное использование может заключаться в обфускации кода . Поддержка триграфов была удалена в C ++ 17 .
В Visual BASIC (и некоторых других диалектах BASIC ) обратная косая черта используется как символ оператора для обозначения целочисленного деления . [9] Это округляется до нуля.
В языке программирования ALGOL 68 в качестве десятичного экспоненциального символа используется "\" . В АЛГОЛе 68 есть выбор из 4 десятичных знаков экспоненты: e, E, \ или 10 . Примеры: 6.0221415e23 , 6.0221415E23 , 6.0221415 \ 23 или 6.0221415 10 23 . [10]
В APL\ называется Expand, когда используется для вставки элементов заливки в массивы, и Scan, когда используется для уменьшения префикса (кумулятивное сворачивание).
В PHP версии 5.3 и выше обратная косая черта используется для обозначения пространства имен . [11]
В Haskell обратная косая черта используется как для введения специальных символов, так и для введения лямбда-функций (поскольку это разумное приближение в ASCII греческой буквы лямбда, λ). [12]
Имена файлов
MS-DOS 2.0, выпущенная в 1983 году, скопировала иерархическую файловую систему из Unix и, таким образом, использовала (прямую) косую черту [13], но (возможно, по настоянию IBM [14] ) добавила обратную косую черту, позволяющую вводить пути в команде приглашение интерпретатора строки при сохранении совместимости с MS-DOS 1.0, где косая черта была указателем параметра командной строки (ввод " DIR / W "предоставил" широкий "вариант" DIR ", поэтому потребовался другой метод, если вы действительно хотели запустить программу с именем W внутри каталога с именем DIR ). За исключением COMMAND.COM , все другие части операционной системы принимают оба символа в пути , но соглашение Microsoft по-прежнему использует обратную косую черту, а API-интерфейсы, которые возвращают пути, используют обратную косую черту. [15] В некоторых версиях символ опции может быть изменен с / к - через SWITCHAR , что позволяет COMMAND.COM сохранять / в имени команды.
Microsoft Windows семейства операционных систем наследуется поведение MS-DOS и так до сих пор поддерживает либо характер - но отдельные программы для Windows и подсистемы могут ошибочно, принимают только обратную косую черту в качестве разделителя пути, или могут извратить косую черту , если это используется как таковой. Некоторые программы принимают только косую черту, если путь заключен в двойные кавычки . [16] Неспособность функций безопасности Microsoft распознавать косые черты неожиданного направления на локальных путях и путях Интернета, в то время как другие части операционной системы все еще действуют на них, привела к ряду серьезных недостатков в безопасности. Ресурсы, которые не должны быть доступны, были доступны по путям с использованием определенных миксов, таких как http://example.net/secure\private.aspx . [17] [18]
Разметка текста
Обратная косая черта используется в системе набора текста TeX и в файлах RTF для начала тегов разметки.
В USFM , [19] обратный косая черта используются для функций форматирования метки для редактирования переводов Библии .
Коды управления
В каретки нотации , ^\
приравниваются к 0x1C, файловый разделитель . [20] Эта система технически устарела.
Математика
Символ обратной косой черты используется для обозначения установленной разницы . [21]
Обратная косая черта также иногда используется для обозначения правого смежного класса . [22]
Особенно при описании компьютерных алгоритмов обычно определяют обратную косую черту так, чтобы a \ b было эквивалентно ⌊ a / b ⌋ . [ необходима цитата ] Это целочисленное деление, которое округляется в меньшую сторону, а не до нуля. В Wolfram Mathematica обратная косая черта используется таким образом для целочисленного деления. [23]
В MATLAB и GNU Octave обратная косая черта используется для левого деления матрицы , а (прямая) косая черта - для правого деления матрицы. [24]
Путаница с ¥ и другими символами
В японских кодировках ISO 646-JP (7-битный код на основе ASCII ), JIS X 0201 (8-битный код) и Shift JIS (многобайтовая кодировка, которая является 8-битной для ASCII) код точка 0x5C, которая будет использоваться для обратной косой черты в ASCII, вместо этого отображается как знак йены ¥ . Из-за широкого использования кодовой точки 005C для представления знака иены даже сегодня некоторые шрифты, такие как MS Mincho, отображают символ обратной косой черты как ¥, поэтому символы в кодовых точках Unicode 00A5 (¥) и 005C (\) отображаются как ¥ при выборе этих шрифтов. Компьютерные программы по-прежнему обрабатывают 005C как обратную косую черту в этих средах, но отображают его как знак иены, вызывая путаницу, особенно в именах файлов MS-DOS. [25]
Некоторые другие версии ISO 646 также заменяют обратную косую черту другими символами, включая ₩ (корейский), Ö (немецкий, шведский), Ø (датский, норвежский), ç (французский) и Ñ (испанский), что приводит к аналогичным проблемам, но с меньшим длительное воздействие по сравнению со знаком иены.
RFC 1345 предлагает //
уникальную двухсимвольную мнемонику, которая может использоваться в интернет-стандартах как «практический способ идентификации [этого] символа без ссылки на кодированный набор символов и его код в [этом] кодированном наборе символов». [26]
Смотрите также
- Косая черта (или "солидус"), /
Рекомендации
- ^ Словарь Маккуори (3-е издание)
- ^ Раймонд, Эрик С. "ASCII" .
- ^ Бюллетень 125, выпуск 2: Описание и настройки перфоратора Уитстона Teletype (PDF) . Телетайп Корпорация. Май 1938 г. [август 1937 г.]. п. II.
- ^ а б в Эрик Фишер (20 июня 2000 г.). «Эволюция кодов символов, 1874–1968». С. 14 (Таблица 35), 15. CiteSeerX 10.1.1.96.678 .
- ^ Исходный код компилятора C (1975)
- ^ Исходный код компилятора C (1979)
- ^ Препроцессор C
- ^ «3.1.1 Разделение длинных строк» . GNU make manual . Проверено 28 июля 2019 года .
- ^ «Арифметические операторы в Visual Basic» . Возможности языка Visual Basic: операторы и выражения . MSDN . Проверено 7 октября 2012 года .
- ^ «Пересмотренный отчет по алгоритмическому языку Алгола 68» . Acta Informatica . 5 (1–3): 1–236. Сентябрь 1973 г. doi : 10.1007 / BF00265077 . S2CID 2490556 .
- ^ «Обзор пространств имен» .
- ^ О'Салливан, Стюарт и Goerzen, Real World Haskell , гл. 4: анонимные (лямбда) функции, стр.99
- ^ "Почему символ пути DOS" \ "?" . Blogs.msdn.com. 2005-06-24 . Проверено 16 июня 2013 .
- ^ Некасек, Михал (24 мая 2019 г.). «Почему Windows действительно использует обратную косую черту в качестве разделителя пути?» . OS / 2 Музей . Архивировано из оригинального 24 -го мая 2019 года . Проверено 28 мая 2019 .
- ^ «Метод Path.GetFullPath» . Библиотека классов .NET Framework . Microsoft. Архивировано 21 декабря 2008 года . Проверено 2 января 2009 .
- ^ «Когда Windows начала принимать косую черту в качестве разделителя пути?» . Bytes.com. Архивировано 6 февраля 2009 года . Проверено 2 января 2009 .
- ^ Каплан, Симона (2004). «Microsoft исследует изъян в ASP.NET» . DevSource, спонсируемый Microsoft . Ziff Davis Enterprise Holdings Inc. Архивировано из оригинала на 2013-01-21 . Проверено 14 июня 2009 .
- ^ Бернетт, Марк (2004). «Глубокие дыры в безопасности» . SecurityFocus . Проверено 14 июня 2009 .
- ^ «USFM - маркеры единого стандартного формата» . paratext.org .
- ^ «Набор управляющих символов C0, 1987» .
- ^ «Величины и единицы - Часть 2: Математические знаки и символы для использования в естественных науках и технике» . ISO 80000-2: 2009 . Международная Организация Стандартизации.
- ^ «Определение: Пространство смежного класса» . ProofWiki . Проверено 1 февраля 2017 года .
- ^ «Целочисленное деление» .
- ^ Итон, Джон В .; Дэвид Бейтман; Сорен Хауберг (февраль 2011 г.). «GNU Octave: интерактивный язык высокого уровня для численных вычислений» (PDF) . Фонд свободного программного обеспечения. п. 145 . Проверено 7 октября 2012 года .
- ^ "Когда обратная косая черта не является обратной косой чертой?" . Blogs.msdn.com . Проверено 16 июня 2013 .
- ^ «RFC 1345» . Tools.ietf.org. 1991-12-26 . Проверено 16 июня 2013 .
Внешние ссылки
- Боб Бемер. «Как ASCII получил обратную косую черту» . Архивировано из оригинала на 2013-07-19.
- Определение обратной косой черты от Linux Information Project (LINFO)