WstΩp

W czasie ╢wi▒t Bo┐ego Narodzenia 2000 napisa│em artyku│ pt. "System operacyjny przysz│o╢ci". Teraz s▒ ╢wiΩta wielkanocne 2001 i postanowi│em napisaµ drug▒ czΩ╢µ. Na wstΩpie napiszΩ tak kr≤tko, o czym bΩdzie. Przede wszystkim jest to kontynuacja pierwszej czΩ╢ci, rozwiniΩcie rozpoczΩtych tam my╢li. St▒d zalecam przed przeczytaniem tego artyku│u zapoznanie siΩ najpierw z czΩ╢ci▒ pierwsz▒. W pierwszej czΩ╢ci rozpocz▒│em jedynie pewne my╢li wiΩkszo╢µ temat≤w pozostawiaj▒c otwartych. Teraz, po 4 miesi▒cach, wiele spraw postaram siΩ wyja╢niµ i przedstawiµ ju┐ w miarΩ pe│ny i wyra╝ny obraz tytu│owego systemu operacyjnego przysz│o╢ci, jaki sobie wyobra┐am. W kolejnych paragrafach przedstawiam r≤┐ne moje pomys│y.

Nowe pomys│y

Makropolecenia

W I czΩ╢ci pisa│em o integracji modu│≤w bez podzia│u na programy jako podstawowe jednostki funkcjonalne. Sam nie do ko±ca jeszcze wiedzia│em przy tym, jak mog│oby siΩ to odbywaµ. Teraz, po wielu przemy╢leniach jestem tego rozwi▒zania, je╢li nie bliski, przynajmniej trochΩ bli┐szy. Aby przedstawiµ moje pomys│y pos│u┐Ω siΩ tu nieco dziwn▒ analogi▒. BΩdzie to analogia u┐ywania komputera, jego obs│ugi do metod stosowanych podczas programowania, tworzenia program≤w.

Dawniej w czasach DOS programista by│ skazany na tworzenie praktycznie wszystkiego we w│asnym zakresie. W│asny interfejs u┐ytkownika, obs│uga ekranu, w grach tak┐e klawiatury, myszy, d╝wiΩku i innych urz▒dze±. Teraz programista Windows korzysta z API – zbioru funkcji udostΩpnianych przez system. Za ich pomoc▒ realizuje wykonywane przez siebie zadania. Windows sam wspiera obs│ugΩ sprzΩtu, grafiki, interfejs u┐ytkownika i wiele innych rzeczy. Programista nie musi sam tego implementowaµ.

Podobnie jest z jΩzykami programowania. W jΩzykach niskiego poziomu, jak Asembler, u┐ywa│o siΩ elementarnych instrukcji. W programowaniu strukturalnym wiΩkszo╢µ kodu stanowi▒ wywo│ania innych funkcji odwo│uj▒cych siΩ do siebie. Chc▒c wykonaµ jakie╢ zadanie programista ma do dyspozycji zwykle zbi≤r funkcji z odpowiedniego modu│u. DziΩki nim mo┐e skupiµ siΩ na pisaniu w│a╢ciwego kodu programu. Jeszcze dalej: programowanie zorientowane obiektowo. Tu obiekt, bΩd▒c abstrakcyjn▒ reprezentacjΩ danego zagadnienia udostΩpnia programi╢cie szereg element≤w jak pola czy metody, za pomoc▒ kt≤rych mo┐na na nim operowaµ.

Teraz spr≤bujmy prze│o┐yµ to na zasady, kt≤re da siΩ zastosowaµ do obs│ugi komputera. A wiΩc:

Po pierwsze: PamiΩtasz, jak w I czΩ╢ci pisa│em o konsoli? Zada│em wtedy sobie pytanie, czy to siΩ aby op│aca? I odpowiedzia│em na nie twierdz▒co pod jednym warunkiem: ┐e wydawane na takiej konsoli polecenia nie bΩd▒ prostymi elementarnymi poleceniami, ale ┐e bΩd▒ to jakby makropolecenia. Jedno takie polecenie bΩdzie mog│o wykonaµ wiele z│o┐onych czynno╢ci. A wszystko to poprzez zapisanie odpowiedniej instrukcji z odpowiednimi parametrami. To wa┐ne! Ka┐de takie polecenie musi mieµ parametry definiuj▒ce, na jakich danych i w jaki spos≤b ma operowaµ. Np. polecenie kopiowania plik≤w pobiera parametry: plik ╝r≤d│owy i docelowy. A wiΩc chodzi o to, ┐e w systemie przysz│o╢ci (kt≤ry przypomnΩ ma byµ bardzo prosty w obs│udze) wiele czynno╢ci bΩdzie mo┐na wykonywaµ poprzez takie w│a╢nie makropolecenia – jedno polecenie, powt≤rzΩ, bΩdzie wykonywa│o wiele czynno╢ci sk│adowych.

Druga sprawa: Na podstawie analizy rozwoju metod programowania mo┐na doj╢µ do nastΩpuj▒cego wniosku: programista mo┐e siΩ teraz skupiµ na tym CO zrobiµ, a nie JAK to zrobiµ. To wa┐ne! DziΩki u┐ywaniu funkcji API i innych zewnΩtrznych modu│≤w, jak r≤wnie┐ klas i obiekt≤w nie musi wiedzieµ, jak dana czynno╢µ jest wykonywana. To samo mo┐na odnie╢µ do u┐ywania komputera. Komputer stanie siΩ znacznie bardziej przyjazny, je╢li zamiast wydawaµ mu elementarne polecenia, u┐ytkownik bΩdzie m≤g│ mu zakomunikowaµ, CO chce zrobiµ. Wcale nie bΩdzie musia│ wiedzieµ przy tym, JAK tego dokonaµ.

Obydwie te zasady nie musz▒ byµ rozpatrywane tylko w kontek╢cie zastosowania do wymy╢lonej przeze mnie przysz│o╢ciowej konsoli. Mog▒ tak┐e odnosiµ siΩ do program≤w w dzisiejszym tego s│owa znaczeniu. »eby │atwiej by│o to sobie wyobraziµ, przedstawiam przyk│ad:

PiszΩ wypracowanie. W tym celu kolejno: W│▒czam edytor tekstu. TworzΩ nowy dokument, byµ mo┐e u┐ywaj▒c przy tym jakiego╢ swojego szablonu "wypracowanie". PiszΩ tekst. Potem sprawdzam ortografiΩ, czytam jeszcze raz. ZapisujΩ na dysku, ┐eby moje dzie│o nie zginΩ│o. W ko±cu drukujΩ (u┐ywaj▒c konkretnych ustawie± strony). Patrz, ile czynno╢ci! Co prawda do takiego sposobu obs│ugi wszyscy przywykli╢my. Spr≤buj sobie jednak wyobraziµ, ┐e mo┐na to wszystko zrobiµ pro╢ciej. Wielu programist≤w dosz│o ju┐ do takiego wniosku, czego efektem s▒ tzw. kreatory (ang. wizards). S▒ one obecne zar≤wno w samym systemie, jak i w wielu programach. Maj▒ wiele zalet wzglΩdem tradycyjnej metody obs│ugi. W kolejnych krokach u┐ytkownik mo┐e okre╢laµ parametry dla wykonywanej czynno╢ci. DziΩki temu odpada dylemat wyboru kolejno╢ci poszczeg≤lnych czynno╢ci sk│adowych. Kreatory zawieraj▒ zazwyczaj obszerny opis ka┐dego etapu. To dziΩki temu, ┐e jest dla niego wiele miejsca – tw≤rcy nie musieli siΩ ograniczyµ do lakonicznych nazw i hase│, nie zawsze przecie┐ zrozumia│ych i jasnych. Kreatory s▒ ju┐ czΩ╢ci▒ naszej rzeczywisto╢ci. Proste w obs│udze, znacznie przyspieszaj▒ce i u│atwiaj▒ce wykonywanie typowych czynno╢ci, s▒ symbolem │atwo╢ci obs│ugi i przystΩpno╢ci dla pocz▒tkuj▒cego u┐ytkownika. Je╢li rozpatrywaµ fakt istnienia kreator≤w i ich istotΩ jako czΩ╢ci drogi ku zainteresowaniu tym, CO zrobiµ zamiast dawnego JAK to zrobiµ, mo┐na spr≤bowaµ przewidzieµ (przynajmniej og≤lnie) przysz│o╢ci tego typu rozwi▒za±. Je╢li rozpatrywaµ je w ╢wietle dw≤ch przedstawionych tu wy┐ej idei, mo┐emy spr≤bowaµ wyobraziµ sobie program, w kt≤rym ca│a obs│uga sprowadza siΩ do wydawania komputerowi polece± w skali makro – z ewentualnymi parametrami. Mo┐e to przybieraµ r≤┐ne formy – od znanych dzisiaj kreator≤w poprzez wydawanie polece± na konsoli a┐ po sposoby, kt≤rych dzi╢ jeszcze nie jeste╢my sobie w stanie wyobraziµ.

Wracaj▒c do naszego przyk│adu: WidzΩ oczami wyobra╝ni program, kt≤ry obs│uguje siΩ bardzo │atwo. Edytor tekstu tego typu m≤g│by wygl▒daµ tak: Zamiast zestawu polece± typu Otw≤rz, Zapisz itp. bΩdzie w nim zestaw przycisk≤w czy innych element≤w jako odpowiedzi na pytanie Co chcesz zrobiµ?. BΩd▒ w╢r≤d nich takie, jak Napisaµ wypracowanie, Wydrukowaµ istniej▒cy dokument, Odczytaµ dokument z dyskietki, Zaimportowaµ z Internetu itp., jak r≤wnie┐ ostatnio u┐ywane dokumenty. Mo┐e tak┐e byµ pole, w kt≤re mo┐na wpisywaµ w│asne polecenie do konsoli – bΩdzie to lokalny │▒cznik programu do systemowej konsoli. Tyle, ┐e wpisane w to pole polecenie bΩdzie przez ni▒ interpretowane w kontek╢cie tego w│a╢nie programu.

M≤g│by╢ zapytaµ: No dobrze. úatwo siΩ to bΩdzie obs│ugiwaµ. Tak jak dzisiejsze kreatory. Ale przecie┐ za ich pomoc▒ mo┐na wykonywaµ tylko podstawowe, najczΩ╢ciej spotykane i przewidziane przez autor≤w czynno╢ci! Je╢li ca│a obs│uga mia│aby siΩ sprowadzaµ do takiego w│a╢nie sposobu, to przecie┐ mo┐liwo╢ci takiego programu by│yby bardzo ograniczone! Masz racjΩ! Oczywi╢cie, ┐e tak! Aby uporaµ siΩ z tym problemem, po raz kolejny wr≤µmy do naszej analogii do metod programowania. Je╢li jako programista u┐ywam biblioteki do obs│ugi czego╢ tam, mogΩ robiµ tylko to, co udostΩpniaj▒ jej funkcje. Chc▒c zrobiµ co╢ wiΩcej musia│bym napisaµ to we w│asnym zakresie, a to wymaga│oby ode mnie dog│Ωbnej wiedzy na temat danego zagadnienia. Tak samo w czasie u┐ywania programu. Nic nie ma za darmo. Niestety. Co╢ za co╢. Je╢li chcΩ obs│ugiwaµ program w spos≤b │atwy, mam pole dzia│ania ograniczone. Je╢li natomiast pragnΩ wiΩkszej swobody – muszΩ za pomoc▒ jakiego╢ specjalnego narzΩdzia stworzyµ w│asnego kreatora lub robiµ wszystko poprzez wydawanie elementarnych polece±, jak to robimy teraz. Oczywi╢cie w przysz│o╢ciowym systemie nie bΩdzie takich kreator≤w, jakie znamy dzi╢. Nie mo┐na tego tak rozpatrywaµ. Czasy siΩ zmieni▒. BΩd▒ inne metody interakcji u┐ytkownika z komputerem. Na pewno jednak przewidziane i zaimplementowane zostan▒ wszystkie wykonywane zwykle przez u┐ytkownik≤w czynno╢ci. Nie, jak to jest teraz, tylko te najbardziej typowe.

Unifikacja kodu i danych

Jak ╢wiat ╢wiatem, a komputer komputerem, wszelkie informacje podzielone by│y wyra╝nie na 2 grupy: kod wykonywalny (interpretowany i wykonywany przez procesor) oraz dane (informacje przetwarzane przez ten kod). Rozpatruj▒c to zagadnienie pos│u┐Ω siΩ raz jeszcze analogi▒ metod programowania od strony programisty do metod obs│ugi komputera od strony u┐ytkownika.

Taki podzia│ na kod i dane wystΩpuje i aby to pokazaµ, przedstawiam przyk│ad: Od strony programisty od zawsze kod ╝r≤d│owy programu podzielony by│ na: kod wykonywalny (funkcje) oraz mechanizmy do przechowywania danych (typy, zmienne, struktury danych). Od strony u┐ytkownika za╢ kodem wykonywalnym s▒ instalowane w systemie programy oraz sam system, danymi za╢ tworzone za ich pomoc▒ i zapisywane na dysku dokumenty.

Nie inaczej jest w samym systemie plik≤w na dysku. W skali pojedynczych plik≤w mo┐emy powiedzieµ, ┐e kod reprezentuj▒ pliki typu .exe, .dll itp., dane za╢ pozosta│e, w szczeg≤lno╢ci tworzone przez u┐ytkownika dokumenty. Jak chodzi o ca│e foldery, to na kod przeznaczony jest Program files, a na dane Moje dokumenty.

Od jakiego╢ czasu da siΩ obserwowaµ integracjΩ tych dw≤ch grup, bΩd▒cych w pewnym sensie swoimi przeciwie±stwami. Od strony programisty jest to programowanie zorientowane obiektowo. Podzia│ na kod i dane zostaje zniesiony na rzecz innego, lepszego. Dane i kod s▒ teraz zintegrowane ze sob▒ i zamkniΩte (zenkapsulowane) w klasy – obiekty reprezentuj▒ce konkretne zagadnienie. Od strony u┐ytkownika za╢ jest to wystΩpowanie element≤w jednego typu wewn▒trz drugiego. Z jednej strony dane s▒ czΩsto zamykane wewn▒trz kodu. Przyk│adem tego mog▒ byµ wersje instalacyjne program≤w wystΩpuj▒ce pod postaci▒ pojedynczego pliku .exe. W pliku takim obok kodu w│a╢ciwego instalatora spakowana jest ca│a wersja instalacyjna programu. Z drugiej strony coraz wiΩcej format≤w dokument≤w, a wiΩc plik≤w przeznaczonych do przechowywania danych mo┐e tak┐e zawieraµ kod wykonywalny. Plikami takimi s▒ m.in. strony internetowe HTML (kod w jΩzyku JavaScript lub VBScript) czy dokumenty Microsoft Worda, Excela i innych sk│adnik≤w pakietu Microsoft Office. Te ostatnie mog▒ zawieraµ makra w jΩzyku VBA (Visual Basic for Applications). To za ich pomoc▒ przenosz▒ siΩ makrowirusy.

