Slash czy backslash - oto jest pytanie

4 listopada 2021
Jakub Rojek Jakub Rojek
Zdjęcie autorstwa Василь Вовк z Pexels (https://www.pexels.com/pl-pl/zdjecie/kreatywny-znak-biurko-laptop-4405368/)
Kategorie: Podstawy IT

Na blogach, takich jak ten, najczęściej pojawiają się tematy dotyczące różnych sfer IT jako branży i profesjonalizmu - poruszane są zagadnienia zarządzania projektami, tworzenia dobrej architektury i ogólnie czynników poprawiających cały proces wytwarzania oprogramowania. Czasami jednak warto cofnąć się do podstaw i to takich zupełnych podstaw, dotyczących nie tylko programowania, ale także po prostu obsługi komputera. Jako specjaliści czy nauczyciele zawodowi lub akademiccy czasami nie doceniamy tych tematów i uważamy je za oczywiste, ale to właśnie sprawność w operowaniu takimi małymi rzeczami niekiedy stanowią różnicę w wydajności i swobodzie pracy w IT, której brakuje nowicjuszom. Dlatego czasami warto o tym napisać.

Dzisiaj zajmiemy się tym, jak najłatwiej przyswoić sobie różnicę pomiędzy dwoma ukośnikami, jakie widzimy na klawiaturach - slashem (/) i backslashem (\).

Tak, jak pisałem - temat może wydawać się dziwny i dla wielu osób różnica jest intuicyjna, jednak stosowanie odpowiednich ukośników jest niezbędne np. przy tworzeniu skryptów pracujących na plikach. Postawienie złego znaku zwykle nie kończy się tragedią, ale może przyczynić się do zniechęcenia (gdy trzeba poprawiać kod w wielu miejscach) i tym samym niepotrzebnej irytacji oraz straty czasu. Przyjmijmy się zatem dzisiaj najprostszym metodom na zapamiętanie, który łamnik jest którym.

Różnica graficzna

Na początku powiedzmy sobie jedną, fundamentalną rzecz - oba znaki są bardzo podobne, ale różnią się stroną, w którą się nachylają. Slash (/) jest skierowany w prawo, podczas gdy backslash (\) - w lewo. Można wyobrazić sobie człowieka, który niczym Michael Jackson stoi nachylony w daną stronę i skojarzyć to z określonym kierunkiem. Jednak są lepsze sposoby, aby zapamiętać różnicę.

Separator ścieżek w systemie operacyjnym

Nawet niedoświadczeni użytkownicy komputera zdają sobie sprawę, że poruszając się po folderach na dysku, tworzy się złożona z nich ścieżka, pozwalają dotrzeć do konkretnego, nawet najodleglejszego katalogu. Jest ona pod kątem budowy podobna do adresu internetowego (do którego dzisiaj też dojdziemy), tylko dotyczy naszego lokalnego zbioru danych. Poszczególne foldery w ścieżce są oddzielone od siebie właśnie ukośnikami, jednak od systemu zależy, jakimi.

Dla Linuxa i innych systemów unixopodobnych jest to slash. Z kolei dla Windowsa jest to backslash, co ma źródło w decyzji podjętej w dawnych czasach, kiedy ten znak miał pomóc w zachowaniu kompatybilności pomiędzy wczesnymi wersjami DOS-a. W DOS 1.0 slash był wykorzystywany przy komendach, więc DOS 2.0, wprowadzając strukturę katalogów, musiał przyjąć znak "\". I tak zostało do dzisiaj.

Co ciekawe, w PHP nie musimy specjalnie zastanawiać się, którego separatora powinniśmy użyć i jak rozróżnić go przy obsłudze plików na danych systemach operacyjnych. Wystarczy użyć stałej DIRECTORY_SEPARATOR.

Na klawiaturze

Na większości klawiatur (a być może na wszystkich) slash jest niżej - znajduje się zwykle na lewo od prawego shifta. Z kolei backslash jest zawsze wyżej, zazwyczaj nad ENTER-em. W starszych układach klawiszy można też było spotkać ten znak na lewo od ENTER-a, ale to nadal wyżej niż "prawy ukośnik".

Mapa Polski

To moje ulubione rozróżnienie, choć nie mojego autorstwa - koncepcję podał mi jeden z kolegów na studiach informatycznych (którego serdecznie pozdrawiam) i sprawdza się zaskakująco dobrze.

Popatrzmy na slasha i backslasha jeszcze raz i wróćmy do różnicy graficznej pomiędzy nimi - pierwszy jest pochylony w prawo (tzn. góra wskazuje na tę stronę), a drugi w lewo. Spójrzmy teraz na mapę naszego kraju i miasta znajdujące się w prawym oraz lewym górnym rogu. Siłą rzeczy prawy róg zaprowadzi nas do województwa podlaskiego i znanych choćby z map pogodowych Suwałk (aczkolwiek Sejny również pasują). Widzimy, że to miasto rozpoczyna się na literę "S" - zupełnie jak "slash", prawda? Poniżej mapa z Google Maps dla potwierdzenia.

Suwałki jako odpowiednik slasha na mapie Polski

Idąc tym tropem, powinniśmy szukać w lewym górnym rogu Polski (czyli w województwie zachodniopomorskim) miasta na literę "B", jak "backslash". I rzeczywiście takie znajdujemy, choć trochę dalej od granicy - leży tam Białogard. Możemy zatem zapamiętać, że slash pochylony jest w stronę Suwałk, a backslash - w stronę Białogardu. I ponownie zrzut ekranu z mapy z Google Maps:

Białogard jako odpowiednik backslasha na mapie Polski

Oczywiście, pozdrawiam mieszkańców wszystkich wymienionych miast.

Pozostałe różnice

Wiemy już, jak identyfikować oba znaki - poprzez powiązanie z systemem operacyjnym, lokalizację na klawiaturze i na mapie Polski. Przejdźmy zatem do innych sytuacji (a przynajmniej niektórych z nich), w których uzywane są poszczególne symbole.

Slash
  • Wspomniałem już wcześniej o tym, że jest to znak stosowany w zapisywaniu adresów internetowych. Przykładowo, zobaczmy, że w adresie strony, na której możecie proponować tematy na bloga, zarówno za protokołem, jak i po kolejnych fragmentach URL-a, widzimy właśnie slashe.
  • Slashe bardzo często rozpoczynają wpisywanie komend w różnych programach. Żeby daleko nie szukać - w ten sposób wyszukujemy frazy w Vimie, uruchamiamy wtyczki w Slacku, sterujemy IRC-em, a nawet wybieramy grupę docelową na czacie w Valorancie.
  • Jest stosowany jako operator dzielenia w zapisie komputerowym.
Backslash
  • Stosowany jako znak ucieczki - w momencie, kiedy chcemy wypisać (w kodzie lub wyrażeniu regularnym) znak, który standardowo ma inne przeznaczenie, należy użyć znaku ucieczki, który niejako "kasuje" specjalne interpretowanie znaku następującego. Przykładowo, jeśli chcemy wypisać kropkę, a nie użyć go jako zastępnika innej litery, to piszemy "\.". Zwróćmy uwagę, że sam backslash jest znakiem specjalnym, więc chcąc podać go w ścieżce w kodzie (np. w Javie), musimy napisać "\\".
  • W JavaScripcie pozwala na utworzenie łańcucha tekstowego, który zajmuje wiele linijek tekstu.
  • W PHP pozwala korzystać z wielopoziomowych przestrzeni nazw (ang. namespaces).

Podsumowanie

Jak widać, wszystkie znaki istnieją w jakimś celu i mają swoje znaczenie. Jeśli nadal uważasz, że jeszcze mogą Ci się mylić i nigdy sobie nie przyswoisz różnicy pomiędzy nimi - nie panikuj. W tym przypadku najlepszym nauczycielem jest po prostu praktyka i zastanawianie się, którego znaku użyć w odpowiedniej sytuacji. Z czasem ich właściwości same "wskoczą" Ci do głowy i nawet nie będziesz wiedział kiedy to się stanie.

Pozdrawiam i dziękuję - Jakub Rojek.

Piszemy nie tylko artykuły na blogu, ale też aplikacje i dokumentację dla naszych klientów. Zobacz, z kim do tej pory współpracowaliśmy.

O autorze

Jakub Rojek

Główny programista i współwłaściciel Wilda Software, z wieloletnim doświadczeniem w tworzeniu i rozwoju oprogramowania, ale także w pisaniu tekstów na różnorakich blogach. Zaprawiony w boju analityk i architekt systemów IT. Jednocześnie absolwent Politechniki Poznańskiej i okazjonalny prowadzący zajęcia na tej uczelni. W wolnych chwilach oddaje się graniu w gry wideo (głównie w karcianki), czytaniu książek, oglądaniu futbolu amerykańskiego i e-sportu, odkrywaniu cięższej muzyki oraz wytykaniu innym błędów językowych.

Jakub Rojek