WstΩp

Od czasu, kiedy mikrokomputery osobiste zago╢ci│y w domach przeciΩtnych ludzi oczywiste sta│o siΩ, ┐e aby mia│y szanse zdobyµ popularno╢µ i znale╝µ zastosowanie w wielu dziedzinach musz▒ byµ │atwe w obs│udze. Dlatego od wielu lat jeste╢my ╢wiadkami rozwoju technik programistycznych w kierunku uproszczenia obs│ugi komputera. Ju┐ w czasach systemu Microsoft DOS powstawa│y programy wyposa┐one w │atwe w obs│udze interfejsy u┐ytkownika. Mo┐na je by│o obs│ugiwaµ za pomoc▒ myszy. Opiera│y siΩ na idei okien, czyli prostok▒tnych obszar≤w ekranu prezentuj▒cych jakie╢ dane lub prowadz▒cych interakcjΩ (dialog) z u┐ytkownikiem, kt≤re mog│y siΩ wzajemnie przys│aniaµ. Jednak co do wygl▒du tego interfejsu nie by│o ustalonych standard≤w. Programy takie, jak Turbo Pascal i Turbo C++ firmy Borland a tak┐e Norton Commander realizowa│y ten interfejs w trybie znakowym poprzez bibliotekΩ Turbo Vision. Inne za╢ mog│y wypracowane w│asne, nierzadko graficzne interfejsy.

Du┐ym krokiem naprz≤d w dziedzinie rozwoju przyjaznych dla u┐ytkownika interfejs≤w by│o stworzenie przez firmΩ Microsoft najpierw nak│adki na DOS – Windows 3.11, a nastΩpnie samodzielnego systemu operacyjnego – Windows 95, 98, Me oraz NT 4.0, 2000 i innych mniej znanych wersji. Interfejs u┐ytkownika zosta│ ujednolicony, a jego g│≤wna idea – zastosowanie okien sta│a siΩ tak wa┐na, ┐e to w│a╢nie od niej pochodzi nazwa systemu. Od tego czasu niewiele siΩ ju┐ zmienia w rozwoju „przyjazno╢ci” komputera dla u┐ytkownika. Obecnie jeste╢my ╢wiadkami og≤lnego znudzenia powszednim widokiem szarych okien. Wiele firm lansuje w swoich programach (g│ownie s▒ to programy multimedialne – do odczytywania b▒d╝ edycji grafiki i d╝wiΩku - Winamp, Windows Media Player) w│asne, nietypowe, najczΩ╢ciej prze│adowane spowalniaj▒c▒ ich pracΩ grafik▒ interfejsy.

Problemy

W czasach DOS wszystkie programy by│y niezale┐ne. U┐ytkownik sam te┐ zarz▒dza│ dyskiem. Program wystarczy│o zwykle skopiowaµ (ewentualnie wystΩpuj▒ce instalatory ogranicza│y siΩ w│a╢nie do skopiowania plik≤w) i uruchomiµ jak▒╢ aplikacjΩ do konfiguracji pozwalaj▒c▒ wybraµ np. posiadany model karty graficznej czy d╝wiΩkowej. Program taki mo┐na by│o bez problemu usun▒µ z dysku. Ale by│o to okupione tym, ┐e ka┐dy program i ka┐da gra musia│a we w│asnym zakresie realizowaµ obs│ugΩ najpopularniejszych kart graficznych, d╝wiΩkowych, joystick≤w i innych urz▒dze±.

Dzi╢ jest inaczej. Instalacja programu w systemie Windows to opr≤cz skopiowania plik≤w do folderu docelowego tak┐e skopiowanie r≤┐nych bibliotek do wsp≤│u┐ytkowanego folderu C:\Windows\System, wykonanie odpowiednich wpis≤w w Rejestrze, zarejestrowanie obs│ugiwanych rozszerze± plik≤w, nowych komponent≤w COM i inne czynno╢ci. Analogicznie deinstalatory, w kt≤re wyposa┐one s▒ programy musz▒ (a przynajmniej powinny) to wszystko usuwaµ. Stan taki ma swoje zalety: w systemie mo┐e byµ tylko jedna kopia biblioteki u┐ywanej przez wiele program≤w (oszczΩdno╢µ dysku), system sam realizuje obs│ugΩ sprzΩtu dziΩki do│▒czanym do niego sterownikom (programy nie musz▒ siΩ o to martwiµ). Programy s▒ bardziej zale┐ne od systemu – wszystkie czynno╢ci, jakie robi▒ wykonuj▒ poprzez wywo│ywanie odpowiednich funkcji Win32API czy innych API, zawartych w systemowych bibliotekach .dll. Ale ma to te┐ swoje wady: ╝le napisane instalatory potrafi▒ nadpisaµ wsp≤│u┐ytkowan▒ bibliotekΩ przez jej starsz▒ wersjΩ (co mo┐e spowodowaµ problemy w dzia│aniu innych program≤w, a nawet za│amanie systemu). Tak┐e niesforne deinstalatory nader czΩsto pozostawiaj▒ na dysku i w Rejestrze r≤┐ne nieusuniΩte dane (co czasami, np. w przypadku Microsoft Office, jest zamierzone przez producenta).