Jak to bΩdzie w przysz│o╢ci? Niezwykle trudno sobie to wyobraziµ. Z pewno╢ci▒ unifikacja bΩdzie postΩpowa│a. Do czego to doprowadzi? C≤┐... My╢lΩ, ┐e na porz▒dku dziennym bΩd▒ rzeczy, kt≤re dzi╢ uznaliby╢my na absurd. Kod bΩdzie zawiera│ w sobie coraz wiΩcej danych. Np. zamiast zapisywaµ obraz w jakim╢ formacie wygenerowany zostanie kod, kt≤rego odpowiednie procedury bΩd▒ mog│y na poczekaniu narysowaµ linie i inne elementy, z kt≤rych obraz siΩ sk│ada. Z drugiej strony: dane bΩd▒ zawiera│y coraz wiΩcej kodu. Praktycznie ka┐dy format bΩdzie m≤g│ zawieraµ co╢ na podobie±stwo dzisiejszych makr. I nie bΩd▒ to ju┐ bynajmniej jakie╢ interpretowane jΩzyki ograniczone w swojej funkcjonalno╢ci, a wykonywane w wirtualnej maszynie ale zwyk│y kod, jaki dzisiaj jest w plikach .exe. DziΩki temu zbiory danych nie bΩd▒ ju┐ ograniczone do funkcjonalno╢ci, jak▒ zapewnia im program, kt≤ry je odczytuje. Na porz▒dku dziennym bΩdzie to, co dzisiaj nazywane jest w╢r≤d programist≤w kompilacj▒, czyli tworzenie kodu wykonywalnego przez dzia│aj▒cy, wykonywany inny kod. Kod bΩdzie siΩ m≤g│ sam doskonaliµ, przetwarzaµ i modyfikowaµ, niczym dzisiaj robi to z danymi. Podobnie dane bΩd▒ generowa│y i modyfikowa│y inne dane.

Co na ko±cu? Pewnie nast▒pi totalna integracja kodu z danymi. Do tego stopnia, ┐e ca│kowicie zniknie podzia│ i wszyscy o nim zapomn▒. Kod i dane bΩd▒ tworzyµ jedno╢µ. Nie wiem jak Ty, ale ja nie jestem ju┐ w stanie tego sobie wyobraziµ. MogΩ jednak spr≤bowaµ przewidzieµ konsekwencje tego. W tym celu pos│u┐Ω siΩ por≤wnaniem do ludzkiego m≤zgu. Jest to najdoskonalszy komputer, a zarazem jakby przeciwie±stwo komputer≤w znanych nam dzisiaj: analogowy, powolny, omylny, ale za to inteligentny, ucz▒cy siΩ, my╢l▒cy, jednym s│owem ludzki. O inteligencji – tak tej naturalnej, jak i sztucznej du┐o by tu pisaµ. Nie o tym jednak mia│o byµ. Przyjrzyjmy siΩ budowie m≤zgu. Z│o┐ony jest on z kom≤rek nerwowych. Ka┐da przekazuje impulsy. MiΩdzy nimi wytwarzaj▒ siΩ po│▒czenia. I co najwa┐niejsze: tak samo zbudowane, tego samego typu, mo┐e nawet te same kom≤rki pe│ni▒ funkcjΩ zar≤wno "kodu" (przetwarzaj▒ dane, my╢l▒), jak i "bazy danych" (przechowuj▒ dane, zapamiΩtuj▒). Na tej podstawie pozwolΩ sobie wysun▒µ tu jak┐e ╢mia│▒ i wykraczaj▒c▒ poza horyzonty niniejszego artyku│u tezΩ. Moim zdaniem z chwil▒, gdy zniknie rozr≤┐nienie miΩdzy kodem a danymi, kiedy nast▒pi ich kompletna integracja, komputer zacznie my╢leµ. Pojawi siΩ ju┐ nie tyle sztuczna, co, mo┐e tak to nazwΩ, prawdziwa (bo przecie┐ nie naturalna) inteligencja.

Inne sprawy

NajciΩ┐sze ju┐ za nami. Teraz przejdΩ do temat≤w nieco l┐ejszych i bardziej przyziemnych. Kr≤tka przerwa. Sp≤jrz na pasek przewijania po prawej. Widzisz, ile jeszcze zosta│o? Nie zniechΩcaj siΩ jednak! Nie warto! Zapraszam zatem do dalszej lektury...

Zintegrowana pomoc

Wa┐nym elementem ka┐dego programu jest do│▒czona do niego pomoc. Jest to zbi≤r dokumentacji tekstowej w jakim╢ formacie, do kt≤rej mo┐na siΩ odwo│ywaµ z poziomu danego programu. W systemie przysz│o╢ci, jaki przedstawi│em w I czΩ╢ci, gdzie zniknie podzia│ na programy integracja nie mo┐e omin▒µ tak┐e do│▒czonych do nich pomocy. Bo je╢li mam np. problemy z sieci▒ lokaln▒, to mnie nie interesuje, gdzie znajduj▒ siΩ informacje na temat jak je rozwi▒zaµ. Mo┐e to byµ pomoc systemowa, mo┐e dokumentacja do mojej karty sieciowej. R≤wnie dobrze informacje takie mogΩ znale╝µ w pomocy do programu, kt≤rego u┐ywam do obs│ugi tej sieci. Tak wiΩc mnie nie interesuje podzia│ na poszczeg≤lne pliki pomocy. Mnie interesuje informacja, jak▒ chcΩ odnale╝µ. Wszelkie pomoce i dokumentacje powinny byµ ze sob▒ zintegrowane.

Jak taka integracja mog│aby byµ zrealizowana? Uwa┐am, ┐e system powinien interpretowaµ zapytanie u┐ytkownika, a nastΩpnie przeszukiwaµ wszystkie znane pliki pomocy, dla kt≤rych istnieje jakiekolwiek prawdopodobie±stwo, ┐e informacje na szukany temat siΩ tam znajd▒. Wyniki wyszukiwania bΩd▒ zaprezentowane u┐ytkownikowi i jednym klikniΩciem bΩdzie on m≤g│ otworzyµ wybrany plik pomocy w danym miejscu. Natomiast informacje zebrane podczas wyszukiwania by│yby zapisane w jakiej╢ tymczasowej pamiΩci, co przyspieszy│oby kolejne wyszukiwania. Jakie pliki by│yby przeszukiwanie? Takie, w jakich najczΩ╢ciej zapisywane s▒ wszelkie pomoce i dokumentacje. Mog│yby to byµ: hlp (WinHelp), chm (HTMLHelp), htm (HTML), txt (tekst), doc (Word), wri (WordPad) oraz pdf (Protable Document Format). Zadawanie zapyta± mog│oby siΩ odbywaµ na systemowej konsoli. Przeszukiwanie pomocy by│oby po prostu jednym z rodzaj≤w czynno╢ci, jakie system mo┐e wykonaµ po wydaniu polecenia. W odpowiedzi generowany by│by dokument np. strona HTML, w kt≤rej zaprezentowane by│yby rezultaty wyszukiwania.

Na jakiej zasadzie odbywa│oby siΩ samo wyszukiwanie? Algorytm jest bardzo prosty, a przy tym zaskakuj▒co skuteczny. Zapytanie mog│oby byµ zadane w lu╝no sformu│owanym jΩzyku naturalnym. Na ka┐dej stronie wyszukiwane by│yby wszystkie wpisane s│owa. Im wiΩcej ich zostanie znalezionych, tym wiΩcej punkt≤w otrzyma dana strona. Jako rezultaty wyszukiwania zaprezentowane zostan▒ wy│▒cznie strony, kt≤re otrzyma│y najwiΩcej punkt≤w. To, ile punkt≤w dodaje stronie dane s│owo je╢li zostanie na niej znalezione zale┐y od tego, jak czΩsto s│owo to wystΩpuje tzn. na jak wielu stronach, ile razy zostanie znalezione. Je╢li wystΩpuje czΩsto, ma ma│e znaczenie dla rezultat≤w wyszukiwania. Jest bowiem wtedy prawdopodobne, ┐e jest to jakie╢ zwyk│e s│owo popularnie nie maj▒ce nic wsp≤lnego w szukanym zagadnieniem. Je╢li za╢ dane s│owo wystΩpuje tylko na kilku stronach – jego odnalezienie bΩdzie decyduj▒ce dla uznania danej strony jako spe│niaj▒cej kryteria wyszukiwania. Jest bowiem prawdopodobne, ┐e jest to s│owo zwi▒zane z wyszukiwanym tematem. O wa┐no╢ci danego s│owa mog│aby tak┐e decydowaµ jego d│ugo╢µ. Je╢li jest kr≤tkie, ma ma│e znaczenie, gdy┐ jest to najprawdopodobniej jaki╢ sp≤jnik czy inna ma│o znacz▒ca dla tre╢ci zapytania czΩ╢µ zdania. Je╢li za╢ jest d│u┐sze – zostanie uznane za istotne.

Pisz▒c o integracji pomocy mam tu na my╢li nie tylko pomoce do│▒czane do program≤w, ale wszelkiego rodzaju kursy, samouczki, tutoriale czy inne pliki zawieraj▒ce tekst. Nie mo┐na przecie┐ zapominaµ o innych tekstach, jakie mog▒ wystΩpowaµ podczas u┐ywania komputera. Zintegrowane wyszukiwanie powinno je tak┐e obejmowaµ.

Nie mo┐na te┐ zapomnieµ o sieci. W ko±cu Internet to bezcenne ╝r≤d│o informacji i dokumentacji. I chocia┐ informacje te nie s▒ w ┐aden spos≤b zorganizowane ani te┐ usystematyzowane, to istniej▒ przecie┐ portale. Wyposa┐one s▒ one w wyszukiwarki oraz w katalogi. Je╢li serwisy WWW tego typu potrafi│yby wsp≤│pracowaµ z systemem operacyjnym, r≤wnie┐ zasoby globalnej sieci mog│yby zostaµ w│▒czone do wyszukiwania.

M≤wi▒c o przeszukiwaniu w warunkach, jakie panuj▒ obecnie piszΩ o przeszukiwaniu plik≤w HTML, tekstowych i innych. Ale uwa┐am, ┐e w przysz│o╢ci powstanie jeden...

Uniwersalny format hipertekstu sformatowanego

Na pocz▒tku istnienia jΩzyka HTML wprowadzono w nim takie znaczniki, jak <ABBR>, <ACRONYM>, <ADDRESS>, <CITE> czy <STRONG>. Oznaczaj▒ one, ┐e objΩte nimi informacje s▒ np. danymi adresowymi czy s▒ bardzo wa┐ne. Jednym s│owem – opisuj▒ TREª╞. To, jak tekst zostanie przedstawiony na ekranie, zale┐y od przegl▒darki i jej ustawie±. Podobnie je╢li napiszesz w kodzie znacznik <H1>, czy <P> bez ┐adnych parametr≤w, przegl▒darka sformatuje tekst zgodnie z ustawieniami domy╢lnymi. W Microsoft Internet Explorer mo┐na te ustawienia zmieniaµ poprzez NarzΩdzia > Opcje internetowe... > Og≤lne > Kolory / Czcionki. Jednak z czasem webmasterzy zapomnieli o znacznikach definiuj▒cych znaczenie tekstu. ZaczΩli wszΩdzie gdzie tylko jest to mo┐liwe kazaµ przegl▒darce pokazywaµ stronΩ dok│adnie tak, jak sobie tego ┐ycz▒. Gdyby mogli, zmusiliby przegl▒darkΩ do zmiany rozdzielczo╢ci ekranu. Pocz▒tkowo do definiowania wygl▒du s│u┐y│ znacznik <FONT> i <DIV>. Wreszcie powsta│y arkusze styl≤w kaskadowych CSS. Dzi╢ nie u╢wiadczysz ju┐ prawie w Globalnej PajΩczynie strony, kt≤rej tekst by│by sformatowany domy╢ln▒ czcionk▒ Times New Roman w kolorze czarnym na jednolitym bia│ym tle. Ka┐dy tw≤rca strony dok│adnie projektuje ka┐dy jej piksel. Ma to swoje zalety. Webmastering sta│ siΩ profesj▒, kt≤ra wymaga od cz│owieka wielu umiejΩtno╢ci, jak tworzenie grafiki, tekstu, odpowiednia organizacja, dobry uk│ad wizualny i ciekawa tre╢µ. Ma to jednak i swoje wady. Pomijaj▒c ju┐ fakt, ┐e czΩsto jeste╢my zmuszeni do ogl▒dania stron, kt≤re choµ o ciekawej tre╢ci, nie odpowiadaj▒ nam wizualnie, to wystarczy inna ni┐ zak│adana rozdzielczo╢µ ekranu, a ju┐ bro± Bo┐e inna ni┐ jedna z dw≤ch "jedynie s│usznych" przegl▒darka, a ca│y uk│ad graficzny strony idzie na marne i sprawia, ┐e staje siΩ ona zupe│nie nieczytelna. W takich chwilach chcia│oby siΩ, aby ogl▒dana strona by│ chocia┐by prostsza, z mniejsz▒ ilo╢ci▒ grafiki, tabel, ramek i innych takich wodotrysk≤w, ale ┐eby za to by│a czytelna na ka┐dej przegl▒darce.

Obserwuj▒c tak ten rozw≤j technologii WWW odnoszΩ wra┐enie, ┐e idzie on w niew│a╢ciwym kierunku. Czy nie lepiej by│oby opracowaµ format, w kt≤rym znaczniki opisywa│yby TREª╞, a nie FORM╩ dokumentu? Taki przyk│adowy znacznik m≤g│by byµ interpretowany jako tytu│, nag│≤wek, akapit, podpis autora, fragment kodu ╝r≤d│owego, cytat itp. O wygl▒dzie, czcionce, kolorach decydowa│aby przegl▒darka. Mo┐na by│oby przegl▒darkΩ konfigurowaµ i ustawienia takie stosowane by│yby do wszystkich przegl▒danych dokument≤w. Moim zdaniem taki format jest ╢wiatu potrzebny i bΩdzie coraz bardziej. Ta potrzeba bΩdzie siΩ wzmagaµ wraz z postΩpuj▒c▒ integracj▒ wszelkich komponent≤w software’u. W formacie takim istnia│by spis tre╢ci, indeks. M≤g│by byµ w prosty spos≤b przeszukiwany. A pokazywany by│by tak▒ czcionk▒ i w takich kolorach, w jakich ┐yczy sobie tego u┐ytkownik. W odniesieniu do poprzedniego paragrafu dokumenty w takim ujednoliconym formacie │atwiej by│oby przeszukiwaµ i og≤lnie integrowaµ ze sob▒.

Teksty

W paragrafie tym chcia│bym zwr≤ciµ Twoj▒ uwagΩ na rzecz, nad kt≤r▒ zwykle siΩ nie zastanawiamy. Podczas u┐ywania komputera czΩsto stykamy siΩ z r≤┐nymi tekstami. By│o tak ju┐ w trybie znakowym w DOSie, jest tak i Windows. Pomimo istnienia okien, r≤┐nych pask≤w, ikon tekst stanowi wci▒┐ podstawowy spos≤b komunikacji u┐ytkownika z komputerem. Z pewno╢ci▒ d│ugo jeszcze tak pozostanie.

