Ukośnik wsteczny - Backslash

\
Ukośnik wsteczny
Unicode U+005C \ REVERSE SOLIDUS (HTML \  · \ )
 ⧵   ⧹  ?
Operator odwróconego solidusa Duży odwrócony solidus Solidus odwrotny o pełnej szerokości

Backslash \ to znak literowy stosowany głównie w obliczeniowej i jest lustrzanym odbiciem wspólnego ukośnikiem / . Czasami nazywa się to hack , whack , escape ( z C / UNIX ) , reverse slash , slosh , downwhack , backslant , backwhack , bash , reverse slant i odwrócony virgule . W Unicode i ASCII jest zakodowany w U+005C \ REVERSE SOLIDUS (92 dziesiętne ).

Historia

Układ klawiatury Teletype ASR-33 z zestawem znaków ASCII, sprzed 14 czerwca 1966, z odwrotnym ukośnikiem na shift+L

Od maja 2021 r. starania o ustalenie pochodzenia tej postaci lub jej celu przed latami 60. nie powiodły się. Najwcześniejsze znane odnalezione wzmianki to instrukcja obsługi technicznej firmy Teletype Corporation z 1937 r. ze zdjęciem przedstawiającym klawiaturę jej perforatora Wheatstone . Cel klucza pozostaje do odkrycia, ponieważ symbol nie miał kodowania Morse'a, a zatem nie zostałby przesłany.

W czerwcu 1960 IBM opublikował „Rozszerzony standard zestawu znaków”, który zawiera symbol 0x19. Wrzesień 1961, Bob Bemer (IBM) zaproponowanego komisji normy X3.2 tym [, ]i \stanowić część proponowanej normy opisujące backslash jako „operator odwrotnej podział” i cytowane jej przed użyciem przez dalekopisów w telekomunikacji. W szczególności powiedział, że \ jest potrzebne, aby operatory logiczne ALGOL ( koniunkcja logiczna ) i ( alternatywa logiczna ) mogły być złożone za pomocą odpowiednio /\ i \/ . Komitet przyjął te zmiany do projektu normy amerykańskiej (zwanej później ASCII ) na posiedzeniu w listopadzie 1961 roku.

Operatory te były używane dla min i max we wczesnych wersjach języka programowania C dostarczanych z Unixem V6. i V7

Teletype model 33 ( „ASR-33”) wydaje się być pierwszy komercyjnie dostępny jednostka, która ma charakter jako standardowego keytop do sprzedaży w niektórych krajach; ten model ma pełny zestaw znaków ASCII.

Stosowanie

Języki programowania

W wielu językach programowania, takich jak C , Perl , PHP , Python , języki skryptowe Unix i wielu formatach plików, takich jak JSON , ukośnik odwrotny jest używany jako znak zmiany znaczenia , aby wskazać, że następujący po nim znak powinien być traktowany specjalnie (jeśli inaczej traktowana normalnie) lub normalnie (jeśli byłaby traktowana w inny sposób). Na przykład, wewnątrz literału napisu C sekwencja \ntworzy bajt nowej linii zamiast 'n', a sekwencja \"tworzy rzeczywisty podwójny cudzysłów zamiast specjalnego znaczenia podwójnego cudzysłowu kończącego łańcuch. Właściwy ukośnik odwrotny jest tworzony przez podwójny ukośnik odwrotny \\.

Języki wyrażeń regularnych używały go w ten sam sposób, zamieniając kolejne znaki dosłowne na metaznaki i odwrotnie. Na przykład \||b wyszukuje „|” lub „b”, pierwszy słupek jest pomijany i przeszukiwany, drugi nie jest pomijany i działa jako „lub”.

Poza łańcuchami w cudzysłowie, jedynym powszechnym zastosowaniem odwrotnego ukośnika jest ignorowanie ("uciekanie") znaku nowej linii bezpośrednio po nim. W tym kontekście można ją nazwać „linią ciągłą”, ponieważ bieżąca linia przechodzi w następną. Niektóre programy zastępują ukośnik odwrotny + nowy wiersz spacją.

Aby obsługiwać komputery, które nie miały znaku odwrotnego ukośnika, dodano trigraf C ??/ , który jest odpowiednikiem odwrotnego ukośnika. Ponieważ może to ominąć następny znak, który sam może być a ?, głównym współczesnym zastosowaniem może być zaciemnianie kodu . Obsługa trigrafów została usunięta w C++17 .

W Visual Basic (i niektórych innych dialektach BASICa ) odwrotny ukośnik jest używany jako symbol operatora do wskazania dzielenia liczb całkowitych . To zaokrągla się do zera.

Język programowania ALGOL 68 używa "\" jako symbolu wykładnika dziesiętnego . ALGOL 68 ma do wyboru 4 symbole wykładników dziesiętnych: e, E, \ lub 10 . Przykłady: 6.0221415e23 , 6.0221415E23 , 6.0221415\23 lub 6.0221415 10 23 .

W APL \ nazywa się Rozwiń, gdy jest używany do wstawiania elementów wypełniających do tablic, a Skanuj, gdy jest używany do tworzenia redukcji przedrostka (zgięcie kumulacyjne).

W PHP w wersji 5.3 i nowszych ukośnik odwrotny jest używany do wskazania przestrzeni nazw .

