Windows kontra reszta świata, czyli dlaczego Microsoft zrobił to inaczej

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?

sciezki

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ń.

ibm-pc-xt
IBM PC XT – przyczyna całego zamieszania

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:

dir /w

można było zapisać również razem, co mogło spowodować pomylenie ze ścieżką do programu

dir/w

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:

c:\system\monitor.exe

Tymczasem, w systemach typu Unix wyglądałoby to tak:

/volumes/c/system/monitor.exe

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.

switchar
Opis funkcji Switchar

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…

Dołącz do dyskusji

MAŁO? CZYTAJ KOLEJNY WPIS...

MAŁO? CZYTAJ KOLEJNY WPIS...

Advertisement