Teksty zawarte w programach, a definiowane przez programist≤w podczas ich tworzenia s▒ czΩsto ma│o doskona│e. Dochodzi do wielu niepoprawnych pod wzglΩdem gramatycznym, jak i logicznym sformu│owa±. Przyk│ad: 2 zaznaczonych plik≤w. W wielu sytuacjach komputerowi przychodzi opr≤cz wy╢wietlania zdefiniowanych wcze╢niej sformu│owa± konstruowaµ w│asne. I to s▒ w│a╢nie tego konsekwencje. Jednak i pod tym wzglΩdem da siΩ zaobserwowaµ pewien rozw≤j. Na przyk│ad w Windows po klikniΩciu M≤j komputer po lewej stronie pojawiaj▒ siΩ r≤┐ne informacje: opr≤cz ikony oraz pisanej du┐▒ czcionk▒ nazwy tak┐e informacja na temat zaznaczonego elementu, sekcja Zobacz te┐: i r≤┐ne inne dane stosownie do sytuacji. Je╢li zaznaczysz jeden element – wy╢wietlone zostan▒ szczeg≤│owe informacje o nim. Je╢li zaznaczysz klika – wypisane zostan▒ ich nazwy. Je╢li zaznaczonych element≤w bΩdzie wiele – wy╢wietlona zostanie jedynie ich ilo╢µ. W│a╢nie tak powinny byµ formu│owane wszelkie wypowiedzi tekstowe komputera – w spos≤b inteligentny, czytelny, a jednocze╢nie stosowny do sytuacji. »eby nie dochodzi│o do absurd≤w, nie by│o b│Ωd≤w gramatycznych, a informacje by│y prezentowane w formie zrozumia│ej i stosownej do sytuacji. Nie zawsze takiej samej. W systemie przysz│o╢ci nie ma miejsca dla informacji typu: Zaznaczonych element≤w: 0. Zamiast tego bΩdzie »aden element nie jest zaznaczony. Niby ma│o wa┐ny temat, a jednak siΩga on dalej. Tak┐e wszelkie wyniki wyszukiwania, komunikaty o b│Ωdach, informacje i pytanie powinny byµ odpowiednio przetwarzane i formu│owane w "inteligentny" spos≤b. Komunikaty o b│Ωdach to chyba takie informacje, w kt≤rych najczΩ╢ciej maj▒ miejsce r≤┐ne absurdy i nie╢cis│o╢ci tak logiczne, jak i jΩzykowe. Zamiast tego mog│oby pokazywaµ siΩ okno informuj▒ce ┐e wyst▒pi│ b│▒d, w jakiej sytuacji, w jakim pliku, jakiego typu. Korzystaj▒c z pomocy wy╢wietlane by│yby od razu przewidziane przez autor≤w informacje o tym b│Ωdzie, jakie s▒ jego najczΩstsze przyczyny i jak mo┐na je usun▒µ. Inny przyk│ad: Zaznaczam wiele plik≤w. Zamiast prezentowaµ nazwy ich wszystkich, kiedy siΩ nie mieszcz▒ na ekranie albo tylko wy╢wietlaµ informacjΩ o ich ilo╢ci m≤g│by siΩ w tym miejscu znale╝µ taki tekst:

Zaznaczone jest 36 plik≤w.
WiΩkszo╢µ z nich to pliki ukryte. Kilka ma rozszerzenie .bmp. Pozosta│e maj▒ r≤┐ne. Og≤lny rozmiar: 3 MB. Le┐▒ one w folderze Windows. Co chcesz z nimi zrobiµ?
* Skopiowaµ
* Przenie╢µ
* Usun▒µ
* Inne [Tu pole do wprowadzania w│asnych polece± bΩd▒ce │▒cznikiem do systemowej konsoli]
Patrz tak┐e: System, M≤j komputer

R≤┐ne wersje jΩzykowe tekst≤w to powa┐ny problem na komputerze. Wiele os≤b nie zna jΩzyka angielskiego, w kt≤rym jest wiΩkszo╢µ oprogramowania. Zdarzaj▒ siΩ czasem programy w innych jΩzykach np. po niemiecku. Wtedy jest ju┐ bardzo du┐y problem. Tak┐e jako╢µ t│umaczenia i polonizacji program≤w pozostawia wiele do ┐yczenia. Do tego stopnia, ┐e spore grono os≤b woli programy i gry w wersjach angielskich. CzΩsto instalatory pytaj▒ nas czy zast▒piµ istniej▒c▒ bibliotekΩ w│asn▒, gdy┐ s▒ one w innych wersjach jΩzykowych.

My╢l▒c nad tym tematem przypomnia│em sobie jeden z projekt≤w, nad kt≤rymi nie tak dawno pracowa│em. Chodzi o program wyposa┐ony w sztuczn▒ inteligencjΩ, z kt≤rym mo┐na sobie "pogadaµ" pisz▒c do niego na specjalnej konsoli. A dok│adnie o jedno z rozwi▒za±, jakie tam zastosowa│em. W centralnym "m≤zgu" programu, gdzie przetwarzane by│y wypowiedzi i nastΩpowa│o "my╢lenie" (przetwarzanie pytania na odpowied╝) wypowiedzi sk│ada│y siΩ nie z wyraz≤w jako ci▒g≤w znak≤w, ale z liczb. Ka┐da taka liczba reprezentuje jeden wyraz. A dok│adnie jego znaczenie. Bo wiele wyraz≤w zupe│nie r≤┐nych od siebie mo┐e mieµ to samo lub podobne znaczenie. Z kolei podobne lub nawet te same wyrazy w zale┐no╢ci od kontekstu mog▒ znaczyµ zupe│nie co innego. Tak┐e ten sam wyraz w r≤┐nych formach gramatycznych brzmi r≤┐nie, ma r≤┐ne ko±c≤wki, a znaczy przecie┐ wci▒┐ to samo. Czasami ca│y ci▒g wyraz≤w, bΩd▒c pewnym utartym w mowie lub w pisowni wyra┐eniem interpretuje siΩ razem i ma ono pojedyncze znaczenie. Gdyby tak zastosowaµ tak▒ technologiΩ w systemie przysz│o╢ci?... Zamiast gotowych ci▒g≤w znak≤w w programach i plikach zapisane by│yby jedynie liczby – kody znacze± poszczeg≤lnych wyraz≤w w wypowiedzi i algorytmy ich przetwarzania oraz prezentowania. Centralna baza wyraz≤w oraz modu│ formu│uj▒cy wypowiedzi by│by natomiast czΩ╢ci▒ samego systemu. To on zajmowa│by siΩ przetwarzaniem ci▒gu liczb na gotow▒ wypowied╝ z uwzglΩdnieniem wszelkich regu│ gramatycznych jΩzyka. Czy jest to mo┐liwe? Wraz z rosn▒c▒ moc▒ obliczeniow▒ komputer≤w potrafi▒ one coraz wiΩcej rzeczy, kt≤re dotychczas by│y tylko domen▒ ludzi. Coraz lepsi informatycy pisz▒ tak┐e coraz doskonalsze algorytmy. Rozpoznawanie mowy ci▒g│ej, zeskanowanego tekstu, odczyt, zapis i kompresja obrazu, d╝wiΩku, filmu (tak┐e w czasie rzeczywistym) to tylko niekt≤re z takich rzeczy. S▒dzΩ, ┐e wraz z pojawieniem siΩ wystarczaj▒co szybkich maszyn bΩd▒ one potrafi│y formu│owaµ poprawne logicznie i gramatycznie wypowiedzi. Nawet w jΩzyku tak skomplikowanym, jak jΩzyk polski.

Jakie by│yby zalety takiego sposobu generowania tekstu przez komputer? Przede wszystkim mo┐liwe by│oby zniesienie bariery jΩzykowej. Te same kody bowiem mog│yby byµ t│umaczone na teksty w r≤┐nych jΩzykach. Przynajmniej tych podobnych do siebie. Szybko z pewno╢ci▒ pojawi│yby siΩ modu│y zdolne do t│umaczenia w czasie rzeczywistym kod≤w z tych przeznaczonych dla jΩzyka angielskiego na jΩzyk polski i inne podobne. Zmieniaj▒c ustawienia dotycz▒ce np. jΩzyka czy stylu, jakim maj▒ byµ pisane teksty zmienia│yby siΩ te parametry dla ka┐dego miejsca systemu i wszystkich program≤w. ZniknΩ│yby problemy z wersjami jΩzykowymi r≤┐nych bibliotek i innych plik≤w. Wyobra┐am sobie, jak u┐ytkownik zmienia ustawienia systemu, aby wszΩdzie zamiast polecenia Otw≤rz by│o Wczytaj czy co╢ takiego...

Zintegrowane wyszukiwanie

Posiadasz nagrywarkΩ CD-RW. Co jaki╢ czas nagrywasz za jej pomoc▒ efekty swojej pracy. Potem usuwasz je z dysku. Teraz chcia│by╢ odnale╝µ jaki╢ dokument. Znasz jego nazwΩ. Nie wiesz natomiast, czy znajduje siΩ on na dysku, czy na jednym z nagranych przez Ciebie CD-ROM≤w. Dobrym rozwi▒zaniem by│oby przeszukanie jednocze╢nie folder≤w z dokumentami na dysku oraz skatalogowanych CD-ROM≤w. W dzisiejszych czasach nie jest to jednak mo┐liwe. Do przeszukiwania dysku nale┐y u┐yµ systemowego mechanizmu Wyszukaj > Pliki lub foldery..., do przeszukania CD-ROM≤w za╢ jednego z program≤w kataloguj▒cych, jak Where Is It?, czy rodzimy Katalog CD. Pisz▒c o integracji wszystkich element≤w oprogramowania, a tak┐e ich pomocy, nie spos≤b pomin▒µ integracji r≤┐nych mechanizm≤w wyszukiwania. Wyszukiwanie jest bowiem bardzo wa┐n▒ dziedzin▒ dzia│ania komputera. CzΩ╢ciowo opisa│em ju┐ ten problem w paragrafie Zintegrowana pomoc. Przeszukiwanie plik≤w pomocy to jednak tylko fragment szerszego zagadnienia.

Je╢li chcemy, aby komputer by│ w stanie w spos≤b sp≤jny przeszukiwaµ r≤┐nego rodzaju dane, musi on je tak┐e w taki spos≤b przechowywaµ. Taka integracja danych odbywa siΩ ju┐ od jakiego╢ czasu. Efekty tego s▒ r≤┐ne – czasem tak┐e negatywne. Jednak proces ten dalej postΩpuje. Przyk│adem jest Rejestr Windows – centralna baza danych o konfiguracji sprzΩtu, systemu, program≤w i wiele innych informacji. Gdyby do takiej integralnej bazy dodaµ informacje indeksowe np. na temat s│≤w kluczowych w plikach pomocy i inne, kt≤re mog│yby przyspieszyµ wyszukiwanie, baza taka by│aby naprawdΩ uniwersalna. Wyobra╝ sobie, ┐e system zbiera wszelkie informacje – o plikach i folderach na dysku, o skatalogowanych CD-ROMach, o Twoich upodobaniach i preferencjach, o Internecie, plikach pomocy na dysku, sieci lokalnej i wielu innych sprawach – w jednym miejscu. I ┐e umo┐liwia Ci sp≤jne przeszukiwanie tak zebranych danych. Oczywi╢cie trudno wyobraziµ sobie, ┐eby system prowadzi│ spis wszystkich folder≤w na dysku czy wszelkich informacji, na jakie tylko natkn▒│ siΩ w Internecie. Dysk szybko by siΩ zape│ni│, a baza taka wcale nie przyspiesza│aby wyszukiwania. To nie mia│oby sensu! Rozwi▒zanie tego problemu przedstawi│em, niejako przy okazji, w I czΩ╢ci w paragrafie Jak to dzia│a? rozdzia│u Konsola. Taka p│aska lista obiekt≤w identyfikowanych przez nazwy i typ stanowi│aby jakby pamiΩµ tymczasow▒, cache. ZapamiΩtywane by│yby tak ostatnio odnalezione obiekty. Starsze i nie u┐ywane by│yby usuwane. Je╢li teraz spr≤bujΩ wyszukaµ co╢, system przeszuka najpierw tΩ listΩ i ju┐ zaprezentuje wstΩpne wyniki. NastΩpnie, o ile nie przerwΩ procesu stwierdzaj▒c, ┐e odnalaz│em ju┐ to czego szuka│em, wyszukiwanie bΩdzie kontynuowane w r≤┐nych zakamarkach systemu: w plikach i folderach, w Rejestrze, przeszukane zostan▒ r≤┐ne katalogi i spisy, pliki tekstowe i inne pomoce, a moje zapytanie powΩdruje nawet do wyszukiwarek internetowych.

Proces zadawania zapytania: przede wszystkim │atwiej. Tu inteligencj▒ ma siΩ wykazaµ komputer w jego interpretowaniu, a nie u┐ytkownik w jego formu│owaniu. A wiΩc bez takich "dodatk≤w", jak Rozr≤┐niaj wielko╢µ liter czy UwzglΩdniaj tylko ca│e ci▒gi. Po prostu – wpisujΩ listΩ wyraz≤w do wyszukiwania i ju┐. Ewentualnie piszΩ, jakie miejsca ma przeszukaµ i gdzie najbardziej spodziewam siΩ tego znale╝µ. Wpisywanie zapytania mog│oby odbywaµ siΩ na systemowej konsoli. Tzn. wyszukiwanie by│oby jedn▒ z jej funkcji.

Wyniki wyszukiwania: powinny byµ w czytelnej formie. Np. w postaci strony WWW. Sformu│owane w spos≤b inteligentny. »eby nie dochodzi│o do absurd≤w, jak odnalezienie kilkuset podobnych plik≤w w jednym folderze. Zamiast tego powinno pisaµ, ┐e s▒ tam, ile ich jest i jakie maj▒ cechy wsp≤lne. Albo ┐e znaleziono kilka tysiΩcy stron WWW. Nie lepiej zaprezentowaµ te najpopularniejsze lub najlepsze wg pewnych kryteri≤w oraz poprosiµ o ewentualne u╢ci╢lenie zapytania?

Wyszukiwanie nie powinno odbywaµ siΩ na zasadzie pytanie -> odpowied╝. Powinna byµ lepsza interakcja. Np. je╢li zapytanie jest nie zrozumia│e lub zbyt og≤lne (znaleziona zosta│aby zbyt du┐a ilo╢µ wynik≤w), system, po wstΩpnym zaznajomieniu siΩ z tym, co ewentualnie m≤g│by znale╝µ, zada jakie╢ pytanie pomocnicze pozwalaj▒ce u╢ci╢liµ kryteria wyszukiwania. Inny przyk│ad: wyszukiwanie w╢r≤d wynik≤w aktualnego wyszukiwania. Oczywi╢cie klikniΩcie na kt≤rym╢ z rezultat≤w wyszukiwania pozwoli│oby na uzyskanie dodatkowych mo┐liwo╢ci – otwarcie konkretnego dokumentu, przyjrzenie siΩ szczeg≤│om danej pozycji, dok│adniejsze przeszukiwanie.

Baza danych

Je╢li w systemie przysz│o╢ci ma byµ zintegrowana baza danych r≤┐nego rodzaju, kt≤ra bΩdzie w spos≤b inteligentny przeszukiwana, baza taka musi mieµ odpowiedni▒ strukturΩ, budowΩ i spos≤b dzia│ania. W paragrafie tym pozwolΩ sobie na opisanie nieco spraw technicznych – mianowicie pomys│u, kt≤ry przyszed│ mi do g│owy ju┐ dawno temu, bo lutym 1999 roku.

Wyobra╝ sobie program: masz plan miasta. Klikasz na dany blok – komputer podaje wszelkie informacje o nim, jak ilo╢µ mieszka±c≤w, liczba kondygnacji. Zaznaczasz dany obszar jako zagro┐ony – komputer podaje ilo╢µ mieszka±c≤w do ewakuacji, ilo╢µ potrzebnych ╢rodk≤w transportu, oblicza koszty. Jednym s│owem, powinno tu dzia│aµ wiele r≤┐nych baz danych nawzajem powi▒zanych ze sob▒.

Podobnie jest z systemem przysz│o╢ci. Tu tak┐e zachodziµ bΩdzie potrzeba odwo│ywania siΩ do wielu r≤┐nych danych. M≤j pomys│ polega na tym, aby by│a to jedna "rozmyta" baza danych typu p│askiego – w tym sensie, ┐e dane nie bΩd▒ podzielone na ┐adne bloki, tabele itp. Podstawow▒ jednostk▒ danych by│by "rekord" – kt≤ry m≤g│by mieµ dowoln▒ strukturΩ, sk│adaµ siΩ z dowolnych p≤l (i metod, czyli kodu na nim operuj▒cego – p. rozdzia│ Idea unifikacji kodu i danych) niezale┐nie do pozosta│ych rekord≤w. Za ka┐dym razem przeszukiwane by│yby wszystkie rekordy. Do ich przeszukiwania u┐ywane by│yby algorytmy samego systemu, ale rekordy bazy tak┐e mog│yby zawieraµ kod, kt≤ry by│yby zdolny do operowania na zgromadzonych tam danych. Dane mog│yby byµ r≤┐nego rodzaju. By│by te┐ typ uniwersalny – niesformatowane binaria o dowolnej d│ugo╢ci. Jednym z typ≤w by│oby │▒cze – odno╢nik do innego rekordu (poprzez jego identyfikator lub bezwzglΩdn▒ pozycjΩ w pliku bazy, je╢li rekordy nie s▒ indeksowane).