W Haskell ukośnik odwrotny jest używany zarówno do wprowadzania znaków specjalnych, jak i do wprowadzania funkcji lambda (ponieważ jest to rozsądne przybliżenie w ASCII greckiej litery lambda, λ).

Nazwy plików

MS-DOS 2.0, wydany w 1983 r., skopiował hierarchiczny system plików z Uniksa i używał ukośnika (do przodu), ale (być może pod naciskiem IBM) dodał ukośnik odwrotny, aby umożliwić wpisywanie ścieżek w wierszu poleceń interpretera przy zachowaniu kompatybilności z MS-DOS 1.0, gdzie ukośnik był wskaźnikiem opcji wiersza poleceń (wpisanie " DIR/W " dało opcję "wide" w poleceniu " DIR ", więc potrzebna była inna metoda, jeśli faktycznie chciałeś uruchomić program o nazwie W wewnątrz katalogu o nazwie DIR ). Z wyjątkiem COMMAND.COM wszystkie inne części systemu operacyjnego akceptują oba znaki w ścieżce , ale konwencja Microsoft nadal używa ukośnika odwrotnego, a interfejsy API, które zwracają ścieżki, używają ukośników odwrotnych. W niektórych wersjach znak opcji można zmienić z / na - za pomocą SWITCHAR , co pozwala COMMAND.COM zachować / w nazwie polecenia.

Rodzina systemów operacyjnych Microsoft Windows odziedziczyła zachowanie MS-DOS, a więc nadal obsługuje dowolny znak – ale poszczególne programy i podsystemy Windows mogą błędnie akceptować tylko ukośnik odwrotny jako ogranicznik ścieżki lub mogą błędnie interpretować ukośnik, jeśli jest używane jako takie. Niektóre programy akceptują ukośniki tylko wtedy, gdy ścieżka jest umieszczona w cudzysłowach . Niepowodzenie funkcji bezpieczeństwa Microsoftu w rozpoznawaniu nieoczekiwanych ukośników w ścieżkach lokalnych i internetowych, podczas gdy inne części systemu operacyjnego wciąż na nie działają, doprowadziło do poważnych naruszeń bezpieczeństwa. Do zasobów, które nie powinny być dostępne, uzyskano dostęp za pomocą ścieżek przy użyciu określonych miksów, takich jak http://example.net/secure\private.aspx .

Znaczniki tekstowe

Odwrotny ukośnik jest używany w systemie składu tekstu TeX oraz w plikach RTF do rozpoczynania znaczników.

W USFM ukośnik odwrotny służy do oznaczania funkcji formatu do edycji tłumaczeń Biblii .

W notacji karetki , ^\reprezentuje znak kontrolny 0x1c, separator plik . Jest to całkowicie zbieg okoliczności i nie ma nic wspólnego z jego użyciem w ścieżkach plików.

Matematyka

Dla ustawionej różnicy używany jest symbol podobny do odwrotnego ukośnika .

Odwrotny ukośnik jest również czasami używany do oznaczenia właściwej przestrzeni coset .

Zwłaszcza podczas opisywania algorytmów komputerowych często definiuje się ukośnik odwrotny tak, że a \ b jest równoważne a / b . Jest to dzielenie całkowite, które zaokrągla się w dół, a nie w kierunku zera. W Wolfram Mathematica ukośnik odwrotny jest używany w ten sposób do dzielenia liczb całkowitych.

W MATLAB i GNU Octave ukośnik odwrotny jest używany do dzielenia macierzy po lewej stronie , a ukośnik (w przód) do dzielenia macierzy po prawej stronie.

Zamieszanie z ¥ i innymi postaciami

W japońskich kodowaniach ISO 646-JP (kod 7-bitowy oparty na ASCII ), JIS X 0201 (kod 8-bitowy) i Shift JIS (kodowanie wielobajtowe, które jest 8-bitowe dla ASCII), kod punkt 0x5C, który byłby użyty jako odwrotny ukośnik w ASCII, jest zamiast tego renderowany jako znak jena ¥ . Ze względu na szerokie wykorzystanie punktu kodowego 005C do reprezentowania znaku jena, nawet dzisiaj niektóre czcionki, takie jak MS Mincho, renderują znak ukośnika odwrotnego jako ¥, więc znaki w punktach kodowych Unicode 00A5 (¥) i 005C (\) są renderowane jako ¥ po wybraniu tych czcionek. Programy komputerowe nadal traktują 005C jako odwrotny ukośnik w tych środowiskach, ale wyświetlają go jako znak jena, powodując zamieszanie, zwłaszcza w nazwach plików MS-DOS.

Kilka innych wersji ISO 646 również zastępuje ukośnik odwrotny innymi znakami, w tym (koreański), Ö (niemiecki, szwedzki), Ø (duński, norweski), ç (francuski) i Ñ (hiszpański), co prowadzi do podobnych problemów, choć z mniejszą trwały wpływ w porównaniu do znaku jena.

RFC 1345 sugeruje //jako unikalny dwuznakowy mnemonik, który może być używany w standardach internetowych jako „praktyczny sposób identyfikacji [tego] znaku, bez odniesienia do zakodowanego zestawu znaków i jego kodu w [tym] zakodowanym zestawie znaków”.

Zobacz też

Bibliografia

Zewnętrzne linki