Tzw. DLL hell, czyli opisane wy┐ej zjawisko nadpisywania bibliotek systemowych, sterownik≤w, obiekt≤w COM i innych to jeden z problem≤w, z kt≤rymi Microsoft pr≤buje walczyµ planuj▒c nowe wersje systemu Windows. Rozwi▒zaniem jest, wed│ug giganta z Redmond wprowadzenie nowego │adu, w kt≤rym ka┐dy program bΩdzie zawiera│ w│asne biblioteki. Jego zdaniem idea wsp≤│dzielenia bibliotek przez programy wywodzi siΩ z „prehistorycznych” czas≤w, gdy dysk twardy nie by│ w komputerze bynajmniej sk│adnikiem oczywistym. Dlatego ju┐ pocz▒wszy od Windows 98 SE Microsoft realizuje ideΩ Fusion, maj▒c▒ przeciwdzia│aµ temu negatywnemu zjawisku. W Win98SE by│o to side by side DLL-s, w Windows 2000 i Me s▒ to Windows File Protection i System File Protection. Te rozwi▒zania s▒ jak najbardziej dobre i sam jestem ich zwolennikiem. Gorzej wygl▒daj▒ plany na przysz│o╢µ: wraz z pojawieniem siΩ Whistlera i Visual Studio 7 idea Fusion przybierze now▒ formΩ: system operacyjny zacznie „oszukiwaµ” aplikacje. BΩd▒ one „my╢la│y”, ┐e nadpisa│y bibliotekΩ systemow▒, gdy w rzeczywisto╢ci wykorzystaj▒ swoj▒ starsz▒ wersjΩ, umieszczon▒ bezpiecznie we w│asnym katalogu programu. Tak naprawdΩ bΩd▒ one wykonywane w maszynie wirtualnej(...).

Niew▒tpliwie samo istnienie Fusion jest zjawiskiem pozytywnym i jest ona jak najbardziej potrzebna. Jednak moim zdaniem sprawy nie mog▒ zaj╢µ a┐ tak daleko. Oto dlaczego uwa┐am, ┐e taki kierunek rozwoju jest niew│a╢ciwy:

  • Ka┐dy program ma we w│asnym zakresie posiadaµ u┐ywane przez siebie biblioteki? Choµ nie bΩdzie problemem, je╢li program taki zajmie na naszym dysku kilka MB wiΩcej, to ╢ci▒ganie go z Internetu takie bezproblemowe ju┐ nie bΩdzie (szczeg≤lnie w warunkach TP SA).

  • Wykonywanie programu w wirtualnej maszynie znacz▒co spowolni jego pracΩ. Znowu przybΩdzie takich warstw, kt≤re po╢rednicz▒ miΩdzy programem a sprzΩtem, a kt≤rych i tak ju┐ jest bardzo du┐o, o ile nie za du┐o. Rosn▒ca moc obliczeniowa komputer≤w zamiast pozostawaµ do dyspozycji coraz lepszych i coraz bardziej z│o┐onych program≤w, po raz kolejny po┐arta zostanie przez system operacyjny i owe warstwy.

  • I tak nie uda siΩ cofn▒µ czasu i realizowaµ program≤w tak, jak to by│o w DOSie. Bo co bΩdzie np. ze sterownikami do sprzΩtu. Znowu ka┐dy program bΩdzie musia│ realizowaµ to we w│asnym zakresie? To raczej niemo┐liwe.

  • Naturaln▒ konsekwencj▒ rozwoju przystΩpno╢ci i │atwo╢ci obs│ugi program≤w jest ich wzajemna integracja, kompatybilno╢µ i mo┐liwo╢µ wymiany danych. A to w pewnym sensie stoi w sprzeczno╢ci przedstawion▒ wy┐ej ide▒ Microsoftu.

Idea przysz│o╢ciowego systemu

Na podstawie moich przemy╢le± na przedstawione powy┐ej tematy opracowa│em w│asn▒ koncepcjΩ, jak m≤g│by wygl▒daµ system operacyjny przysz│o╢ci. Wed│ug mnie system taki to... jeden wielki program. W takim systemie przestanie istnieµ s│owo program czy aplikacja. Nast▒pi tam totalna integracja ca│ego zgromadzonego kodu wykonywalnego (exe, dll, ocx, vxd i inne takie). Zamiast tego bΩd▒ modu│y (pewnie zostanie dla nich wymy╢lona jaka╢ nowa nazwa, kt≤rej teraz jeszcze nie jeste╢my w stanie przewidzieµ). Modu│y te bΩd▒ rozszerzaµ system o kolejne funkcje.

Przyk│ad

We╝my dla przyk│adu program graficzny. Chc▒c stworzyµ swoje ma│e dzie│o muszΩ w│▒czaµ kilka program≤w. Najpierw wielki kombajn – w nim po│▒czΩ zgromadzone wcze╢niej grafiki, dodam efekty. Ale okazuje siΩ, ┐e muszΩ dodaµ jaki╢ efekt, kt≤rego nie ma w tym programie. Jest w innym. W│▒czam wiΩc drugi program. Wreszcie trzeci – bo tylko on ma mo┐liwo╢µ eksportu do formatu, w kt≤rym moje dzie│o ma byµ docelowo zapisane. To jest oczywi╢cie wyj▒tkowo pesymistyczny przypadek, ale s▒dzΩ, ┐e do╢µ dobrze ukazuje obecn▒ sytuacjΩ.

W systemie przysz│o╢ci nie bΩdzie jako takich program≤w graficznych. Chc▒c stworzyµ rysunek bΩdzie siΩ w jaki╢ spos≤b wydawa│o systemowi polecenie, aby ten uruchomi│ (jak by to trafnie nazwaµ?) „podsystem” graficzny. Taki w systemie bΩdzie tylko jeden. Je┐eli np. kupi│em modu│ z ciekawymi efektami, to te efekty bΩd▒ po jego zainstalowaniu dostΩpne w systemie. Je╢li ╢ci▒gn▒│em sobie z Internetu darmowy modu│ – filtr do obs│ugi jakiego╢ egzotycznego formatu, to format ten stanie siΩ dostΩpny w moim systemie. Po prostu system operacyjny bΩdzie mia│ budowΩ modu│ow▒ – nowe modu│y bΩd▒ dodawaµ nowe funkcje, filtry, efekty. I tak dla ka┐dego typu dokument≤w. Podobnie w edytorze tekstu bΩdzie np. modu│ umo┐liwiaj▒cy wstawianie tabel albo wprowadzaj▒cy podw≤jne podkre╢lenie tekstu.