Pisz▒c baza p│aska mia│em na my╢li to, ┐e nie jest ona podzielona na jakiekolwiek tabele czy inne tego typu jednostki. Jednak aby przeszukiwaµ tak du┐▒ ilo╢µ danych w takiej formie, konieczna jest ich organizacja w warstwy. Wyobra╝ sobie piramidΩ. Ka┐dy poziom to jedna warstwa bazy. Te warstwy, kt≤re le┐▒ na samej g≤rze mieszcz▒ ma│o danych – s▒ to bufory tymczasowe. S▒ przechowywane w pamiΩci i przeszukiwane w pierwszej kolejno╢ci. Ni┐ej s▒ wiΩksze warstwy – te bazy przechowywane s▒ na dysku. Je╢li u┐ytkownik sobie tego ┐yczy, przeszukane mog▒ tez zostaµ warstwy najni┐sze – s▒ to bazy podstawowe, przechowywane na dysku (byµ mo┐e w postaci skompresowanej) zawieraj▒ce bardzo du┐o danych. Ostatecznie przeszukane mog▒ zostaµ opr≤cz tych baz inne miejsca systemu – pliki, Rejestr, przepytane wyszukiwarki internetowe. Dane ostatnio u┐yte – edytowane, wyszukane b▒d╝ w jaki╢ inny spos≤b wyr≤┐nione s▒ kopiowane lub przenoszone (w zale┐no╢ci do przyjΩtej konwencji, czy dane w r≤┐nych warstwach bazy mog▒ siΩ powtarzaµ) do kt≤rej╢ z warstw wy┐szego poziomu. Im wy┐sza warstwa, tym bardziej dane tam przechowywane maj▒ charakter tymczasowy, kr≤cej tam przebywaj▒ i wiΩksze jest prawdopodobie±stwo, ┐e mog▒ zostaµ usuniΩte lub zmodyfikowane. »adne bowiem dane z takiej bazy nie s▒ cenne. Ka┐de mo┐na usun▒µ bez jaki╢ wiΩkszych konsekwencji. Ka┐dy rekord ma tak▒ sam▒, ma│▒ warto╢µ dla systemu. Dlatego mo┐e siΩ zdarzyµ, ┐e jakie╢ dane zostan▒ utracone, zmodyfikowane lub obciΩte o mniej istotne szczeg≤│y w zale┐no╢ci od tre╢ci (przybli┐one).

Baza taka mo┐e osi▒gaµ ogromne rozmiary i byµ rozproszona jest po wielu plikach, folderach, a mo┐e nawet dyskach czy komputerach. Dlatego przy wyszukiwaniu przeszukuje siΩ tylko najwy┐sze jej warstwy, a nastΩpnie uwzglΩdnia siΩ te┐ dane, do kt≤rych odnosz▒ siΩ linki (│▒cza) znalezione w przeszukiwanych rekordach. Takie linki w bazie pe│ni│yby niebagateln▒ rolΩ przyspieszaj▒c znacznie wyszukiwanie. Pisz▒c o prΩdko╢ci wyszukiwania mam na my╢li nie tyle czas przeszukiwania ca│ej bazy, co czas do odnalezienia poszukiwanych przez u┐ytkownika informacji, po czym proces nie musi byµ ju┐ dalej i dog│Ωbniej kontynuowany.

Inteligentnie generowane dokumenty

W I czΩ╢ci opisa│em konsolΩ i do dzi╢ uwa┐am j▒ za jedn▒ z najwa┐niejszych rzeczy. Ale od tamtego czasu wymy╢li│em te┐ co╢, co doskonale stanowi jej uzupe│nienie. Nie jest to rzecz skomplikowana. Wyobra╝ sobie: zdajesz na konsoli zapytanie do wyszukiwania. Prezentowane s▒ jego rezultaty. W jakiej formie? Jak pisa│em powy┐ej, mog│aby to byµ strona WWW – w formacie HTML. Ale to jest szczeg≤│. Chodzi o jej formΩ. By│by to dokument hipertekstowy. Tekst, sformu│owany w spos≤b inteligentny i przystΩpny dla u┐ytkownika, by│by sformatowany r≤┐nymi czcionkami i kolorami tak, aby pozostaj▒c czytelnym i estetycznym formatowania takie zwiΩksza│y jeszcze jego funkcjonalno╢µ. Hipertekst polega│by na tym, ┐e klikniΩcie na kt≤rym╢ z hiper│▒czy spowodowa│oby wykonanie przez system jakiej╢ czynno╢ci – i wcale nie mam tu na my╢li przeskoku do innego dokumentu. Albowiem dokumenty takie generowane by│yby na bie┐▒co.

W systemie przysz│o╢ci dokumenty takie bΩd▒ bardzo potrzebne. Ich nazwa, widoczna w tytule tego paragrafu, nie jest mo┐e zbyt szczΩ╢liwa, ale chodzi przecie┐ o sam▒ ideΩ. 2 przyk│ady:

Zadajesz na konsoli zapytanie Poszukaj czego╢ na temat formatu jpg. Po jakim╢ czasie na ekranie ukazuje siΩ dokument prezentuj▒cy tre╢µ podobn▒ do poni┐szej:

Zada│e╢ pytanie na temat: "format jpg"
W folderze "C:\Moje dokumenty\Moje obrazy" znalaz│em 210 plik≤w o rozszerzeniu jpg zgromadzonych w 23 podfolderach
W pomocy do programu "Paint" znalaz│em temat "Formaty plik≤w"
W Internecie znalaz│em stronΩ: http://www.formatjpg.com.pl
WiΩcej wynik≤w
Przeszukaj te wyniki
Zmie± zapytanie
Patrz tak┐e

Podkre╢lone fragmenty to hiper│▒cza, na kt≤re mo┐na klikn▒µ.

Drugi przyk│ad: Uruchamiasz program. Na ekranie pojawia siΩ dokument, w kt≤rym znajduj▒ siΩ: pytanie Co chcesz zrobiµ?, lista r≤┐nych czynno╢ci do wykonania w tym programie, lista ostatnio u┐ywanych dokument≤w tego programu oraz inne linki. Znajduje siΩ tez tu pole, do kt≤rego mo┐na wpisaµ w│asne polecenie. BΩdzie ono przekazane na systemow▒ konsolΩ. Z tym, ┐e polecenie tam wpisane bΩdzie interpretowane w kontek╢cie danego programu. Z takim programem na pewno │atwiej zacz▒µ pracΩ, ni┐ z takim, gdzie trzeba za ka┐dym razem otwieraµ jaki╢ dokument i samemu decydowaµ szczeg≤│owo o przeprowadzanych czynno╢ciach.

Takie hipertekstowe, sformatowane, formu│owane w spos≤b inteligentny i przyjazny dla u┐ytkownika, byµ mo┐e u┐ywaj▒ce opisanego tu w paragrafie Uniwersalny format dla hipertekstu sformatowanego formatu dokumenty znalaz│yby te┐ w systemie przysz│o╢ci inne zastosowania bΩd▒c, jak ju┐ pisa│em, doskona│ym uzupe│nieniem funkcjonalnym systemowej konsoli. Zast▒pi│yby dzisiejsze kreatory. Byµ mo┐e to taki w│a╢nie dokument, a nie pulpit, wita│by nas po uruchomieniu komputera? Przecie┐ ju┐ dzi╢ mamy to w programie Microsoft Outlook – wita nas generowany na poczekaniu dokument HTML.

Sp≤jno╢µ komunikat≤w

Bez zbΩdnego wstΩpu przejdΩ od razu do rzeczy: wiele komunikat≤w tekstowych jest "sk│adanych" przez r≤┐ne modu│y, biblioteki czy nawet r≤┐ne czΩ╢ci tego samego programu. W efekcie czΩsto s▒ ma│o czytelne, b│Ωdne, a nawet absurdalne. Og≤lnie znane s▒ humorystyczne zrzuty ekranu jak ten, w kt≤rym tre╢µ komunikatu g│osi, ┐e wyst▒pi│ nieznany b│▒d podczas gdy tytu│ okna to Brak pamiΩci. Albo kiedy komunikat g│osi, ┐e biblioteka #%$&#^$#*(&^% nie mo┐e zostaµ za│adowana. Albo kiedy <Nieznany> spowodowa│ wyj▒tek w module <Nieznany>. System przysz│o╢ci ma byµ sp≤jny. Wszystkie jego modu│y maj▒ zgodnie wsp≤│pracowaµ dla dobra i prostoty obs│ugi u┐ytkownika. Tak┐e komunikaty maj▒ byµ poprawne, przejrzyste, czytelne. A ju┐ na pewno nie mo┐e dochodziµ do tego, ┐eby by│y b│Ωdne czy absurdalne. O ile my, jak u┐ytkownicy dzisiejszych komputer≤w jeste╢my do takich sytuacji przyzwyczajeni, o tyle nastΩpne pokolenia nie bΩd▒ siΩ musia│y do tego przyzwyczajaµ, je╢li my siΩ o to postaramy i co╢ z tym zrobimy.

Integracja i modularno╢µ kodu a sieµ

Je╢li ma znikn▒µ podzia│ na programy, a kod ma byµ jedynie zgromadzony w specjalnych modu│ach, jak to opisa│em w czΩ╢ci I, jak ma siΩ to do Internetu, sieci lokalnych i og≤lnie sieci komputerowych? Moim zdaniem kod powinien m≤c wsp≤│pracowaµ ze sob▒ przez sieµ na 2 sposoby.

Pierwszy: ca│y kod wykonywalny by│by ╢ci▒gany na jeden z komputer≤w i na nim wykonywany. Przez sieµ przesy│ane by│yby za╢ tylko dane – wyniki jego wykonywania. Jest to wykonywanie po stronie klienta.

Drugi: programy wykonywa│yby siΩ po obu stronach – pewne czΩ╢ci kodu u┐ywa│yby innego po drugiej stronie kabla tak, jakby by│ on lokalny. NastΩpowa│oby rozproszenie kodu i jego wsp≤lne wykonywane – ka┐dy komputer wykonywa│by posiadan▒ przez siebie czΩ╢µ. Jest to wykonywanie tak┐e po stronie serwera.

Czy lepszy znaczy wiΩkszy?

Jak czΩsto blu╝nimy widz▒c, jak "du┐o" miejsca pozosta│o nam na naszym twardym dysku! Jak czΩsto wqrzamy siΩ widz▒c, ile zajmuje kt≤ry╢ z zainstalowanych program≤w czy sam Windows po kilku miesi▒cach u┐ywania! Jak┐e przera┐aj▒ca wydaje nam siΩ wizja przysz│o╢ci s│ysz▒c, widz▒c i czytaj▒c informacje o coraz to "nowszych", "lepszych" wersjach program≤w i system≤w operacyjnych. Ile one bΩd▒ zajmowaµ? Jakie bΩd▒ mia│y wymagania co do sprzΩtu?! Przyk│ady: Windows Whistler, nazywany te┐ Windows 2001 (ostatecznie bΩdzie siΩ nazywaµ Windows XP), ma wymagaµ procesora minimum Pentium II 233 MHz, 64 MB RAM, a na dysku zajmowaµ 2 GB. Popularna gra Diablo II w zale┐no╢ci od wybranego trybu instalacji wymaga od ok. 500 MB do 1,5 GB. S│ysz▒c takie rzeczy z pewno╢ci▒ wielu z nas zadaje sobie pytanie: Czy to konieczne? Czy to jest w│a╢ciwa droga rozwoju? I czy jedyna?

Oczywiste jest wprawdzie, ┐e nowa wersja to nowe funkcje, nowe polecenia, nowe mo┐liwo╢ci. A za tym id▒: nowe, wiΩksze pliki, wolniejsze dzia│anie. Ale czy musi siΩ to odbywaµ w│a╢nie w ten spos≤b i tak szybko? Znajdziemy na ╢wiecie dowody, ┐e wcale nie! Sp≤jrz na produkty firmy Microsoft. Windows, Office i inne. Ka┐da nowa wersja to program wiΩkszy, wolniejszy.

Znana anegdota g│osi, ┐e nowa wersja programu to program, w kt≤rym poprawiono stare b│Ωdy, a zrobiono nowe. Istotnie – poprawianie znalezionych b│Ωd≤w powinno byµ jedn▒ z podstawowych czynno╢ci podczas pisania kolejnych wersji program≤w. Ale czy tak jest naprawdΩ? Sp≤jrz do pliku historii w programach takich jak Windows Commander czy Winamp. Tu ka┐da nowa wersja polega g│≤wnie na poprawianiu b│Ωd≤w oraz rozbudowie istniej▒cych funkcji. Nie na dodawaniu nowych. W Winampie jest jeszcze lepiej. Tu autorzy mog▒ siΩ poszczyciµ, ┐e w kolejnych wersjach czyni▒ poszczeg≤lne modu│y programu mniejszymi i szybszymi. Kt≤ry inny komercyjny producent mo┐e siΩ pochwaliµ takimi zmianami w kolejnych wersjach swoich produkt≤w? Moim zdaniem szczytem beznadziei s▒ programy pisanie w jΩzykach interpretowanych, jak Java czy Visual Basic oraz np. w Delphi. Takie bowiem programy dzia│aj▒ nadzwyczajnie wolno i zajmuj▒ bardzo du┐o miejsca nie m≤wi▒c ju┐ o ilo╢µ "wbudowanych" w nich b│Ωd≤w.

Jak widaµ, nowa wersja wcale nie musi byµ 2 razy wiΩksza od poprzedniej i potrzebowaµ GeForce’a, procesora 1 GHz i 256 MB RAM. Jako u┐ytkownik szczeg≤ln▒ uwagΩ zwracam podczas u┐ywania programu na to, jak szybko dzia│a i na ile jego praca jest stabilna. I na tej podstawie oceniam, czy program jest dobrze, profesjonalnie napisany, czy nie. Liczne firmy oraz indywidualni programi╢ci, liczne programy dowodz▒, ┐e mo┐na pisaµ dobrze i profesjonalnie. Nie musz▒ byµ takie programy wszechstronne. Nie musz▒ robiµ wszystkiego. Ale nie musza byµ te┐ wielkie i powolne. W│a╢nie dziΩki dba│o╢ci o jako╢µ i profesjonalizm tworzonego oprogramowania, kt≤rych to cech czΩsto brakuje potΩ┐nym komercyjnym firmom, rynek oprogramowania shareware, freeware i public domain istnieje i ma siΩ ╢wietnie.

U┐ytkownik programist▒

Dawno dawno temu, gdy istnia│o tylko kilka komputer≤w na ╢wiecie, a jeden taki zajmowa│ ca│e wielkie pomieszczenie sk│adaj▒c siΩ wielu szaf, obs│ugiwaµ potrafili go tylko specjali╢ci. I tylko oni byli jego jedynymi bezpo╢rednimi u┐ytkownikami. Bo i obs│uga takiego komputera prosta nie by│a. Karty perforowane i inne kojarz▒ce nam siΩ dzisiaj tylko z histori▒ rzeczy – to by│a wtedy rzeczywisto╢µ.

