|
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:
-
Bartosik Tomasz "System przysz│o╢ci – przemy╢lenia"
-
Sawicki Adam "System operacyjny przysz│o╢ci"
Adam Sawicki
e-mail: sawickiap@poczta.onet.pl
|
|