Pozostaje jeszcze zagadnienie format≤w plik≤w. Co siΩ stanie, je╢li zapiszΩ tekst zawieraj▒cy podw≤jne podkre╢lenie i zaniosΩ go do kolegi, kt≤ry nie ma odpowiedzialnego za to modu│u. Ot≤┐ s▒dz▒, ┐e pliki powinny byµ zbudowane podobnie, jak dzisiaj s▒ strony HTML tzn. oparte na znacznikach. Niekoniecznie jako pliki tekstowe. Mog▒ byµ to przecie┐ znaczniki binarne. Chodzi tylko o to, ┐e je╢li system odczytuj▒cy nie potrafi zinterpretowaµ jakiego╢ znacznika, po prostu go ignoruje i nie cierpi na tym reszta dokumentu.

Takie modu│y by│yby dystrybuowane na podobnych zasadach, jak dzisiejsze programy. Jedne komercyjne, p│atne, produkowane przez firmy. Inne darmowe. Jeszcze inne pisane przez programist≤w-hobbyst≤w jako open-source. Jedne do kupienia w sklepach, inne dostΩpne w Internecie.

Podobne modu│y mog│yby kreowaµ interfejs u┐ytkownika systemu. M≤g│by siΩ pojawiµ modu│, kt≤ry dodawa│by do systemu nowy pasek ze skr≤tami, kt≤ry mo┐na sobie konfigurowaµ. Inny pozwala│by na wymianΩ „sk≤r” – zestaw≤w bitmap w systemie.

Wszystko sta│oby siΩ wzglΩdne. Nie by│oby ju┐, ┐e uruchamiasz np. edytor tekstu czy program graficzny.

Znowu problemy

Przy takiej integracji modu│≤w z systemem mo┐na by siΩ spodziewaµ powa┐nych problem≤w z jego stabilno╢ci▒. Problemy takie spotykamy przecie┐ na co dzie±. Wszelkie „modu│y” (w dzisiejszym tego s│owa znaczeniu) maj▒ce bezpo╢redni kontakt z systemem (niskopoziomowe), czΩsto sprawiaj▒ problemy, powoduj▒ niestabilno╢µ systemu, „k│≤c▒ siΩ” z innymi programami, a nawet doprowadzaj▒ do za│amania systemu. S▒ to najczΩ╢ciej sterowniki sprzΩtowe, programy narzΩdziowe, r≤┐ne biblioteki systemowe (nowe wersje, kt≤re „koniecznie trzeba mieµ”), │aty i service packi. Ale... My╢lΩ, ┐e wystΩpowaniu takich sytuacji mo┐na zapobiec. W rzeczywisto╢ci obserwowalnej ju┐ dzisiaj coraz bli┐szej integracji miΩdzy r≤┐nymi czΩ╢ciami systemu operacyjnego i zainstalowanymi w nim programami ju┐ od dawna towarzysz▒ dzia│ania zapobiegaj▒ce takim niepo┐▒danym sytuacjom. Zauwa┐: w systemie DOS ka┐dy program mia│ nieograniczon▒ w│adzΩ w komputerze. System operacyjny by│ dla niego „przezroczysty”. M≤g│ robiµ co chcia│ z pamiΩci▒ RAM, z plikami na dysku, z ca│ym hardwarem i softwarem. W 32-bitowych systemach Windows tak ju┐ nie jest. Programy nie odwo│uj▒ siΩ ju┐ bezpo╢rednio do przerwa± itp. Te z nich (g│≤wnie stare, DOSowe), kt≤re pr≤buj▒ to nadal robiµ s▒ kategorycznie „wypraszane” przez system z pamiΩci, co dla u┐ytkownika objawia siΩ zwykle komunikatem, ┐e „program wykona│ niedozwolon▒ operacjΩ”, „b│▒d ochrony”, „access violation”. Programy pisane docelowo dla Windows wykonuj▒ swoje dzia│ania poprzez uruchamianie r≤┐nych funkcji zawartych w .dllach systemowych, kt≤re nazwane s▒ API (Application Programming Interface – interfejs do programowania aplikacji). Tak wiΩc, jak widaµ, programi╢ci tworz▒cy system operacyjny zapewniaj▒ jemu oraz zainstalowanym w nim programom bezpiecze±stwo poprzez kontrolΩ nad uruchomionymi procesami. Procesy te nie maj▒ pe│nej w│adzy (bo w systemach wielow▒tkowych „gryz│yby siΩ”), ale wykonywane przez nie czynno╢ci s▒ kontrolowane przez system i mo┐e on ka┐dej chwili odm≤wiµ wykonania jakiej╢ czynno╢ci. Je╢li programy zmuszone s▒ do realizowania wszystkich czynno╢ci przez API, to system mo┐e dowolnie ograniczaµ uprawnienia program≤w. Problem w tym, ┐e takie uprawnienia na razie nie istniej▒. »aden program nie mo┐e naruszyµ przestrzeni adresowej innego, bo za karΩ „wyleci” z pamiΩci, ale ju┐ ka┐dy z nich mo┐e np. usuwaµ dowolne pliki z dysku. Moim zdaniem, je╢li system przysz│o╢ci bΩdzie wygl▒da│ tak, jak przedstawi│em powy┐ej (budowa modu│owa), to po prostu niezbΩdne stanie siΩ zastosowanie zupe│nie nowej, a przynajmniej znacznie bardziej rygorystyczne polityki bezpiecze±stwa wobec zainstalowanych i uruchamianych w systemie modu│≤w. Wed│ug mnie rozwi▒zaniem jest zastosowane takiej polityki przydzielania uprawnie± dla modu│≤w, jak▒ obecnie stosuje siΩ dla u┐ytkownik≤w. Poza tym system powinien kontrolowaµ poczynania program≤w i sam dopilnowywaµ rzeczy, kt≤re obecnie s▒ w rΩkach program≤w. Dlaczego tak? Po prostu programy s▒ r≤┐ne tak samo jak r≤┐ni s▒ ludzie, kt≤rzy je pisz▒. Jedni porz▒dni, drudzy totalnie olewaj▒ wszystkie obowi▒zki, jakie na programi╢cie ci▒┐▒ i wyznaj▒ ideΩ „jak tylko dzia│a, to jest dobrze”.