Dzi╢ u┐ytkownikiem komputera osobistego PC mo┐e zostaµ ka┐dy. Nie wymaga to ani szczeg≤lnych umiejΩtno╢ci, ani te┐ jakiej╢ specjalistycznej wiedzy. Jednak potem, po nauczeniu siΩ obs│ugi komputera u┐ytkownicy dziel▒ siΩ na 2 grupy. Pierwsza to ci, kt≤rzy komputera u┐ywaj▒ jakby z konieczno╢ci – do swojej pracy. Potrafi▒ tylko tyle, ile jest im potrzebne. Reszta zupe│nie ich nie interesuje. W sk│ad drugiej grupy wchodz▒ osoby, kt≤re komputer ciekawi i chc▒ wiedzieµ o nim jak najwiΩcej. Ci ca│y czas siΩ czego╢ ucz▒. On koleg≤w, z prasy komputerowej, z Internetu. Wreszcie z w│asnych, czΩsto nieprzyjemnych do╢wiadcze±. Wielu z nich zaczyna interesowaµ siΩ programowaniem. W│a╢ciwie trafniej by│oby tu powiedzieµ – tworzeniem program≤w. Tylko nieliczni zostan▒ prawdziwymi informatykami – pozosta│ym po prostu to "przejdzie". Maj▒c na my╢li dobr▒ znajomo╢µ komputera chodzi mi nie tylko o umiejΩtno╢µ programowanie. Tak┐e o znajomo╢µ mechanizm≤w jego dzia│ania, optymalizacji, konfiguracji, Rejestru. Obecnie wiele os≤b interesuje siΩ tymi sprawami.

Je╢li system operacyjny w przysz│o╢ci bΩdzie jeszcze │atwiejszy w obs│udze, z pewno╢ci▒ powiΩkszy to przepa╢µ pomiΩdzy zwyk│ymi u┐ytkownikami a profesjonalnymi informatykami. Droga od obs│ugi komputera do znajomo╢ci jego software’owego wnΩtrza bΩdzie d│u┐sza i mniej os≤b bΩdzie w stanie j▒ przebyµ. Czy to dobrze? My╢lΩ, ┐e tak. Na rynku bΩdzie mniej du┐ych, dzia│aj▒cych wolno i niestabilnie programik≤w pisanych (w│a╢ciwie to wyklikanych) przez programist≤w-amator≤w. Mniej danych bΩdzie traconych w wyniku radosnych eksperyment≤w u┐ytkownik≤w, kt≤rzy nie chc▒ byµ ju┐ "tylko" u┐ytkownikami.

Warstwy i profesjonalizm kodu

W I cz. wspomnia│em przy okazji o takich "warstwach", wirtualnych maszynach itp., kt≤re rujnuj▒ oprogramowanie marnotrawi▒c moc obliczeniow▒ komputer≤w. O co dok│adnie chodzi?

Dawno, dawno temu popularne by│o pisanie w Asemblerze. Jest to jΩzyk niskiego poziomu. Znaczy to, ┐e wpisywane w nim polecenia s▒ przek│adane bezpo╢rednio na rozkazy kodu maszynowego procesora. Pisanie w tego typu jΩzykach by│o jednak trudne i szybko powsta│y jΩzyki wy┐szego poziomu. Powszechne sta│o siΩ programowanie strukturalne, potem oparte na obiektach i zorientowane obiektowo. Tak┐e dzi╢ mo┐na programowaµ w Asemblerze. I s▒ ludzie, kt≤rzy to robi▒. Programowanie takie ma jedn▒ wielk▒ zaletΩ: programy czy ich czΩ╢ci w ten spos≤b napisane dzia│aj▒ bardzo szybko. Samo pisanie jest jednak uci▒┐liwe do tego stopnia, ┐e niewielu profesjonalnych programist≤w zna i u┐ywa takich jΩzyk≤w. Dzi╢ pisze siΩ w inny spos≤b. Mo┐e i pisane tak programy dzia│aj▒ wolniej, ale za to pisze siΩ je │atwiej. WiΩc to siΩ op│aca.

Ale, niestety, sprawy zaczynaj▒ zachodziµ za daleko. Obok jΩzyk≤w wysokiego poziomu kompilowanych do kodu maszynowego pojawiaj▒ siΩ tak┐e takie, kt≤rych kod jest ka┐dorazowo interpretowany w czasie wykonania. Jedn▒ z wad takiego sposobu jest konieczno╢µ obecno╢ci interpretera. Ale nie to jest najistotniejsze. Najgorsze jest to, ┐e te programy czy modu│y napisane w tych "jΩzykach bardzo wysokiego poziomu" (wed│ug mnie zbyt wysokiego) dzia│aj▒ bardzo wolno i potrzebuj▒ bardzo du┐o zasob≤w systemowych, jak pamiΩµ RAM. Niewsp≤│miernie du┐o w stosunku do swojej funkcjonalno╢ci.

Prawda. Takie sposoby programowania s▒ potrzebne. Np. Java, jako jΩzyk interpretowany ma tΩ zaletΩ, ┐e kod jest przenaszalny miΩdzy dowolnymi platformami, dla kt≤rych istnieje odpowiedni interpreter. Wy┐szy poziom programowania to tak┐e │atwiejsze programowanie, a co za tym idzie: kr≤tszy czas potrzeby na pisanie i ni┐sze koszty dla firm produkuj▒cych takie oprogramowanie. W│a╢nie: koszty. Program zrobiony przez wielk▒ skomercjalizowan▒ do cna firmΩ, jest zwykle napisany byle jak, byle najmniejszym kosztem. W kt≤rym a┐ roi siΩ od b│Ωd≤w. Kt≤rego niezawodno╢µ, prΩdko╢µ dzia│ania, zasobo┐erno╢µ, i og≤lnie jako╢µ pozostawia wiele do ┐yczenia. Byle szybko i tanio zrobiµ, a potem tylko zbieraµ kasΩ. W│a╢nie tu jest szansa dla indywidualnych programist≤w i ma│ych, niekomercyjnych grup. Tacy ludzie pisz▒ dla rozrywki, to ich hobby i staraj▒ siΩ pisaµ tak dobrze, jak tylko potrafi▒. CzΩsto nawet siΩgaj▒ do Asemblera, a co najmniej do C++, aby ich produkty by│y nie du┐e, nie wszechstronne, ale dobrej jako╢ci.

NarzΩdzia nale┐▒ce do grupy RAD (Rapid Application Development - b│yskawiczne tworzenie aplikacji) nie s▒ co prawda jΩzykami interpretowanymi, ale efekty przez nie generowane s▒ niemal r≤wnie tragiczne. Przyk│ady to choµby Borland Delphi czy Borland C++ Builder. Generowane przez nie programy s▒ wielkie, pe│ne b│Ωd≤w i dzia│aj▒ wolno. Jednak istnienie prostych w obs│udze "kreator≤w oprogramowania" niesie te┐ ze sob▒ jeszcze jedno niebezpiecze±stwo. Wielu bowiem pseudoprogramist≤w pisze w takich jΩzykach nie tylko jakie╢ ma│e programiki, ale oprogramowanie, kt≤re trafia na rynek obni┐aj▒c og≤lny poziom jako╢ci dostΩpnego oprogramowania. Potem taki jeden z drugim u┐ytkownik dziwi▒ siΩ, ┐e im system "ci▒gle pada". A jak co╢, to blu╝ni▒ na Windows i Microsoft. A nie pomy╢l▒, ┐e to tak naprawdΩ wina: ich samych, ┐e instaluj▒ w▒tpliwe oprogramowanie oraz samego oprogramowanie. Bo naprawdΩ niewiele jest przypadk≤w, kiedy po zainstalowaniu czego╢ system nam pada, bo jego tw≤rca zrobi│ to specjalnie. W zdecydowanej wiΩkszo╢ci przypadk≤w przyczyn▒ s▒ b│Ωdy w oprogramowaniu. Gdyby za tworzenie program≤w brali siΩ tylko ludzie, kt≤rzy naprawdΩ potrafi▒ robiµ to dobrze i gdyby u┐ywali do tego porz▒dnych technologii, oprogramowanie by│oby lepsze, mniejsze, szybsze, bardziej stabilne i bezpieczniejsze ni┐ to, co znamy powszechnie dzi╢.

W╢r≤d wielu u┐ytkownik≤w (szczeg≤lnie graczy) panuje przekonanie, ┐e ka┐dy dobry program (gra) musi mieµ du┐y wymagania co do sprzΩtu. Po prostu to jest normalne. I odwrotnie: je╢li program (gra) ma du┐e wymagania, znaczy to, ┐e jest dobry. NaprawdΩ jest to tylko czΩ╢µ prawdy. Prawd▒ jest, ┐e im wiΩksze ma program mo┐liwo╢ci, tym wiΩksze s▒ te┐ jego wymagania. Nie jest natomiast prawd▒ to, ┐e je╢li program ma du┐e wymagania, jest dobry. W pewnym sensie mo┐na nawet powiedzieµ, ┐e jest wprost odwrotnie. Albowiem na wymagania programu (a co z tym zwi▒zane, na prΩdko╢µ jego dzia│ania i potrzebne mu zasoby systemowe) wp│yw maj▒ te┐ u┐yte do jego stworzenia technologie oraz jako╢µ samego kodu ╝r≤d│owego. St▒d m≤wi siΩ czasem niech ┐yje optymalizacja kodu!. Przeprowadzaj▒c j▒ mo┐na bowiem bardzo wiele zyskaµ na, je╢li nie jako╢µ, to chocia┐ zmniejszyµ wymagania programu.

Zasada ograniczonego zaufania

Jak pisa│em w I czΩ╢ci artyku│u, modu│om (programom) nie mo┐na ufaµ. Programi╢ci s▒ r≤┐ni, ich programy tak samo. Jedne porz▒dne, inne nie. Dlatego system, chc▒c byµ stabilnym i bezpiecznym, musi zabezpieczaµ siΩ przed ich zgubnym dzia│aniem. Jako spos≤b na to przedstawi│em przydzielanie uprawnie± do wykonywania r≤┐nych operacji, jak dzi╢ robi siΩ to w bezpiecznych systemach w stosunku do u┐ytkownik≤w. Szczeg≤ln▒ uwagΩ po╢wiΩci│em procesom instalacji i deinstalacji, gdy┐ s▒ one potencjalnie najbardziej niebezpieczne. I teraz rozwijam tΩ ideΩ nadaj▒c jej nazwΩ zasady ograniczonego zaufania systemu w stosunku do instalowanych lub zainstalowanych w nim modu│≤w. Je╢li istnieje niebezpiecze±stwo, ┐e program mo┐e zrobiµ co╢, czego zrobiµ nie powinien np. nadpisaµ nowsz▒ wersjΩ biblioteki podczas instalacji, system powinien kontrolowaµ wszelkie jego poczynania i pozwalaµ lub nie na ich dokonywanie. Je╢li za╢ istnieje niebezpiecze±stwo, ┐e program mo┐e czego╢ nie zrobiµ – np. deinstalator nie usun▒µ wszystkich plik≤w i zapis≤w w Rejestrze, system powinien sam tego dopilnowaµ. W og≤le to system sam powinien przeprowadzaµ jak najwiΩcej niebezpiecznych operacji – np. sam instalowa│by programy na podstawie jaki╢ tylko plik≤w z informacjami, jakie pliki nale┐y skopiowaµ i jakich zapis≤w dokonaµ. Podobnie deinstalacja: system po prostu usuwa│by pliki i zapisy, o kt≤rych wie, ┐e nale┐a│y do usuwanego programu.

Chat z komputerem?...

Je╢li z│o┐yµ razem zagadnienia generowanych inteligentnie dokument≤w hipertekstowych bΩd▒cych odpowiedziami na zapytania u┐ytkownika (np. rezultaty wyszukiwania) z konsol▒, w kt≤rej mo┐na wydawaµ systemowi polecenia w lu╝no sformu│owanych jΩzyku naturalnym, mo┐emy sobie wyobraziµ mechanizm systemowy podobny do dzisiejszych klient≤w us│ugi IRC, jak mIRC. Centraln▒ czΩ╢µ zajmowa│by dokument hipertekstowy. U do│u znajdowa│aby siΩ linia polece±, do kt≤rej mo┐na wpisywaµ komendy konsoli. Odpowiednikiem rozm≤w toczonych z r≤┐nymi osobami mog│yby byµ w▒tki "rozmowy" z komputerem. Znaczy to, ┐e na raz mo┐na by│oby robiµ kilka rzeczy np. rozmawiaµ sobie z komputerem na luzie, poszukiwaµ czego╢ co jaki╢ czas przegl▒daj▒c rezultaty i u╢ci╢laj▒c zakres wyszukiwania, jak r≤wnie┐ zarz▒dzaµ plikami czy robiµ jeszcze inne rzeczy. Taki mechanizm przypominaj▒cy klienta IRC jest po│▒czeniem wymy╢lonych przeze mnie podczas pisania tego artyku│u inteligentnie generowanych dokument≤w hipertekstowych oraz systemowej konsoli. Jest on rozwiniΩciem zaproponowanej w I czΩ╢ci implementacji obs│ugi owej konsoli.

...na luzie

Wiele napisa│em ju┐ o konsoli. O jej mo┐liwo╢ciach, zasadzie dzia│ania, zastosowaniach. Dotychczas jednak by│y to tylko zastosowania czysto komputerowe. Polecenia do wykonania, zapytania do wyszukiwania. A je╢li polecenia te maj▒ byµ formu│owane w jΩzyku naturalnym, to co stoi na przeszkodzie, ┐eby dodaµ do takiej konsoli trochΩ inteligencji i osobowo╢ci, ┐eby mo┐na te┐ by│o sobie z ni▒ la luzie pogadaµ? Jak na IRCu. Mo┐na by│oby zwierzyµ siΩ jej z k│opot≤w, pogadaµ, poopowiadaµ, wy┐aliµ siΩ, podenerwowaµ i poblu╝niµ. Jednym s│owem wy│adowaµ nerwy. Tak┐e odprΩ┐yµ siΩ. Konsola taka zbiera│aby informacje o u┐ytkowniku, jego przyzwyczajeniach, preferencjach i zapamiΩtywa│aby niekt≤re z rzeczy, kt≤re siΩ jej opowiada. Rozpoznaj▒c (np. po u┐ywanych s│owach, szybko╢ci pisania czy ruchach mysz▒) nastr≤j u┐ytkownika stara│aby siΩ mu pom≤c, uspokoiµ je╢li jest zdenerwowany itp. By│aby dobrym wirtualnym przyjacielem, na kt≤rego u┐ytkownik zawsze mo┐e liczyµ. Mog│aby te┐ przejawiaµ pewne cechy osobowo╢ci, jak r≤┐ne nastroje, emocje itp. Ale tylko w takim zakresie, aby nie ogranicza│o to funkcjonalno╢ci systemu. »eby nie dosz│o do sytuacji, w kt≤rej konsola odmawia wsp≤│pracy, bo jej siΩ nie chce my╢leµ. :-)

Przemy╢lenia "przemy╢le±"

