Windows kontra reszta świata, czyli dlaczego Microsoft zrobił to inaczej
Każdy, kto używał niemal dowolnego innego systemu operacyjnego niż Windows (a wcześniej DOS), wie, że mimo wielu podobieństw pomiędzy wszystkimi systemami, Windows różni się jedną zasadniczą rzeczą.
Ścieżki folderów (katalogów) oddziela się znakiem backslash, czyli odwróconego ukośnika ("\"), podczas gdy praktycznie każdy inny system używa znaku slash, czyli ukośnika ("/"). Widać to również w systemach mobilnych (typu Android), oraz w adresach WWW, gdzie także struktura katalogów jest oznaczana normalnym ukośnikiem. Skąd ta różnica?
Trochę historii
Aby ją zrozumieć, musimy się cofnąć aż do czasów DOS-a (Disk Operating System), praprzodka Windowsa, z którym dzieli on wiele rozwiązań architektonicznych, konwencji i nazewnictwa.
Nie do pierwszej wersji DOS-a, pochodzącej z 1981 roku, bo ta… nie wspierała w ogóle tworzenia katalogów na dyskietkach (do tego obsługiwała jedynie dyskietki jednostronne). W grę wchodzi wersja 2.0, która umożliwiła tworzenie drzewa katalogów - potrzeba ta zrodziła się wraz ze wsparciem dla twardych dysków.
Jest potrzeba... obsługi wielkiego, 10 MB dysku
Był to rok 1982. DOS był wtedy systemem OEM - powstawał w razie potrzeb, gdy powstawały nowe komputery IBM PC. I właśnie na zamówienie IBM, i we współpracy z inżynierami z tej firmy powstawało wydanie dla nowej wersji IBM PC XT, która charakteryzowała się twardym dyskiem o dużej pojemności - aż 10 megabajtów!
Zastana sytuacja wymagała od projektantów podjęcia decyzji - jak oddzielać od siebie poszczególne poziomy hierarchii katalogów? Oczywistym wyborem byłby właśnie ukośnik. Niestety, był on w DOS już zajęty. Przez co? Przez przełącznik parametrów linii poleceń.
Parametry linii poleceń w DOS
Większość narzędzi, które używał DOS, było napisanych przez IBM. Używały one znaku "/" do oddzielania parametrów np:
można było zapisać również razem, co mogło spowodować pomylenie ze ścieżką do programu
W systemach unixowych zaś rolę znaku "przełącznika" spełniał myślnik, czyli znak (-).
Dlaczego właśnie "/"?
Rozwiązanie znajdziemy we wpisie na blogu jednego z pracowników Microsoftu, Larry'ego Ostermana, napisanym ponad 10 lat temu. Wspomina on, że wielu inżynierów pracujących nad DOS-em i narzędziami dla niego, pracowało wcześniej nad systemem DEC-20. To tam właśnie mają korzenie konwencje używane do dziś przez Windows: "/" jako separator parametrów linii poleceń, czy dwukropek ":" po nazwie dysku.
Przykładowa ścieżka w DEC-20 wyglądała więc tak:
PS:<SYSTEM>MONITR.EXE,4 - gdzie PS: to nazwa woluminu (dysku), system to ścieżka, a 4 oznaczało wersję. Mimo różnic, widać podobieństwa do formatu używanego do dziś w Windows:
Tymczasem, w systemach typu Unix wyglądałoby to tak:
Inżynierowie stanęli przed koniecznością wybrania nowego znaku, który oddzielałby katalogi w ścieżce. Wybór padł na odwrotny ukośnik "\", ze względu na to, że był najbardziej podobny do zwykłego ukośnika. Reszta jest historią…
Miłe złego początki
Problemów z tym było przez kolejne lata co niemiara. Szczególnie, że backslash stał się również tzw. escape character, czyli znakiem specjalnym zapowiadającym, iż następująca po nim litera ma charakter sterujący.
Do dziś niektóre programy radzą sobie lepiej lub gorzej z obsługą backslasha, jako znaku oddzielającego hierarchię - popróbujcie, wpisując np. adres URL z "\" zamiast "/" do różnych przeglądarek lub wpisując w linii poleceń Windows 10 np. "start c:/windows".
Na koniec dodatkowa ciekawostka: w niektórych wersjach DOS (m.in. w wersji 2.0 właśnie) istniało nieudokumentowane polecenie (wpisywane w config.sys) SWITCHAR, którym można było przełączyć DOS w tryb Uniksa - z myślnikiem oddzielającym parametry i slashem oddzielającym ścieżki…