Instalacja i deinstalacja

Dla przyk│adu we╝my proces instalacji i deinstalacji program≤w. Obecnie niemal ka┐dy program wyposa┐ony jest we w│asny instalator. Microsoft dopiero niedawno doszed│ do wniosku, ┐e nie op│aca siΩ w ka┐dym z nich zawieraµ tego samego kodu wykonywalnego i stworzy│ technologiΩ Windows Installer. Ale zanim ona siΩ przyjmie, minie du┐o czasu. P≤ki co nienajlepiej siΩ dzieje w tej dziedzinie. Co prawda wiΩkszo╢µ program≤w ma instalatory wykonane w InstallShield, ale wiele z nich ma tak┐e w│asne, niestandardowe, zrobione przez autor≤w program≤w. Programy instalacyjne niejednokrotnie czyni▒ du┐e spustoszenie w systemie. Potrafi▒ nadpisaµ jak▒╢ bibliotekΩ jej starsz▒ wersj▒, a tak┐e zrobiµ wiele jeszcze gorszych rzeczy. Nie lepsze od nich s▒ deinstalatory. Te potrafi▒ usun▒µ jaki╢ wa┐ny dla systemu plik, ale najczΩ╢ciej wrΩcz przeciwnie – pozostawiaj▒ na dysku i w Rejestrze r≤┐ne dane, kt≤re w tym momencie staj▒ siΩ zalegaj▒cymi tylko ╢mieciami.

A jak mog│oby to wygl▒daµ w systemie przysz│o╢ci? Moim zdaniem instalacjΩ powinien przeprowadzaµ sam system. Kopiowa│by on pliki i wykonywa│ inne czynno╢ci instalacyjne na podstawie specjalnych plik≤w, w kt≤rych by│yby opisane rzeczy, jakie kolejno nale┐y zrobiµ aby zainstalowaµ program. Podobnie z deinstalacj▒: system w czasie instalacji oraz dzia│ania programu zapisywa│by do wewnΩtrznych log≤w, jakie pliki, zapisy w Rejestrze i inne elementy nale┐▒ do programu i sam usuwa│by je wszystkie na ┐▒danie u┐ytkownika dotycz▒ce deinstalacji danego programu.

Polityka bezpiecze±stwa

A jak taka ochrona „reszty ╢wiata” przed dzia│aniami programu by│aby realizowana w czasie normalnej pracy programu? Jak ju┐ wy┐ej napisa│em proponujΩ przydzielaµ poszczeg≤lnym programom uprawnienia tak, jak obecnie robi siΩ to w stosunku do u┐ytkownik≤w. Przyk│adowo: edytorowi tekstu nie jest potrzebny dostΩp do ca│ego Rejestru. Wystarczy tylko do jednego klucza, w kt≤rym bΩdzie m≤g│ przechowywaµ swoje ustawienia. Podobne wymagania ma wiΩkszo╢µ program≤w. Ale ju┐ program narzΩdziowy do kontroli systemu bΩdzie chcia│ uzyskaµ prawo do operacji na ca│ym Rejestrze. Je╢li sprawa dotyczy tak szerokich , co za tym idzie, niebezpiecznych uprawnie±, to system m≤g│by np. poczekaµ z tym, a┐ zalogowany bΩdzie administrator i jego zapytaµ, czy darzy zaufaniem dany program i czy pozwala mu na wykonywanie takich a takich dzia│a±. Je╢li teraz np. Rejestr zostanie fizycznie lub logicznie uszkodzony i zajdzie potrzeba jego odtworzenia z kopii bezpiecze±stwa, to system na podstawie log≤w i we wsp≤│pracy z administratorem przeprowadzi dochodzenie, kt≤re bΩdzie mia│o na celu wskazanie winnego programu (modu│u). Je╢li winny siΩ znajdzie, jego uprawnienia zostan▒ odebrane i ograniczone do bezpiecznego poziomu dop≤ki sam administrator nie zdecyduje siΩ na jego „u│askawienie”.

Jak mog│oby to byµ zrealizowane na poziomie API? Program ubiega│by siΩ w systemie o przydzielenie mu jaki╢ uprawnie± poprzez wywo│anie odpowiedniej funkcji systemowego API. I zanim przeprowadzi jak▒╢ operacje, bΩdzie musia│ sprawdziµ, czy ma do jej wykonania prawo. Je╢li nie, zako±czy siΩ ona fiaskiem i program odbierze komunikat o b│Ωdzie.

Konsola

Zarz▒dzanie plikami

Przejd╝my do innego tematu: Zarz▒dzania struktur▒ plik≤w i katalog≤w na dysku przez u┐ytkownika z udzia│em i za po╢rednictwem systemu operacyjnego. Kiedy╢, w czasach DOS ka┐dy sam musia│ dbaµ o pliki i katalogi na dysku, o ich organizacjΩ, przeznaczenie, zawarto╢µ. Tu mam programy, tu bΩdΩ trzyma│ moje teksty, tu moje obrazki, ╢ci╢le tajne dane schowam tam, a tu, oczywi╢cie, jest DOS. W Windows sprawa uleg│a niewielkiej zmianie. Teraz system znajduje siΩ zwykle w C:\Windows. Tam te┐ instalowane programy kopiuj▒ wiele swoich w│asnych bibliotek i innych plik≤w. Instalowane programy najczΩ╢ciej usadawia siΩ w C:\Program files. Tam prawie nigdy siΩ nie zagl▒da. Z kolei w C:\Moje dokumenty u┐ytkownik powinien trzymaµ efekty swojej pracy, czyli dokumenty utworzone w r≤┐nych programach. Nie istnieje obowi▒zek stosowania siΩ do tych regu│, ale takie proponuje nam Windows i my╢lΩ, ┐e dobrze robi.

Dlaczego to jest dobre?