Po przemy╢leniu artyku│u Tomasza Bartosika pt. System przysz│o╢ci – przemy╢lenia doszed│em do kilku wniosk≤w. Po pierwsze: inteligencja. Czy faktycznie u┐ywanie tego s│owa w odniesieniu do systemu operacyjnego jest trafne? Aby to zbadaµ, odwo│am siΩ do definicji inteligencji. Osobi╢cie zdefiniowa│bym inteligencjΩ jako zesp≤│ cech charakterystycznych dla cz│owieka i jego umys│u, jak rozumienie sytuacji, podejmowanie decyzji, uczenie siΩ, wysuwanie wniosk≤w, przystosowywanie siΩ do nowych nieznanych warunk≤w, logiczne, syntetyczne, analityczne i abstrakcyjne my╢lenie. S│owo to jest ostatnio czΩsto nadu┐ywane, szczeg≤lnie w reklamach. Czy komputer mo┐e byµ inteligentny? My╢lΩ, ┐e w jakim╢ stopniu jest ju┐ dzi╢. To jest jednak subiektywna ocena. Je╢li rozumieµ inteligencjΩ w odpowiedni spos≤b, to komputer og≤lnie bΩd▒ coraz bardziej inteligentne. Ja jednak, w przeciwie±stwie do kolegi nie teoretyzuje tu a┐ tak i a┐ tak nie wybiegam my╢lami wprz≤d. Horyzonty tego artyku│u s▒ bardziej ograniczone ni┐ artyku│u kolegi. St▒d ta niezgodno╢µ. Jak bΩdzie za lat kilkadziesi▒t, kiedy ju┐ byµ mo┐e wcale nie bΩdzie komputer≤w w takim znaczeniu, w jakim znamy je dzi╢, o tym nie my╢lΩ. PiszΩ tu o tym, co mo┐e siΩ zmieniµ na tym sprzΩcie, jaki mamy teraz pisz▒c odpowiednie oprogramowanie: programy, modu│y i, g│≤wnie, tytu│owy system operacyjny.

Szczeg≤lnie spodoba│o mi siΩ natomiast sformu│owanie kolegi, ┐e dla pocz▒tkuj▒cych by│by system kt≤ry dos│ownie sam wykonywa│by wszystko za cz│owieka, natomiast dla zaawansowanych, system poddawa│by siΩ ca│kowitej kontroli przez cz│owieka. R≤wnie┐ tak uwa┐am i my╢lΩ, ┐e niezwykle trafnie to uj▒│.

Czy komunikacja z komputerem za pomoc▒ mowy? Kiedy╢ – na pewno. Tak┐e dzi╢ ju┐ po trosze wchodz▒ na rynek programy do tego przeznaczone. Dlaczego ja o tym nie wspomnia│em? Je╢li piszΩ o konsoli, do kt≤rej mo┐na pisaµ w jΩzyku naturalnym, to st▒d ju┐ tylko krok to porozumiewania siΩ z maszyn▒ za pomoc▒ tego najbardziej naturalnego ╢rodka komunikacji, jakim dysponuje cz│owiek. My╢lΩ, ┐e swobodne interpretowanie i generowanie mowy stanie siΩ mo┐liwe wraz z rosn▒c▒ moc▒ obliczeniow▒ komputer≤w. Tak, jak dzisiaj wraz z ni▒ pokonywane s▒ kolejne zadania, kt≤re czΩsto dla cz│owieka s▒ naturalne, a dla komputera trudne. Uwa┐am komunikacjΩ z komputerem jednak za dodatek – kt≤ry, przynajmniej w czasie, o kt≤rym piszΩ nie bΩdzie mia│ jeszcze decyduj▒cego g│osu w sprawie kszta│tu ju┐ nie tylko, o czym ja my╢lΩ, systemu operacyjnego, ale, o czym zdaje siΩ my╢leµ kolega, komputera przysz│o╢ci.

Wed│ug mnie porozumiewanie siΩ z komputerem za pomoc▒ mowy nigdy nie wyprze klawiatury. Mikrofon, g│o╢niki lub s│uchawki, skaner – mo┐e wkr≤tce bΩdzie to niezbΩdny dla ka┐dego zestaw peryferi≤w, ale nie zniknie przez to klawiatura. Tak jak przez telewizjΩ nie zniknΩ│o radio, a klawiatura przez mysz. Mog▒ one pokojowo wsp≤│istnieµ, dzieliµ miΩdzy siebie zastosowania i mno┐yµ nawzajem swoj▒ funkcjonalno╢µ. Ju┐ po powstaniu myszy, kiedy by│o mo┐na sobie "wyklikaµ" ka┐de polecenie, szybko okaza│o siΩ, ┐e │atwiej jest u┐ywaµ skr≤t≤w klawiszowych, ni┐ myszy. Mimo to obydwu tych urz▒dze± u┐ywamy dzi╢ razem i wcale jedno nie przeszkadza drugiemu. A ┐e ich funkcjonalno╢µ w pewnym zakresie siΩ pokrywa, to jest raczej zaleta. Ka┐dy u┐yje takiego sposobu, jaki mu odpowiada. My╢lΩ, ┐e tak samo bΩdzie, je╢li do klawiatury i myszy do│▒cz▒ mikrofon i g│o╢niki jako urz▒dzenia steruj▒ce. Przyk│ady, drogi czytelniku, wymy╢l sam.

Wyobra┐am sobie, jak pewien cz│owiek wraca do domu i m≤wi do tam obecnych: Mam dzisiaj zdarte gard│o, nie mogΩ m≤wiµ. Ca│y prawie dzie± pracowa│em na komputerze.

Jak stabilno╢µ systemu wp│ywa na psychikΩ u┐ytkownika?

Czyta│em gdzie╢ kiedy╢ (nie pamiΩtam ju┐ dok│adnie) o badaniach emocji os≤b graj▒cych w jedn▒ z gier FPP ("strzelanka" 3D). Okaza│o siΩ, ┐e najwiΩcej emocji wywo│ywa│y u nich nie takie wydarzenia, jak wygrana czy ╢mierµ bohatera, ale zawieszenie siΩ komputera uniemo┐liwiaj▒ce dalsz▒ grΩ. Moim zdaniem stabilno╢µ i og≤lne dzia│anie systemu ma ogromny wp│yw na nasz▒ psychikΩ. WiΩkszy, ni┐ nam siΩ wydaje. Jak my╢lisz: dlaczego tyle narzeka siΩ na Windows i tak nie lubi siΩ og≤lnie Microsoftu i jego tw≤rcy? Czy Windows jest z│y? Nie jest prosty w obs│udze? Nie jest najpopularniejszy wyznaczaj▒c og≤lno╢wiatowy standard dziΩki kt≤remu wszystkie programy s▒ kompatybilne (jedne bardziej, inne mniej :)? Wed│ug mnie to w│a╢nie stabilno╢µ systemu ma tak wielki, a nie do ko±ca u╢wiadomiony wp│yw na psychikΩ u┐ytkownik≤w. W ko±cu to w│a╢nie na stabilno╢µ Windows najczΩ╢ciej siΩ narzeka.

Zagadnienie to dotyczy nie tylko samego zawieszania siΩ systemu. Tak┐e jego og≤lnej funkcjonalno╢ci. Mo┐na by rzec "kondycji". Je╢li klikamy czy naciskamy klawisz, oczekujemy od komputera natychmiastowej reakcji. Wszelkie przestoje i zatrzymanie lub spowolnienie pracy powinno wystΩpowaµ tylko w sytuacjach oczywistych i wtedy, gdy jest to konieczne i my o tym wiemy. Np. je╢li trwa jaki╢ czasoch│onny proces. Je╢li natomiast nie mo┐emy porz▒dnie ruszyµ myszk▒, bo system operuje na dyskietce czy musimy czekaµ, a┐ program wykona jakie╢ proste polecenie, to oczywiste jest, ┐e nas to denerwuje. Ja zda│em sobie sprawΩ z tego dopiero po przesiadce z Windows 98 na Windows 2000. Ten ostatni, oparty na j▒drze NT i bΩd▒cy w istocie Windows NT 5.0, jest naprawdΩ stabilny. Po prostu prawie nigdy nie zawiesza siΩ. Cechuje go tak┐e prawdziwa wielow▒tkowo╢µ. Je╢li jaki╢ program wykonuje skomplikowane operacje czy operuje na dyskietce, to mo┐e i on zawiesza swoj▒ pracΩ na ten czas, ale ca│a reszta systemu funkcjonuje zupe│nie normalnie bez ┐adnych przestoj≤w czy op≤╝nie± w reakcji na moje komunikaty. Teraz nie zamieni│bym tego Windowsa na ┐aden inny w│a╢nie ze wzglΩdu na tΩ stabilno╢µ i wielow▒tkowo╢µ.

Realizacja budowy modu│owej

W I czΩ╢ci opisa│em ideΩ modu│owej budowy systemu. Zaproponowa│em tak┐e rozwi▒zanie tego zagadnienia od strony technicznej poprzez przydzielanie uprawnie± dostΩpu poszczeg≤lnym modu│om oraz poprzez binarne formaty plik≤w oparte na znacznikach, jak dzisiejszy HTML. Nie jest to jednak pe│ny obraz, jak mia│aby byµ zrealizowana taka modularno╢µ systemu przysz│o╢ci. Dlatego przedstawiam kilka dalszych rozwi▒za±.

Opisa│em pliki, to na dysku. A pamiΩµ RAM? Komunikacja miΩdzy modu│ami zachodzi│aby czΩsto. CzΩ╢ciej na pewno, ni┐ miΩdzy dzisiejszymi programami (kiedy 2 uruchomione na raz programy komunikuj▒ siΩ miΩdzy sob▒ w pamiΩci? Rzadko...). Zobaczmy, jak to jest rozwi▒zywane dzi╢ w Windows. Dla przyk│adu we╝my grafikΩ bitmapow▒. R≤┐ne formaty plik≤w graficznych s▒. BMP, GIF, JPEG, TIFF, PCX, PNG, TGA, LBA to tylko niekt≤re z nich. Ale ka┐dy program po jego odczytaniu "rozkodowuje" go i przechowuje w postaci nieskompresowanej w takiej formie, jak to definiuje Windows API. Podobnie jest z wykonywaniem r≤┐nych czynno╢ci np. rysowaniem. W Windows API jest takie co╢, co nazywa siΩ kontekstem urz▒dzenia. Po nim mo┐na rysowaµ m.in. wprowadzaµ teksty, rysowaµ linie, wielok▒ty, okrΩgi, przerysowywaµ bitmapy i wiele innych. Przez rysowanie w ten spos≤b realizuje siΩ tak r≤┐ne funkcje, jak wy╢wietlanie tre╢ci okien w systemie, edycja bitmap przed ich zapisaniem czy drukowanie. Pewnie w przysz│o╢ci powstanie wiele r≤┐nych "format≤w" danych w pamiΩci. BΩd▒ tak┐e musia│y powstaµ programy, kt≤re bΩd▒ w locie konwertowaµ dane miΩdzy r≤┐nymi formatami.

Modu│owa budowa systemu bΩdzie te┐ musia│a znale╝µ odzwierciedlenie w przysz│o╢ciowym graficznym interfejsie u┐ytkownika. S▒dzΩ, ┐e funkcje wykonywane przez komputer (og≤lnie rzecz ujmuj▒c) oraz dostΩp do nich dla u┐ytkownika zostan▒ bardziej oddzielone od siebie. I tak pewne modu│y bΩd▒ mog│y nie dodaj▒c ┐adnych nowych funkcji u│atwiaµ bΩd▒ u┐ytkownikowi pracΩ rozbudowuj▒c interfejs o jakie╢ nowe paski czy inne elementy. Inne modu│y bΩd▒ dodawaµ ju┐ same nowe funkcje. My╢lΩ, ┐e interfejs u┐ytkownika bΩdzie w jeszcze wiΩkszym, ni┐ teraz stopniu konfigurowalny i "inteligentny". Zauwa┐: dzi╢ w│▒czamy program wykonuj▒cy konkretne czynno╢ci i naszym oczom ukazuje siΩ swoisty dla niego interfejs – okno czy okna, w nich menu, paski i inne kontrolki. A je╢li w przysz│o╢ci ma nie byµ jako takich program≤w, jak zrealizowaµ te rzeczy? My╢lΩ, ┐e na ekranie bΩd▒ obecne menu, paski czy palety przycisk≤w, p≤l wyboru i innych takich w zale┐no╢ci od kontekstu tzn. od tego, co w danej chwili robimy czy zamierzamy robiµ. Je╢li na raz mamy otwarty tekst i obrazek, to po prze│▒czeniu siΩ na edycjΩ obrazka z ekranu znikn▒ polecenia formatuj▒ce, pojawi▒ siΩ za╢ graficzne. Nadal pozostan▒ natomiast obecne polecenia pozwalaj▒ce na zapis i odczyt dokumentu. Nie dlatego, ┐e i modu│ do grafiki, i do tekstu mo┐liwo╢ciami takimi dysponuj▒ (podej╢cie lokalne – od strony modu│≤w), ale poniewa┐ te same polecenia maj▒ sens w kontek╢cie zar≤wno tekstu, jak i grafiki (podej╢cie globalne – od strony systemu).

Skala makro

Je╢li rysujemy ma│▒ ikonkΩ o wymiarach kilkunastu czy kilkudziesiΩciu pikseli, co╢ nam szkodzi ingerowaµ w pojedyncze jej piksele? Mo┐emy zadbaµ o ni▒ z najwiΩksz▒ precyzj▒. Kiedy rysujemy wiΩkszy rysunek – nie mo┐emy ju┐ sobie na to pozwoliµ. Dla uzyskania po┐▒danych efekt≤w u┐ywany r≤┐nych filtr≤w i narzΩdzi, kt≤rych dzia│anie polega na operowaniu na ca│ych grupach pikseli. I choµ z pewno╢ci▒ na obrazku takim s▒ piksele, kt≤rych kolor zmieniliby╢my, gdyby╢my siΩ nimi dok│adnie zainteresowali, nikt tego nie bΩdzie robi│. W skali takiej, jakie s▒ wymiary du┐ego obrazka wa┐ne jest, ┐e efekt jest zadowalaj▒cy. Podobnie z animacjami: o ile statyczny obrazek mo┐emy obrabiaµ rΩcznie np. zaznaczaj▒c, jakie jego elementy maj▒ zostaµ wciΩte staj▒c siΩ przezroczystymi i ukazuj▒c t│o, o tyle w przypadku materia│u filmowego nikt nie bΩdzie tego robi│ rΩczenie w ka┐dej klatce. Trzeba skorzystaµ z jakiego╢ narzΩdzia do tego celu, kt≤re wytnie fragmenty ka┐dej klatki o kolorze zbli┐onym do zadanego. Nie inaczej jest z programowaniem. O ile ma│e programiki, jak wirusy s▒ pisane w Asemblerze, o tyle nikt ju┐ prawie nie pisze dzi╢ w jΩzyku tym ca│ych du┐ych program≤w. Choµ z pewno╢ci▒ by│yby one dziΩki temu szybsze i mia│y przez to mniejsze wymagania, to jest to technicznie prawie niemo┐liwe. Po prostu programy te s▒ tak skomplikowane, ┐e do ich tworzenia trzeba u┐ywaµ jΩzyk≤w programowania wy┐szego poziomu. Daj▒ one trochΩ gorsze efekty (mniej optymalny kod), ale dziΩki nim │atwiej jest pisaµ "masowo" – du┐e produkcje.

Jest to jakby przej╢cie ze skali "mikro" – zag│Ωbiania siΩ w szczeg≤│y i dba│o╢ci o ka┐dy szczeg≤│ do skali "makro" – wykonywania tych samych czynno╢ci za pomoc▒ narzΩdzi zautomatyzowanych – daj▒cych nieco gorsze efekty, ale za to umo┐liwiaj▒cych ich dokonanie znacznie │atwiej. Takie przej╢cie jest konieczne w miarΩ jak powiΩksza siΩ ilo╢µ informacji, kt≤re trzeba utworzyµ czy przetworzyµ. Ilo╢µ w stosunku do mo┐liwo╢ci osoby lub os≤b, kt≤re to robi▒.

