Обратная косая черта \ — это знак, используемый в основном в вычислительной технике и математике . Это зеркальное отражение обычной косой черты / . Это сравнительно недавний знак, впервые задокументированный в 1930-х годах. Иногда его называют hack , Whack , escape (из C / UNIX ), обратная косая черта , slosh , downwhack , backslant , backwhack , bash , обратный наклон , обратный солидус и перевернутая косая черта . [1] [2]
По состоянию на ноябрь 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 .
Руководство пользователя содержит некоторые существенные ошибки.
Большинство из них связано с изменениями, внесенными в последнюю минуту для достижения большей степени совместимости с реализацией MS-DOS от IBM (PC DOS).
Сюда входит использование «\» вместо «/» в качестве разделителя пути и «/» вместо «-» в качестве символа переключения.
Для транспортировки пакетных файлов между компьютерами Microsoft рекомендует использовать на рынке США символы «\» и «/» соответственно.
[...] Мы приносим извинения за любые неудобства, которые эти изменения могли причинить вашим сотрудникам технических изданий.