Poniewa┐ hierarchicznie zorganizowana struktura plik≤w i folder≤w na dysku, w kt≤rych znajduje siΩ tyle danych r≤┐nego rodzaju (programy, dokumenty) jest jedn▒ z trudniejszych rzeczy do zrozumienia dla pocz▒tkuj▒cych u┐ytkownik≤w. Sam znam osoby, kt≤re my╢l▒, ┐e umiejscowienie programu w C:\Program files, a skr≤tu do niego w Menu Start\Programy to jedno i to samo. Je╢li natomiast u┐ytkownik bΩdzie swoje dokumenty przechowywa│ tylko w specjalnie do tego przeznaczonym folderze i ewentualnie utworzonych przez niego samego podfolderach, a wszystkie inne rzeczy takie, jak wyb≤r folderu instalacyjnego bΩdzie zostawia│ domy╢lne, to znacznie upro╢ci mu to obs│ugΩ komputera.

Nie tak dawno zadzwoni│ do mnie jeden kolega. Prosi│ mnie o pomoc. Musia│ zrobiµ co╢ z pewnym plikiem w zainstalowanej na jego komputerze grze. Ju┐ nie pamiΩtam dok│adnie co to by│o i o jak▒ grΩ chodzi│o. W ka┐dym razie zacz▒│em mu t│umaczyµ jak tego dokonaµ. Dobrze, ┐e to jemu r≤s│ rachunek telefoniczny. Nerwy zacz▒│em traciµ, kiedy przez parΩ minut szuka│ na ekranie Menu Start nie wiedz▒c, o co chodzi. Ale na szczΩ╢cie dla mnie nasze rozmowa szybko siΩ sko±czy│a. A sko±czy│a siΩ na tym, ┐e kolega nie znalaz│ na dysku C: folderu Program files. Tak po prostu :-). Nie ma i koniec. Nie pomog│o mu nawet poszukiwanie za pomoc▒ funkcji Znajd╝ > Pliki lub foldery...

W│a╢nie dlatego uwa┐am, ┐e hierarchiczna struktura, obejmuj▒ca wszystkie miejsca na dysku, a dostΩpna dla u┐ytkownika jest dla niego nie tyle nieodpowiednia, co po prostu niepotrzebna. Niepotrzebnie komplikuje ona obs│ugΩ komputera.

Co z tego wynika?

Je╢li ja narysujΩ w programie graficznym rysunek, to wygodniej by│oby m≤c zapisaµ go pod jak▒╢ nazw▒, dajmy na to „Bazgro│y”, ni┐ martwiµ siΩ o to, w jakim on bΩdzie folderze, w jakim formacie i o inne takie rzeczy. W ko±cu komputer ma byµ │atwy w obs│udze, nieprawda┐?

M≤j pomys│

Wpad│em na pomys│, jak zrealizowaµ obs│ugΩ plik≤w i przy okazji wielu innych czynno╢ci upraszczaj▒c je przy tym do maksimum. Zagadnienie to jest nierozerwalnie zwi▒zane z wizj▒ systemu operacyjnego przysz│o╢ci. Jednak na system taki jest, jak siΩ wydaje, jeszcze trochΩ za wcze╢nie i nie potrafimy nawet jeszcze trafnie nazwaµ wystΩpuj▒cych w nim czΩ╢ci. Natomiast prezentowana przeze mnie poni┐ej idea, choµ w systemie takim odgrywa│aby z pewno╢ci▒ niebagateln▒ rolΩ, jest mo┐liwa do zrealizowana ju┐ teraz. Dlatego dla uproszczenia omawiaj▒c ten temat bΩdΩ pisa│ o nim tak, jakby mia│ znale╝µ zastosowanie dla systemu Windows w takiej postaci, w jakiej znamy go dzi╢.

Rozw≤j i rola konsoli

Podstaw▒ pierwszych system≤w operacyjnych by│a tzw. konsola. Nazw▒ to okre╢lany by│ czasem zestaw klawiatura – monitor traktowany jako jedno urz▒dzenie wej╢cia-wyj╢cia. S│owo to ma tak┐e inne znaczenia, ale pod wzglΩdem programowym konsola to realizowana w trybie tekstowym mo┐liwo╢µ wydawania komputerowi polece± w formie ci▒g≤w znak≤w. KonsolΩ tak▒ znamy choµby z DOS. Z czasem zaczΩ│y pojawiaµ siΩ programy na tyle skomplikowane, ┐e przesta│a ju┐ im wystarczaµ funkcjonalno╢µ wiersza polece±. Programy zaczΩ│y byµ wyposa┐ane w – bardziej lub mniej – graficzne interfejsy u┐ytkownika. Ale podstaw▒ systemu nadal pozostawa│a konsola. To z jej poziomu uruchamia│o siΩ programy. Sytuacja zmieni│a siΩ radykalnie wraz z pojawieniem siΩ na rynku graficznych system≤w operacyjnych, jak Windows. Tutaj podstaw▒ systemu s▒ okna.

O co chodzi?

Og≤lnie rzecz bior▒c chodzi o to, aby powr≤ciµ do konsoli. Ale nie, jak w DOSie, kiedy konsola by│a podstaw▒. Podstaw▒ nadal by│yby okna, a konsola by│a w nich zawieszona jako jedno z nich. Jak mog│oby to byµ zrealizowane? Na przyk│ad jako jaki╢ tam pasek, kt≤ry rezydowa│by sobie gdzie╢ na ekranie nie przeszkadzaj▒c nikomu. Jego klikniΩcie powodowa│yby rozwiniΩcie okna konsoli. Albo jako dzia│aj▒ca w tle aplikacja, kt≤rej ikona znajdowa│aby siΩ w polu systemowym. Albo, co wydaje mi siΩ najlepszym rozwi▒zaniem, jako rezyduj▒ca po prawej stronie u g≤ry ekranu Windowsowa kontrolka listy rozwijalnej combo. Wpisanie do niej polecenia i naci╢niΩcie klawisza Enter spowodowa│oby jego wykonanie. KlikniΩcie na strza│kΩ natomiast rozwinΩ│oby pe│ne okno konsoli, na kt≤rym mo┐na by│oby zobaczyµ ostatnio wykonywane polecenia i odpowiedzi komputera. Taka konsola mia│aby budowΩ modu│ow▒ i by│aby maksymalnie zintegrowana z systemem oraz z zainstalowanymi programami. Tzn. programy musia│yby byµ pisane pod k▒tem integracji z ni▒.