Podobnie jest z obs│ug▒ komputera. Tu wprawdzie nie nastΩpuje skomplikowanie wykonywanych czynno╢ci czy zwiΩkszenie ich ilo╢ci (wrΩcz przeciwnie, ale tylko w pewnym ma│ym zakresie). U┐ytkownikami komputera staj▒ siΩ jednak osoby, kt≤re coraz mniej na temat jego obs│ugi wiedz▒ i od kt≤rych coraz mniej tej wiedzy trzeba wymagaµ. Tote┐ my╢lΩ, ┐e w dziedzinie u┐ytkowania komputera musi siΩ dokonaµ w najbli┐szym czasie takie w│a╢nie przej╢cie ze skali "mikro" (1. Zajmowanie siΩ sprawami organizacyjnymi, jak naprawianie b│Ωd≤w i rozwi▒zywanie problem≤w; 2. Wykonywanie kolejnych czynno╢ci sk│adowych na drodze do otrzymania ko±cowego efektu i konieczno╢µ panowania nad nimi oraz samodzielnego ich ustalania) do skali "makro" (polecenia zwi▒zane z tym, CO chce siΩ zrobiµ bez wiedzy JAK to zrobiµ). Drog▒ prostej analogii do powy┐szych przyk│ad≤w nietrudno wywnioskowaµ, ┐e dokona siΩ tu kosztem nieznacznego ograniczenia zakresu mo┐liwo╢ci znaczne uproszczenie ca│ej obs│ugi. My╢lΩ, ┐e w takim w│a╢nie przej╢ciu pomo┐e, ba, mo┐e nawet do niego doprowadzi, opisywany tu system operacyjny przysz│o╢ci.

Nie takie to proste...

Nie tak dawno pewna osoba us│ysza│a wydobywaj▒c▒ siΩ z g│o╢nik≤w mojego komputera muzykΩ. Tak siΩ sk│ada, ┐e by│y to tzw. modu│y muzyczne (MOD, XM, S3M itp.). Zapyta│a mnie potem, czy muzykΩ t▒ da siΩ skopiowaµ i nagraµ na zwyk│▒ p│ytΩ kompaktow▒ CD-Audio. Odpowiedzia│em, ┐e tak, ale nie jest to zbyt proste. I faktycznie. Aby przerobiµ modu│ muzyczny na ╢cie┐kΩ CD-Audio, trzeba go najpierw "rozkodowaµ" do formatu WAVE.

Przyk│ady takie mo┐na mno┐yµ. Og≤lnie chodzi o to, ┐e r≤┐ne operacje na komputerze, kt≤rych konieczno╢µ przeprowadzania jest dla nas – u┐ytkownik≤w – oczywista, dla os≤b nie zaznajomionych z komputerem wydaje siΩ co najmniej dziwna. A na pewno k│opotliwa. I to z pewno╢ci▒ zniechΩca do zainteresowania siΩ t▒ wspania│▒ maszyn▒. Temat ten, wyj▒tkowo, pozostawiam otwarty poprzestaj▒c na tych og≤lnych wywodach. ZachΩcam do zastanowienia siΩ nad tym. Kto chcia│by posiadaµ samoch≤d, przy kt≤rym siΩ "1 godzinΩ je╝dzi, a 2 grzebie"? Mo┐e i s▒ tacy, ale oni z pewno╢ci▒ interesuj▒ siΩ samochodami i grzebanie w nich sprawia im przyjemno╢µ. Ale wiΩkszo╢µ "u┐ytkownik≤w samochod≤w" posiada je po to, aby nimi je╝dziµ wszelkie obowi▒zki o charakterze "organizacyjnym" traktuj▒c jako smutn▒ konieczno╢µ. Proste urz▒dzenia domowego u┐ytku, jak sprzΩt RTV i AGD przyzwyczai│y nas do tego, ┐e mo┐emy ich po prostu u┐ywaµ i nic wiΩcej. Je╢li wiΩc komputer ma siΩ staµ tak powszechny w u┐ytkowaniu, jak dzi╢ s▒ r≤┐ne sprzΩty elektroniczne kt≤re nas otaczaj▒, musi byµ podobnie jak one prosty w obs│udze. Wykluczone s▒ tu jakiekolwiek czynno╢ci, kt≤re trzeba wykonywaµ przy samym komputerze i wy│▒cznie dla niego. Po prostu: u┐ywa siΩ go i koniec. Bo w sytuacji, jaka panuje teraz w 100% sprawdza siΩ przys│owie m≤wi▒ce, ┐e "komputer zosta│ stworzony do rozwi▒zywania problem≤w kt≤rych, gdyby nie on, w og≤le by nie by│o".

Klamoty na dysku

Ca│kiem logiczna wydaje mi siΩ analogia danych gromadzonych na dysku twardym komputera do wszelkich przedmiot≤w sytuowanych w pokojach tudzie┐ szafach w "rzeczywistym" mieszkaniu. NiezbΩdne i niezmienne elementy naszego mieszkania, jak drzwi czy okna (!!!) to system operacyjny (Windows ;-). SprzΩty codziennego u┐ytku, jak radio, telewizor itp. to zainstalowane programy. Przedmioty zgromadzone na p≤│kach, sterty papier≤w na biurku to dokumenty. Przyniesione od kolegi, zupe│nie niezorganizowane i nieprzejrzane jeszcze dane, jak obrazki czy filmy to za╢ zalegaj▒ce ka┐demu z nas w szafach i pawlaczach klamoty.

Je╢li patrzeµ na wszystko w ten spos≤b, mo┐na doszukaµ siΩ kolejnych analogii. W pokoju szukamy miejsca na r≤┐ne przedmioty sytuuj▒c je na r≤┐nych p≤│kach, jak na dysku dane sytuujemy w przewidzianych na to folderach. CzΩsto patrzymy, czy to, co chcemy w│o┐yµ do szafy aby siΩ tam zmie╢ci. Podobnie na dysku zwracamy uwagΩ na ilo╢µ wolnego miejsca i na to, ile zajmuj▒ poszczeg≤lne foldery. Analogia taka wydaje mi siΩ logiczna i w miarΩ oczywista. Do tego stopnia, ┐e sam robiΩ co jaki╢ czas porz▒dki na moim dysku.

W I czΩ╢ci kategorycznie sprzeciwi│em siΩ konieczno╢ci organizacji danych w strukturze folder≤w jako trudnej do opanowania i zarz▒dzania dla przeciΩtnego u┐ytkownika. Przedstawione powy┐ej spojrzenie rzuca na tΩ sprawΩ nowe ╢wiat│o. Je╢li w ╢wiecie rzeczywistym musimy siΩ martwiµ o takie rzeczy, jak prawid│owa organizacja "folder≤w" czy ilo╢µ wolnego miejsca, czy wolno nam wymagaµ od komputera, aby by│o to prostsze? My╢lΩ teraz, ┐e nie! Ale! Ale obecnie jest to trudniejsze. Oczywi╢cie nie da siΩ tak du┐ej ilo╢ci r≤┐nego rodzaju danych, jaka jest przechowywana na komputerze wiΩkszo╢ci z nas, zorganizowaµ w p│ask▒ listΩ bez jakiejkolwiek hierarchii. Ale nie musi byµ to tak rozbudowane i trudne jak to jest dzi╢. Przecie┐ te "jednostki danych", jak pliki dokument≤w, foldery z obrazkami, filmy czy wersje instalacyjne program≤w mo┐na zwyczajnie przyporz▒dkowywaµ do kategorii i podkategorii. Czego wcale nie trzeba by│oby robiµ. O ile jest to bardziej intuicyjne do znanego nam dzisiaj modelu zarz▒dzania systemem plik≤w!

Przede wszystkim za╢ nie powinny istnieµ jakiekolwiek powi▒zania miΩdzy miejscami, gdzie przechowywane s▒ pliki systemowe i zainstalowane programy na miejscami, gdzie przechowywane s▒ dokumenty. Nie tak, jak to jest dzi╢. Mo┐emy podawaµ ╢cie┐kΩ, gdzie zainstalowany ma zostaµ program (nie wystarczy│oby wybranie dysku? Przecie┐ chodzi tylko o ilo╢µ zajmowanego i wolnego miejsca!), sami definiujemy, gdzie przechowujemy swoje dane. To, ┐e Windows proponuje nam foldery dla r≤┐nych zastosowa± (Windows dla systemu, Program files dla program≤w, Moje dokumenty dla dokument≤w) to jeszcze za ma│o. Paradoksalnie s▒dzΩ, ┐e sytuacjΩ poprawi│oby zupe│ne uniemo┐liwienie lub przynajmniej ukrycie pod funkcj▒ tylko dla zaawansowanych mo┐liwo╢ci wyboru folderu w r≤┐nych sytuacjach daj▒c wy│▒cznie mo┐liwo╢ci w minimalnym koniecznym zakresie. Np. je╢li u┐ytkownik ma 2 dyski, powinien mieµ przedstawion▒ podczas instalacji programu sytuacjΩ, na kt≤rym dysku jest ile wolnego miejsca a ile miejsca wymaga program i m≤c wybraµ dysk, na kt≤rym program ma zostaµ zainstalowany. Dokumenty za╢ wystarczy│oby, ┐eby by│y organizowane w p│ask▒ listΩ identyfikowan▒ przez nazwy i ewentualnie dzielon▒ na kategorie oraz podkategorie bΩd▒c bez wiedzy u┐ytkownika zapisywane zawsze w domy╢lnym folderze, jakim dzi╢ jest Moje dokumenty.

S▒dzΩ ┐e do uproszczenia obs│ugi komputera w dziedzinie organizacji struktury plik≤w przyczyni│oby siΩ te┐ upodobnienie tego procesu do organizacji u│o┐enia r≤┐nych przedmiot≤w w rzeczywistym mieszkaniu / pokoju. Jak to mog│oby wygl▒daµ – to ju┐ pozostawiam Twojej wyobra╝ni.

Okna – potrzebne?

Interfejs u┐ytkownika oparty na oknach by│ z pewno╢ci▒ du┐ym krokiem w rozwoju oprogramowania. Uczynienie okien podstawowym elementem systemu by│o naturaln▒ tego konsekwencj▒. Czym s▒ okna? Jak ju┐ pisa│em w I czΩ╢ci s▒ to prostok▒tne obszary ekranu prezentuj▒ce jakie╢ dane lub prowadz▒ce interakcjΩ (dialog) z u┐ytkownikiem, kt≤re mog▒ siΩ wzajemnie przys│aniaµ. Oparcie graficznego interfejsu u┐ytkownika na oknach ma z pewno╢ci▒ swoje zalety. Okna mo┐esz dowolnie uk│adaµ na ekranie zmieniaj▒c ich po│o┐enie i rozmiar, a te niepotrzebne w danej chwili minimalizowaµ.

Jednak czy jest tak w istocie? Czy to jest faktycznie takie wygodne, jak mog│oby siΩ wydawaµ? A mo┐e konieczno╢µ zarz▒dzania wieloma oknami to dla u┐ytkownika tylko dodatkowy obowi▒zek utrudniaj▒cy obs│ugΩ komputera? Moim zdaniem tak w│a╢nie jest! W systemie przysz│o╢ci, kt≤ry ma byµ │atwy w obs│udze, nie ma miejsca na okna. Pomy╢l: ile razy pracowa│e╢ z programem lub kilkoma programami uk│adaj▒c ich okna na ekranie? Czy przypadkiem nie jest tak, ┐e zawsze okno programu masz zmaksymalizowane? W moim przypadku tak w│a╢nie jest. Wiem ┐e dla wiΩkszo╢ci os≤b ka┐dorazowe maksymalizowanie okna uruchomionego programu to tylko dodatkowy k│opot. Podobnie jest z wszelkiego rodzaju paletami narzΩdziowymi zawieraj▒cymi przyciski i inne elementy. Choµ s▒ programy (np. Adobe Photoshop), w kt≤rych palety takie stanowi▒ osobne okna, to w wiΩkszo╢ci program≤w s▒ one "przyssane" do jednej z krawΩdzi okna g│≤wnego. W coraz wiΩkszej liczbie program≤w mo┐na je dokowaµ tzn. przypinaµ do dowolnych krawΩdzi ekranu, jak r≤wnie┐ czyniµ niezale┐nymi oknami. Powiedz szczerze: ile razy czyni│e╢ dla wygody dokowalny pasek narzΩdzi niezale┐nym oknem? Czy┐ nie │atwiej jest u┐ywaµ programu zbudowanego z jednego okna, na kt≤rego krawΩdziach znajduj▒ siΩ r≤┐ne menu, paski, palety itp., a obszar roboczy podzielony jest tzw. splitterami, kt≤re mo┐na przesuwaµ na obszary z r≤┐nymi informacjami oraz obszar g│≤wny dla edytowanego dokumentu? Wyobra╝ sobie taki sam program zbudowany z wielu okien. Jednym jest paleta z narzΩdziami. Innym jest pasek skr≤t≤w do najczΩ╢ciej u┐ywanych polece± menu. Jeszcze inne zawiera dokument. Ka┐de takie okno mo┐esz, a raczej musisz przesuwaµ i skalowaµ. Czy uwa┐asz, ┐e tak zbudowanego programu u┐ywa│oby siΩ │atwiej?

Kto╢ m≤g│by zapytaµ: a co z oknami dialogowymi? Przyk│ady takich okien to chocia┐by wystΩpuj▒ce w prawie ka┐dym programie okno Otw≤rz, czy Zapisz jako, jak r≤wnie┐ okno Opcje umo┐liwiaj▒ce konfiguracjΩ programu. Je╢li w systemie mia│oby nie byµ okien, jak mia│yby byµ zrealizowane takie funkcje? Zauwa┐: okna dialogowe s▒ prawie zawsze oknami modalnymi. Znaczy to tyle, ┐e nie mo┐esz u┐ywaµ okna g│≤wnego, dop≤ki takiego okna nie zamkniesz. Nic nie stoi wiΩc na przeszkodzie, ┐eby informacje prezentowane w oknie dialogowym znalaz│y siΩ w oknie g│≤wnym programu zastΩpuj▒c tam tymczasowo jego standardow▒ zawarto╢µ.

Wiem, ┐e to trudne, ale z pomoc▒ powy┐szych informacji spr≤bujmy wyobraziµ sobie system z graficznym interfejsem u┐ytkownika, ale bez okien. By│yby paski, przyciski, pola edycji. Jednym s│owem wszystko, co znamy teraz. Poza oknami. Pasek zada± z wymienionymi uruchomionymi aplikacjami jest na dole i ma postaµ w│a╢nie paska. Zupe│nie jak teraz. KlikniΩcie jednego z przycisk≤w na tym pasku spowoduje, ┐e uaktywniona zostanie dana aplikacja i pozosta│a czΩ╢µ ekranu zostanie zape│niona przez ni▒. BΩdzie tam to, co dzi╢ prezentowane by│oby w jej oknie g│≤wnym. Wszelkie menu, paski skr≤t≤w, narzΩdzi, palety i inne elementy by│yby czΩ╢ciami tego okna pozostaj▒c na jego krawΩdziach b▒d╝ dziej▒c jego obszar roboczy na przedzielone splitterami czΩ╢ci. Wydajesz polecenie Plik > Otw≤rz... Ca│y ekran, poza paskiem zada± zosta│by zmieniony na to, co dzi╢ widzimy w oknie Otw≤rz. Po wybraniu pliku i klikniΩciu przycisku Otw≤rz ekran wr≤ci do swojej poprzedniej postaci. Tak w│a╢nie wyobra┐am sobie realizacjΩ w bezokienkowym systemie przysz│o╢ci tego, co dzi╢ mamy w oknach.

Dokumenty

 

Czym s▒ – ka┐dy z nas chyba wie. Jest to og≤lna nazwa na efekty naszej pracy. Tworzone przez nas w programach, nazwijmy to tak, edycyjnych. Tzn. takich, kt≤re posiadaj▒ polecenia Nowy, Otw≤rz, Zapisz, Zapisz jako, Wytnij, Kopiuj, Wklej itp. S▒ r≤┐nego typu. Dokumentem mo┐emy nazwaµ zar≤wno obrazek programu Paint, tekst stworzony w Wordzie czy w Notatniku, arkusz kalkulacyjny, bazΩ danych. Dokumenty bywaj▒ w r≤┐nych formatach. Jedne w charakterystycznych dla jednego programu, w kt≤rym zosta│y stworzone. Inne w og≤lnie u┐ywanych. Jeszcze inne w jaki╢ egzotycznych, kt≤rych nijak nie ma gdzie otworzyµ. Czasami zachodzi potrzeba konwersji, najczΩ╢ciej w przypadku format≤w graficznych. R≤┐ny te┐ rozmiar maj▒ dokumenty – od najmniejszych, jak teksty, poprzez r≤┐ne rysunki wektorowe a┐ po obrazki – bitmapy, wielkie bazy danych czy filmy. Dokument to zwykle jeden plik. Rozszerzenie charakteryzuje jego typ (format) – a czΩsto tym samym program, w kt≤rym zosta│ utworzony. Zdarza siΩ, ┐e dokument stanowi kilka powi▒zanych ze sob▒ plik≤w czy ca│y folder.

Koncepcja dokumentu jest bli┐sza u┐ytkownikowi ni┐ idea pliku. St▒d rosn▒ce ju┐ od jakiego╢ czasu znaczenie tego pojΩcia. Kt≤re to ja z najwiΩkszym entuzjazmem popieram. Zauwa┐: w pow│oce Windows podczas zarz▒dzania plikami system domy╢lnie nie pokazuje rozszerze± plik≤w prezentuj▒c w zamian informacjΩ okre╢lon▒ jako "typ". Chodzi o tym dokumentu. Przynajmniej w takim zakresie, w jakim niekt≤re spo╢r≤d pojedynczych plik≤w mo┐na za takowe uznaµ.

My╢lΩ ┐e wraz ze spadkiem zainteresowania struktur▒ plik≤w wzro╢nie w zamian znaczenie dokument≤w. U┐ytkownik nie bΩdzie ju┐ wiedzia│, czy jego dokument stanowi jeden czy wiΩcej plik≤w, jakie one nosz▒ rozszerzenie itp. Wystarczy znaµ nazwΩ dokumentu, wiedzieµ jakiego jest on typu i mo┐e czasami sprawdziµ jego rozmiar. Polecenia bΩdzie mo┐na wydawaµ np. tak: Skopiuj Bazgro│y na dyskietkΩ, gdzie Bazgro│y to nazwa nie tyle pliku, co dokumentu.

Nie wszystkie "logiczne jednostki danych" mo┐na jednak okre╢liµ mianem dokument≤w. Za takie trudno uznaµ wersje instalacyjne program≤w, ╢ci▒gniΩte z Internetu sterowniki, foldery zawieraj▒ce du┐▒ grupΩ innych element≤w, jak obrazki, ╢ci▒gniΩt▒ w ca│o╢ci (przeteleportowan▒) stronΩ internetow▒ czy film. Przyk│ady mo┐na by mno┐yµ. Na dane takie, dla odr≤┐nienia ich od zainstalowanych program≤w czy plik≤w systemowych powsta│o okre╢lenie "stuff". Jest to niepoliczalny rzeczownik pod wzglΩdem gramatycznym zachowuj▒cy siΩ podobnie jak "dane". Jest to przecie┐ szczeg≤lny rodzaj, jeden z rodzaj≤w danych. Niestety, r≤wnie┐ nie ma on liczby pojedynczej. Brakuje bardzo tego s│owa. I bΩdzie brakowa│o coraz bardziej. Z czasem, kiedy coraz mniej bΩdzie siΩ m≤wi│o o plikach i folderach nazywanych wsp≤lnie "danymi" potrzebne bΩdzie s│owo okre╢laj▒ce pojedyncz▒ jednostkΩ logiczn▒ tego, co dzi╢ nazwiemy "stuffem". Dopiero szczeg≤lnym typem stuffu bΩd▒ dokumenty.

Ikony

Nieodzownym elementem graficznych interfejs≤w u┐ytkownika s▒ dzi╢ ikony. S▒ to obrazki – bitmapy o wymiarach 16 x 16 lub 32 x 32 piksele. W strefie nazw, czyli hierarchicznej strukturze na szczycie kt≤rej stoi pulpit ka┐dy element ma swoj▒ ikonΩ. Wszyscy znamy ikonΩ folderu. Nowe ikony s▒ dodawane przez r≤┐ne program najczΩ╢ciej podczas rejestrowania nowego typu pliku o okre╢lonym rozszerzeniu (nowego typu dokumentu). Zaleta ikon jest oczywista – │atwiej skojarzyµ z danym elementem obrazek ni┐ choµby nazwΩ czy tym bardziej ca│▒ ╢cie┐kΩ. Dlaczego wiΩc w ca│ym tym artykule w obu czΩ╢ciach nie po╢wiΩci│em uwagi ikonom?

Zauwa┐, ┐e od chwili pojawienia siΩ graficznych interfejs≤w u┐ytkownika wszystkie praktycznie operacje da siΩ wykonaµ na pomoc▒ myszki. Ale nie zmienia to faktu, ┐e │atwiej jest niekt≤re przynajmniej z tych rzeczy uruchomiµ za pomoc▒ skr≤tu klawiszowego. Je╢li program jest skomplikowany – wiadomo, ┐e nie opanujemy wszystkich skr≤t≤w. Mysz jest niezbΩdna. Ale je╢li program jest ma│y i prosty – mo┐emy go w ca│o╢ci obs│u┐yµ za pomoc▒ klawiatury. Nie chcΩ przez to sugerowaµ, ┐e ikony nie s▒ potrzebne. Tak, jak dzi╢ nadal w u┐yciu jest mysz i ma siΩ ╢wietnie. Ale nie przeceniajmy roli obu tych rzeczy. Ikony bΩd▒ tak wa┐ne jak dzi╢ dot▒d, dop≤ki zarz▒dzanie systemem (stref▒ nazw, systemem plik≤w) bΩdzie tak jak dzi╢ skomplikowane. Dop≤ki dominuj▒c▒ rolΩ bΩdzie w nim mia│a, o czym ju┐ pisa│em wielokrotnie, hierarchicznie zorganizowana struktura. Je╢li zostanie to uproszczone wystarczy identyfikacja przez nazwy. Co nie znaczy, ┐e ikony znikn▒. Po prostu nie nale┐y przeceniaµ ich roli i stosowaµ ich WSZ╩DZIE, jak to jest dzi╢.

Podsumowanie

Od powstania pierwszej czΩ╢ci tego artyku│u minΩ│o ju┐ prawie p≤│ roku. My╢lΩ, ┐e po wszystkim tym, co napisa│em wtedy i teraz czas ju┐ na podsumowanie. Czy to znaczy, ┐e idea ta nie bΩdzie ju┐ dalej przeze mnie rozwijana? Tego sam nie wiem. Byµ mo┐e nie. Ale nigdy nic nie wiadomo. Mo┐e, ┐e za nastΩpne kilka miesiΩcy bΩdΩ chcia│ podzieliµ siΩ z Tob▒ nowymi moimi pomys│ami i przemy╢leniami. Tymczasem teraz spr≤bujmy zebraµ w jedno wszystko, co dotychczas napisa│em. Bo o ile w pierwszej czΩ╢ci poruszy│em jedynie kilka lu╝no ze sob▒ powi▒zanych zagadnie± pozostawiaj▒c wiele spraw otwartych, o tyle teraz przy odrobinie wyobra╝ni mo┐na z kolejnych paragraf≤w tego artyku│u z│o┐yµ ju┐ w miarΩ pe│n▒ i czyteln▒ wizjΩ systemu przysz│o╢ci.

Taki przysz│o╢ciowy system mo┐na rozpatrywaµ z dw≤ch stron. Od strony u┐ytkownika bΩdzie to struktura plik≤w w postaci p│askiej listy, makropolecenia czyli │atwo wydawane i formu│owane w jΩzyku naturalnym polecenia skupiaj▒ce siΩ na tym co, a nie jak chce siΩ zrobiµ. To tak┐e konsola, na kt≤rej siΩ te polecenia wydaje oraz inteligentnie generowane dokumenty hipertekstowe, co razem daje nam interfejs podobny do dzisiejszych klient≤w internetowej us│ugi IRC. Od strony programisty za╢ bΩdzie to totalna modularno╢µ systemu (budowa modu│owa) po│▒czona z przydzielaniem uprawnie± poszczeg≤lnym modu│om tak, jak dzi╢ robi siΩ to w stosunku do u┐ytkownik≤w (zasada ograniczonego zaufania). Ma to zapewniµ wiΩksze ni┐ dzi╢ bezpiecze±stwo i stabilno╢µ systemu, a zarazem wiΩksz▒ jego elastyczno╢µ. Modu│owa budowa wspiera│a bΩdzie ma│e grupy programistyczne i indywidualnych programist≤w, co przyczyni siΩ do podniesienia jako╢ci oprogramowania. BΩdzie te┐ ono ta±sze – zmniejszy siΩ dziΩki temu piractwo.

Skupmy siΩ teraz na interfejsie u┐ytkownika. Je╢li nie bΩdzie program≤w w dzisiejszym tego s│owa znaczeniu, na znaczeniu zyskaj▒ za╢ dokumenty, jak taki interfejs bΩdzie wygl▒da│? Pisa│em w I czΩ╢ci, ┐e bΩdzie on m≤g│ byµ rozszerzany dodatkowe modu│y. Je╢li przyj▒µ przy tym, ┐e znikn▒ okna, pozostanie za╢ myszka i graficzny interfejs, mniejsze znaczenie bΩd▒ mia│y ikony, a centrum system stanowiµ bΩdzie konsola, jak to mo┐na w og≤le sobie wyobraziµ? Spr≤bujmy! U do│u znajduje siΩ pasek. Co╢ na wz≤r dzisiejszego paska zada± Windows. Tylko ┐e jako przyciski wyszczeg≤lnione bΩd▒ nie uruchomione aplikacje, ale otwarte dokumenty lub inne "zadania", nad kt≤rymi obecnie pracujemy. Naci╢niΩcie takiego przycisku zaowocuje prze│▒czeniem siΩ na dane "zadanie" czy dokument. Elementy interfejsu zwi▒zane z typem tego dokumentu zajm▒ pozosta│▒ czΩ╢µ ekranu. Je╢li nie ma okien – nie ma tu mowy o zmianie rozmiaru czegokolwiek. To tak, jakby ka┐dy "program" zawsze by│ zmaksymalizowany. Bo i po co nie? W ko±cu na raz i tak pracuje siΩ nad jedna spraw▒. Podczas edycji tekstu na przyk│ad na ekranie by│yby obecne polecenia zwi▒zane z dokumentem, jak Nowy, Otw≤rz czy Zapisz, polecenia formatuj▒ce, jak podkre╢lenie, czcionka lub wyjustowanie, a centraln▒ czΩ╢µ zaj▒│by oczywi╢cie podgl▒d edytowanego tekstu. Po prze│▒czeniu siΩ na edycjΩ obrazka polecenia formatuj▒ce tekst zniknΩ│yby ustΩpuj▒c miejsca charakterystycznym dla edycji grafiki. Nowy, Otw≤rz i Zapisz pozosta│yby natomiast.

Jednym z "zada±" na pasku u do│u ekranu by│aby zawsze obecna i niewy│▒czalna konsola systemowa. Jak ju┐ pisa│em by│aby ona podobna do program≤w takich jak mIRC. Na dole pole edycji do wpisania polecenia, po prawej stronie lista w▒tk≤w, w kontek╢cie kt≤rych odbywa siΩ na raz rozmowa z komputerem, wreszcie na pozosta│ej czΩ╢ci dokumenty tekstowe zawieraj▒ce formatowania, hiper│▒cza (nie do innych dokument≤w jednak, ale do polece± systemu) a tak┐e mo┐e grafikΩ (choµby ikony). Znaczenie ma p│aska lista obiekt≤w zamiast dzisiejszej struktury plik≤w i folder≤w. Najwa┐niejszym punktem odniesienia do nich s▒ za╢ ich nazwy (a tak┐e typ i rozmiar).

Inne sprawy: Instalacja program≤w przebiega bez problem≤w. Instalacja i deinstalacja du┐ych ilo╢µ program≤w i innych gad┐et≤w nie za╢mieca systemu i nie stanowi dla niego zagro┐enia. Odno╢cie KA»DEJ czynno╢ci w systemie dzia│a globalne polecenie Cofnij jak dzi╢ wobec edycji pojedynczych dokument≤w w r≤┐nych programach. Nawet odno╢nie takich czynno╢ci jak instalacja i deinstalacja program≤w. Kosz zostaje zast▒piony jeszcze bardziej │atwym, intuicyjnym no i przede wszystkim bezpiecznym sposobem usuwania wszelkich element≤w.

Zako±czenie

Przedstawione przeze mnie w obu czΩ╢ciach tego artyku│u pomys│y nie wziΩ│y siΩ bynajmniej, ot tak, z nik▒d. Do ich powstania przyczyni│y siΩ bowiem moje cechy tak jako u┐ytkownika, jak i jako programisty. Nie jestem programist▒ kt≤ry tkwi│by w czasach DOSa, programowa│ w Asemblerze i robi│ inne rzeczy, kt≤re nigdy nikomu siΩ nie przydadz▒ po raz drugi, jak to siΩ m≤wi, odkrywaj▒c AmerykΩ. Tym nie mniej zd▒┐y│em poznaµ, jak to siΩ w DOS programowa│o. Mo┐e w│a╢nie dziΩki temu tak uwa┐ne obserwuje rozw≤j system≤w operacyjnych. Gdybym zaczyna│ od razu od Windows, pewnie nie zastanawia│bym siΩ nad takimi sprawami. Nie jestem te┐ programist▒, kt≤ry zna│by siΩ na systemach takich jak Linux, na sieciach komputerowych itp. my╢l▒c jedynie o takich w│a╢nie ludziach, kt≤rzy siΩ znaj▒ na rzeczy, kt≤rzy s▒ profesjonalistami. Moj▒ cech▒ jest patrzenie na wszystko od strony u┐ytkownika. U┐ytkownika, kt≤ry czΩsto nie jest zaawansowany w obs│udze komputera. Je╢li sam nie mogΩ obserwowaµ siebie jako takiego w│a╢nie, obserwujΩ moje otoczenie: koleg≤w, znajomych. I na podstawie ich zachowania, ich reakcji wysuwam wnioski takie jak w tym artykule.

Dlaczego jeszcze przedstawione tutaj sprawy to najwy┐ej pomys│y, nie wymys│y? Poniewa┐ obserwujΩ obecny bieg wydarze± i to, jak pewne rzeczy ewoluuj▒, s▒ doskonalone. Mo┐na by rzec, ┐e ┐yj▒ w│asnym ┐yciem. I to czΩsto sprawy, kt≤re, jak ju┐ pisa│em w I czΩ╢ci, s▒ dla wiΩkszo╢ci z nas na co dzie± oczywiste i nie zastanawiamy siΩ nad nimi. Na podstawie analizy rozwoju takich w│a╢nie spraw staram siΩ przewidzieµ, jak bΩd▒ one wygl▒da│y w przysz│o╢ci pod▒┐aj▒c nadal t▒ sam▒ drog▒. Zauwa┐ bowiem, ┐e ka┐de moje przemy╢lenie poparte jest faktami z przesz│o╢ci.

Literatura:

  1. Bartosik Tomasz "System przysz│o╢ci – przemy╢lenia"

  2. Sawicki Adam "System operacyjny przysz│o╢ci"

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