Przyk│ad

Dla przyk│adu wr≤µmy raz jeszcze do wspomnianego ju┐ wy┐ej programu graficznego. Narysowa│em arcydzie│o, ale mi gdzie╢ kartkΩ wciΩ│o. Dlatego postanowi│em rysowaµ na komputerze. I tak pracujΩ sobie z programem rysuj▒c co╢. Kiedy ko±czΩ, piszΩ na konsoli: Zapisz jako Bazgro│y. Konsola pr≤buje zinterpretowaµ to sformu│owane w jΩzyku naturalnym polecenie. Zapisz jako to nazwa czynno╢ci, jaka mo┐e zostaµ wykonana na dokumencie. Konsola wie, ┐e ostatnio pracowa│em przez d│u┐szy czas z programem graficznym, tote┐ chodzi pewnie o edytowany w nim aktualnie dokument. Czynno╢µ ta wymaga jednego parametru: nazwy dla dokumentu. Bazgro│y to pewnie ta nazwa. WiΩc konsola wysy│a do programu graficznego polecenie zapisania dokumentu jako Bazgro│y. Nie ma wyboru folderu, do jakiego ma zostaµ zapisany plik, ani wyboru formatu. Po prostu: dla u┐ytkownika ten rysunek kryje siΩ pod nazw▒ Bazgro│y. Prawda, ┐e proste i intuicyjne? Dlatego jestem zwolennikiem p│askiego (tzn. nie hierarchicznego) modelu obiekt≤w, z kt≤rych ka┐dy bΩdzie identyfikowany przez nazwΩ i ewentualnie inne cechy takie, jak typ.

Po jakim╢ czasie postanowi│em, ┐e moje arcydzie│o poka┐Ω koledze. W tym celu wydajΩ na konsoli polecenie: Kopiuj Bazgro│y na dyskietkΩ. Konsola interpretuje: Kopiuj to nazwa czynno╢ci nale┐▒cej do grupy operacji na obiektach systemu plik≤w. Wymaga ona dw≤ch parametr≤w. Jako jeden z nich potraktowany zostaje wyraz Bazgro│y. Konsola wie, ┐e niedawno u┐ywano tego obiektu (ma to zapisane gdzie╢ w jakim╢ pliku pamiΩci podrΩcznej cache) i jest on plikiem C:\Moje dokumenty\Bazgro│y.gif. Je╢li by tego nie wiedzia│, musia│by poszukaµ, co to takiego mo┐e byµ. Przeszuka│by pewnie najczΩ╢ciej u┐ywane foldery z dokumentami, Menu Start, Pulpit, listΩ zainstalowanych program≤w i inne takie miejsca. Drugi wyraz – dyskietka(Ω) jest aliasem do napΩdu A:. Tak wiΩc wykonane zostaje kopiowanie C:\Moje dokumenty\Bazgro│y.gif do A:\.

Czy to siΩ aby op│aca?

Dobre pytanie! Przecie┐ wydawanie polece± na konsoli od lat funkcjonuje niemal jako symbol niewygody i informatycznego zacofania. Ot≤┐ my╢lΩ, ┐e pora na prze│amanie tego stereotypu. Je╢li: po pierwsze – polecenia bΩdzie mo┐na formu│owaµ w spos≤b intuicyjny w jΩzyku naturalnym, po drugie jedno polecenie bΩdzie wykonywa│o wiele skomplikowanych czynno╢ci, to nawet, je┐eli mo┐na by to by│o wszystko wyklikaµ, to u┐ywanie takiej nowoczesnej konsoli zaczyna siΩ op│acaµ.

Rozszerzalno╢µ

Taka konsola mia│aby budowΩ modu│ow▒. Znaczy to, ┐e nie stanowi│aby jednej sp≤jnej ca│o╢ci, ale w swojej pierwotnej postaci sk│ada│aby siΩ z wielu czΩ╢ci odpowiedzialnych za r≤┐ne czynno╢ci. M≤g│by istnieµ modu│ odpowiedzialny za operacje na plikach (kopiowanie, przenoszenie, usuwanie) oraz na dokumentach (rozkazywanie uruchomionym aplikacjom zapisywania, otwierania, zamykania dokument≤w). Tak zbudowan▒ konsolΩ mo┐na by│oby rozszerzaµ o nowe modu│y np. do obs│ugi Rejestru.

Jak to dzia│a?

Prawid│owe interpretowanie polece± w naturalnym jΩzyku nie jest │atwe. My╢lΩ, ┐e mo┐na by│oby to zrealizowaµ w nastΩpuj▒cy spos≤b: W╢r≤d s│≤w i ich zespo│≤w w poleceniach znajdowane by│yby najpierw nazwy czynno╢ci, czyli czasowniki. Odpowiada│yby one czynno╢ciom, jakie konsola mo┐e wykonaµ. Ka┐dy modu│ konsoli rozszerza│by j▒ o nowe czynno╢ci np. modu│ do obs│ugi plik≤w potrafi kopiowaµ, przenosiµ, usuwaµ. WiΩkszo╢µ czynno╢ci wymaga jednego lub wielu parametr≤w, czyli np. co skopiowaµ i dok▒d. Ka┐dy z takich parametr≤w musia│by byµ okre╢lonego typu. Bo zorganizowane w p│ask▒ strukturΩ i identyfikowane przez nazwΩ obiekty nie by│yby tylko plikami i folderami. Mog│yby one reprezentowaµ np. klucze Rejestru (taki typ obiektu zosta│by wprowadzony po zainstalowaniu modu│u do obs│ugi Rejestru). Obiekty te nie by│yby, jak pliki, zawsze istniej▒ce i trwa│e. Ta ich lista by│aby tak jakby tymczasowym buforem, list▒ skr≤t≤w do r≤┐nych rzeczy w systemie. Taki cache m≤g│by byµ przechowywany w pamiΩci, a przy wy│▒czaniu komputera zachowywany na dysk. Mia│by z g≤ry okre╢lony maksymalny rozmiar i jego przekroczenie powodowa│oby usuwanie dawno czy rzadko nie u┐ywanych obiekt≤w. UsuniΩcie obiektu reprezentuj▒cego plik Bazgro│y.gif nie spowoduje usuniΩcia samego pliku. Je╢li teraz bΩdziemy chcieli skopiowaµ co╢, co okre╢limy jako Bazgro│y na dyskietkΩ, to program, nie maj▒c ju┐ w pamiΩci cache niczego o tej nazwie poszuka w r≤┐nych miejscach systemu czego╢, co siΩ tak nazywa i po znalezieniu tego pliku na nowo utworzy na li╢cie obiekt go reprezentuj▒cy.

Jeszcze o konsoli

My╢lΩ, ┐e taka konsola znalaz│aby jeszcze wiele wiΩcej zastosowa± opr≤cz przedstawionych powy┐ej. Mo┐na by│yby za jej pomoc▒ uruchamiaµ programy (Uruchom Painta).

S│u┐y│aby tak┐e jako pomoc. Wydanie jej polecenia np. Wy╢wietl pomoc o sieci lokalnej spowodowa│oby, ┐e jej mechanizmy w spos≤b inteligentny przeszukaj▒ wszystkie znane jej w systemie pliki pomocy .hlp, .chm, .doc, .pdf, .txt i inne a nastΩpnie przedstawi▒ listΩ temat≤w, kt≤rych klikniΩcie natychmiast wy╢wietli okre╢lony dokument. Taki globalny w skali systemu, a nawet szerszy (Internet?) system pomocy okaza│by siΩ nieocenionym ╝r≤d│em zintegrowanych informacji dla u┐ytkownik≤w na ka┐dym poziomie zaawansowania.

Dla zaawansowanych natomiast konsola umo┐liwia│aby tak┐e wydawanie precyzyjnych polece± niczym w tych konsolach znanych nam dzi╢. Dopiero, kiedy to okaza│oby siΩ niewykonalne pr≤bowa│aby zinterpretowaµ polecenie w spos≤b inteligentny traktuj▒c je jako sformu│owane w jΩzyku naturalnym.

Konsola interpretuj▒c polecenie mog│aby siΩ domy╢laµ pewnych rzeczy, kt≤re s▒ wymagane, a kt≤re nie zosta│y okre╢lone – na podstawie polece± wydawanych poprzednio (np. Zapisz jako Bazgro│y, a potem ju┐ tylko Skopiuj na dyskietkΩ – wiadomo co).

Inne sprawy...

Aby komputer sta│ siΩ jeszcze bardziej przyjazny dla u┐ytkownika mo┐na zrobiµ jeszcze wiΩcej. Ot≤┐ my╢lΩ, ┐e w systemie WSZYSTKO powinno siΩ w jakim╢ zakresie daµ cofaµ tak, jak dzi╢ mo┐emy cofn▒µ usuniΩcie linijki w edytorze tekstu. Nawet tak powa┐ne sprawy, jak instalacja i deinstalacja programu. Jedn▒ z najczΩstszych przyczyn utraty danych jest usuniΩcie czego╢ z dokumentu a nastΩpnie jego odruchowe zapisanie na dysku. Potem ju┐ zwykle nie mo┐na tego cofn▒µ, a nadpisanego pliku odzyskaµ siΩ nie da. Dlatego powinno istnieµ co╢ w rodzaju historii powstawania dokumentu – powinny byµ przechowywane r≤┐ne wersje jednego pliku tak, jak przebiega│o jego tworzenie i edycja.

Jeszcze jednym problemem jest usuwanie plik≤w. Doskonale znany nam wszystkim z Windowsa Kosz z pewno╢ci▒ wiele zas│ug przy│o┐y│ do polepszenia bezpiecze±stwa. Na pewno uratowa│ ju┐ tysi▒ce godzin pracy ludzi na ca│ym ╢wiecie, kt≤rzy z Kosza wyci▒gnΩli nieopatrznie skasowane zbiory. W DOSie zrobiµ siΩ tego nie da│o (chyba, ┐e specjalnymi programami, i to nie zawsze siΩ udawa│o). Tam po prostu wszystko by│o usuwane bezpowrotnie. Ale konieczno╢µ opr≤┐niania kosza wielu u┐ytkownik≤w doprowadza do wyrobienia sobie niezdrowych nawyk≤w. Jedni zaraz po skasowaniu czegokolwiek opr≤┐niaj▒ Kosz, inni wszystko, dla wygody, usuwaj▒ od razu bezpowrotnie – z klawiszem Shift.

Z usuwaniem mog│oby byµ tak, ┐e polecenie usuniΩcia jakiego╢ pliku spowodowa│oby tylko ustawienie mu pewnego atrybutu „usuniΩty” i zapisanie daty usuniΩcia. Poza tym funkcjonowa│by on jak dot▒d. I dopiero po jakim╢ czasie albo te┐ po wyczerpaniu siΩ wolnego miejsca na dysku, je╢li system widzia│by, ┐e plik ten nie by│ ju┐ od chwili usuniΩcia u┐ywany, fizycznie wymaza│by go z dysku.

Podsumowanie

Rozw≤j system≤w operacyjnych

Dla wielu z nas przygoda z komputerami rozpoczΩ│a siΩ od systemu DOS. Ja mam to szczΩ╢cie, ┐e pomimo m│odego wieku w swojej praktyce zar≤wno programisty, jak i u┐ytkownika zd▒┐y│em sporo „zahaczyµ” o DOS. Dzi╢ mamy epokΩ │atwych w obs│udze (w naszym rozumieniu tego pojΩcia), 32-bitowych, okienkowych system≤w. W ko±cu Windows, jaki jest, ka┐dy widzi. ZaczΩ│o siΩ od nak│adek na DOS typu Windows 3.x. Wprowadzano elementy wielow▒tkowo╢ci (wtedy jeszcze bez wyw│aszczenia). Pojawi│a siΩ wszΩdobylska grafika, okna. Ujednolicono interfejs u┐ytkownika, skr≤ty klawiszowe i wiele innych rzeczy. Wraz z wersj▒ 95 Windows sta│ siΩ samodzielnych, 32-bitowym systemem operacyjnym. Nadal jednak by│ oparty na, jedynie nieco udoskonalonym j▒drze DOS. Wydawane by│y coraz to nowe, lepsze, bardziej multimedialne i bardziej stabilne (no, mo┐e przesadzi│em :-) wersje. R≤wnolegle wydawane by│y kolejne edycje i service packi do Windows NT opartego na zupe│nie nowym j▒drze (st▒d NT – Nowa Technologia). Systemy z tej serii by│y przeznaczone do zastosowa± profesjonalnych. Obecnie Microsoft ma w planach po│▒czenie tych dw≤ch linii i stworzenie jednego, uniwersalnego Windowsa. Mo┐e bΩdzie nim Whistler nazywany te┐ Windows 2001? Zobaczymy... Tymczasem opr≤cz Microsoftowych istniej▒ tak┐e inne systemy. Choµby Linux – system na tyle niezwyk│y, ┐e doczeka│ siΩ bardzo wielu r≤┐nych dystrybucji. Jedne zajmuj▒ dyskietkΩ, inne kilka CD-ROM≤w. WiΩkszo╢µ z nich jest nie tylko darmowa, ale dostΩpne s▒ w Sieci nawet ich kody ╝r≤d│owe. Jeszcze innym systemem jest BeOS.

Jaka przysz│o╢µ?

Dla wielu, mo┐e nawet wiΩkszo╢ci z nas system Windows, okna, graficzny interfejs i inne tym podobne zagadnienia s▒ oczywiste. Nie wszyscy zdajemy sobie sprawΩ, ┐e wszystko to zale┐y od u┐ywanego przez nas systemu operacyjnego, a tych jest wiele i ka┐dy ma swoje cechy. Tym niemniej ka┐dy system, kt≤rego tw≤rcy chcieliby, aby zyska│ on popularno╢µ musi spe│niaµ pewne kryteria i dostosowaµ siΩ do og≤lnie panuj▒cych w danym czasie trend≤w. A te z kolei posiadaj▒ w│asn▒ drogΩ ewolucji. Jest to co╢, co trudno jest ogarn▒µ umys│em. Tym bardziej, ┐e zwykle nie zastanawiamy siΩ nawet nad cechami i ich znaczeniem jednego systemu, kt≤rego u┐ywamy. A co dopiero z pewnymi sprawami bΩd▒cymi jeszcze ponad wszystkimi systemami? Systemy operacyjne, ich rozw≤j rz▒dzi siΩ w│asnymi prawami, innymi ni┐ rozw≤j program≤w. Albowiem wiΩkszo╢µ program≤w podporz▒dkowana jest pod okre╢lony system. Surowy wiersz polece± DOS jest dzi╢ symbolem przestarza│ej generacji system≤w b▒d╝ te┐, np. jak w Linuksie, czym╢ niedostΩpnym, zarezerwowanym tylko dla profesjonalist≤w. Windows, okna, Alt+F4, Ctrl+Z, Kosz s▒ dla nas oczywiste.

Zako±czenie

Ja, jako programista szczeg≤lnie interesujΩ siΩ po│o┐eniem przeciΩtnego, nie zawsze przecie┐ zaawansowanego u┐ytkownika. I z jego strony staram siΩ patrzeµ na te wszystkie sprawy. Nie mam wprawdzie ani ambicji, ani umiejΩtno╢ci potrzebnych do napisania systemu operacyjnego (drugim Linusem Torvaldsem nie bΩdΩ :-), ale przedstawiona przeze mnie idea nowoczesnej konsoli jest, jak s▒dzΩ mo┐liwa do zrealizowania ju┐ teraz – w tym czasie, w tym Windowsie. Dlatego mo┐e wkr≤tce przedstawione pomys│y zaczn▒ nabieraµ realnych kszta│t≤w?

Ale teraz spr≤bujmy wsp≤lnie wznie╢µ siΩ ponad to wszystko: ponad program, w kt≤rym czytasz teraz ten tekst, ponad system, w kt≤rym ten program pracuje. Pomy╢l: w jakim kierunku potoczy siΩ ewolucja system≤w operacyjnych? Jaki bΩdzie ten nastΩpny krok? Jaka wielka rewolucja szykuje siΩ w najbli┐szym czasie w tej dziedzinie? W jakim kierunku w og≤le pod▒┐a ten rozw≤j? My╢lΩ, ┐e na te pytania ka┐dy powinien odpowiedzieµ sobie sam. Ja to zrobi│em i doszed│em do wniosk≤w, kt≤re opisa│em powy┐ej. A ty? Jakie jest twoje stanowisko w tej sprawie? My╢lΩ, ┐e temat jest ciekawy i wart po╢wiΩcenia chwili na zastanowienie. Czy tytu│owy system operacyjny przysz│o╢ci bΩdzie wygl▒da│ tak, jak wygl▒da moja jego wizja? A mo┐e to w│a╢nie Tobie uda siΩ trafnie przewidzieµ bieg wydarze±? Te pytania pozostawiam bez odpowiedzi. Bo tej mo┐e udzieliµ tylko czas...

Literatura: „W nowe tysi▒clecie” – CHIP nr 9/2000, str. 128

Adam Sawicki
e-mail: sawickiap@poczta.onet.pl
ICQ UIN: 91943513