Turinys
I dalis:
Apie ką kalbėsime?
Kodėl ji nepatogi?
Juk tai palengvina vartotojo darbą…
Galima rasti visokių įdomių dalykų…
Bet gi būtent langų sistema leidžia lygiagrečiai dirbti su keliomis užduotimis?
O kaip dėl tokių patogių dalykų kaip „point&click“ (parodyk ir nuspausk) ir „drag&drop“ (nešk ir numesk)?
II dalis:
Bet juk dažniausiai informacija pateikiama piktogramomis…
Argi „Norton Commander“ ir panašios programos nėra langai?
Bet juk langų sistemos yra ir klesti…
Gerai, bet negi dirbti vien komandinėje eilutėje?
Tai kaip padaryti komandinę eilutę patogią?
Tai viską dabar reiktų daryti iš komandinės eilutės? Netgi…
III dalis:
O jei reikia prieš akis turėti du dokumentus? Ir net skirtingose programose?
Bet viską galima daryti langų sistemoje, tai kodėl jos atsisakyti?
Ar yra kokių nors esminių skirtumų?
Bet dauguma vartotojų visgi dirba ne su atominiais reaktoriais!
Tai kaip, langų sistemos turės išnykti?
Informacijos šaltiniai
Visą referatą („MS Word“ dokumentas) galite atsisiųsti suglaudintą iš archyvo.
O jei reikia prieš akis turėti du dokumentus? Ir net skirtingose programose?
O kodėl? Jei pagalvojus, bet kuri būtinybė matyti dvi programas iškart, yra nepakankamo automatizavimo arba neapgalvotos sąsajos pasekmė. Arba reikiamus duomenis galima nukopijuoti į redaguojamą dokumentą ir ten jais manipuliuoti, arba žmogus dirba darbą, kurį galėtų padaryti kompiuteris. Neretai tenka rinkti tekstą, kurį sistemos ar programų kūrėjai kažkodėl tai padarė neįmanomu nukopijuoti ar tekstą iš grafinių failų.
Kai firmos „Xerox“ specialistai kūrė langų sąsają (kaip ir „Ethernet“ standartą), tačiau nebuvo užpatentuotas ir perleistas visiems norintiems jį tobulinti, jis buvo tarsi darbo stalo analogas, kuriame išmėtyti dokumentai. Tuo tarpu, buvo nekreipiama dėmesio į tai, kad iš tikro reikalingi du režimai: dokumentų peržiūros ir darbo su konkrečiu dokumentu. Žmogus niekada nežiūri iškart į du dokumentus – jis perkelia žvilgsnį nuo vieno prie kito.
Be to, sąsajos valdymo panelė, realizuota mygtukų sistema, neįskaito, kad valdant panelę didelę reikšmę turi lytėjimo jausmai; dėl to dizaineriai stengiasi mygtukams ir svirtims suteikti skirtingą formą, paviršių. Visa tai neįmanoma dirbant su praslystančia pelyte ir ekrane pavaizduotais mygtukais. Jau geriau naudotis klavišų kombinacijomis. PARC laboratorijoje jau tobulinamas nauja sąsaja „Hyperbolic Tree“, neturinti nieko bendro su mygtukais.
Bet viską galima daryti langų sistemoje, tai kodėl jos atsisakyti ?
Viena iš pagrindinių langų sąsajos trūkumų – didelių resursų poreikis. Žinoma, jei Jūs pasiruošęs sumokėti už galingiausią šiai dienai procesorių, nusipirkti daug operatyvinės atminties, tai ši problema nejaudina. Bet štai, jei Jūs nesate turtingi, jei firmoje yra ne viena dešimtis kompiuterių – teks susimąstyti. Juk visi dabartiniai „Windows Managers“, kiekvienam įvykiui (veiksmui) sukuria užduotis. Tarkim reikia perpiešti ekraną ar jo dalį, paspausti mygtuką klaviatūroje ar pele ar netgi paprasčiausiai pajudinote pelės žymeklį ekrane – langų menedžeris kaskart iškvies atitinkamą užduotį. Gaištamas laikas keičiant užduotis, perkraunant kešinę (cache) atmintį, naudojant kietą diską. Žodžiu, smarkiai naudojami mašinos resursai.
Labai įdomu lyginti programos bendravimą su „Window Manager“ ir X-terminalo su stotimi. Jei kompiuterį su spausdintuvu galima laikyti mini tinklu, tai kodėl programų bendravimą nepanagrinėjus kaip klientą-serverį? Tai štai, X-terminalas siunčia pranešimus stočiai apie kiekvieną įvykį – pelės maigymą, mygtuko paspaudimą, būtinybę perpaišyti langą. O štai HTML/Java terminalas trivialius atvejus (perpaišymą, peržiūrą, simbolio išvedimą) apdirba suinstaliuotoje programoje (naršyklėje – browser), mažiau trivialioms puslapiuose naudojamos programėlės „Java“ ir „JavaScript“, o pačios netrivialiausios, reikalaujančios naujų duomenų, perduodamos į WWW serverį. Štai toki, panašų, modeli reikėjo seniai realizuoti langų sistemose. Nesu įsitikinęs, kad vykdant užduotis, OS branduoliams ir tvarkyklėms vienam procesoriui reikalingas pluoštas programų, apdorojančių mažiau trivialius atvejus. Nors dėl daugiaprocesorinės architektūros, tai protingas sprendimas. Panaši sistema buvo realizuota „RiscOS“ – užduotis gali perduoti langą moduliui, kuris imasi aptarnauti jo pranešimus. Tam, langas turi būti aprašytas tam tikrais terminais – tai paveikslėlis, tai tekstas, tai mygtukas. Užduotis, sukūrusi langą, aptarnaus tik tai, kas nėra aprašyta tame modulyje (ten įtraukti labiausiai naudojami elementai). Deja, šis būdas padaryti langų programas labiau kompaktiškomis, nebuvo pritaikytas kitose operacinėse sistemose.
Objektiškai orientuotas programavimas leidžia neaptarnauti tų įvykių, kurie nedomina programos. Toks programavimas – vienas iš būdų slėpti nuo programuotojo realizacijos detales. Tai gerai, jei reikia greitai parašyti programą, kuri paskui bus ne itin dažnai naudojama. Arba jei reikia parašyti nešiojamą tarp skirtingų platformų programą (tikintis, kad kiekvienoje platformoje yra reikiamos bibliotekos). Visų įvykių apdorojimo galima išvengti tik leidus „Window Manager“ kontroliuoti trivialius langų elementus. Kol kas „Window Manager“ nesugeba pats apdoroti tokių įvykių. Taigi programa parašyta objektiškai orientuota kalba vistiek apdoros visus įvykius standartiniu mechanizmu (įdėtu kompiliatoriaus), kuris netikslingai apkraus kompiuterio resursus.
Na mašinos resursų ne taip gaila – ji geležinė, lai dirba. Gaila vartotojo, kuris leidžia begalę laiko, stengdamasis gražiai išdėlioti langus ekrane. O atsiradus naujam elementui, vėl tenka iš naujo viską pertvarkyti. Tai vienas iš pavyzdžių, kai sistemos lankstumas ne padidina, o sumažina darbo patogumą.
Štai dėl daugelio grupinio darbo uždavinių, dirbančių su kažkokiu duomenų rinkiniu, užtenka galingo kompiuterio, prie kurio pajungti pigūs tekstiniai terminalai. Aiškus tokios sistemos pranašumas – maža kaina, didelis kiekis vartotojų ir mažas tinklo apkrovimas (dar mažiau apkrauna tinklą HTML ir Java terminalai, bet kainuoja brangiau). Priedui – SQL-klientas, vykdomas vienoje mašinoje su SQL-serveriu ir atvaizduojantis savo darbo rezultatus terminaluose arba HTML dokumentuose, daug greičiau vykdo transakcijas, nei SQL-klientas, dirbantis kažkur tinkle. Tekstiniame terminale, tarp kitko, mažesnis elektromagnetinis spinduliavimas ir didesnė vaizdo kokybė, bet mažai kas apie tai susimąsto.
Ar yra kokių nors esminių skirtumų?
Mano nuomone, sisteminiam administratoriui, gražus grafinis duomenų pavaizdavimas tiesiog pavojingas – įsisavinęs „nurodyk ir nuspausk“, „tempk ir numesk“ technologijas, imasi valdyti sistemą, neįsigilinęs į jos funkcionavimo pagrindus. Dar blogiau – daugelis ima maišyti duomenis su grafinės sąsajos detalėmis. Tai nėra baisu iki tol, kol sistema veikia kūrėjo sugalvotuose sąsajos rėmuose. Kaip žinoma, katastrofų nereikia planuoti – ir kūrėjo nenumatytos situacijos būtinai įvyksta. Štai todėl dabar siūloma serverių OS nenaudoti GUI (grafinės vartotojo sąsajos).
Jei Jūs nustatinėjate IP-maršrutizatorių, jokis grafinė sąsaja nepadės Jums, jei nežinosite tokių dalykų kaip tinklo numeris, DNS, „gateway“, ką reiškia užrašai – MX, NS, A, PTR, HS-INFO. O kovojant su pranešimais „No Access“, reikia nusimanyti sistemos vartotojų teisėse. Ir štai – „intuityviai suprantama“ sąsaja, net su kontekstine pagalba, mažai padės, jei neturėsite elementarių žinių.
Vartotojų teisių (priėjimo) nustatymas kokiu nors „Security Manager“ mažai padės, jei sistemoje yra nors vienas slaptas būdas apeiti šiuos atributus. Tuo tarpu visos programos rodys, kad sistema visiškai apsaugota nuo nepageidaujamų asmenų. Kaip tada aptikti, ar sistemoje palikta „skylė“? – tiktais detaliai aiškinantis sistemą, nepasitikint įprastų „utilitų“ pranešimais. Reikia turėti omenyje, kad kartą įsilaužęs į sistemą „blogietis“ gali tuos „utilitus“ gali pakeisti savais, kurie niekada jau nepasakys tiesos tikrajam administratoriui.
Dabar įsivaizduokite, kad branduolinio reaktoriaus valdymas patikėtas operatoriui, kuris pasitiki grafine sąsaja. Kol viskas einasi gerai, operatorius lengvu pelės judesiu valdo reaktoriaus darbą, remdamasis akivaizdžiai parodytais funkcionavimo parametrais. Bet staiga jis nepataiko ir paspaudžia ne tą mygtuką (kad paspausti mygtuką ekrane nereikia nuimti apsauginių dangčių). Arba reaktorius pradėjo veikti nenumatytu programos kūrėjo režimu, ar sugedo koks nors valdantis elementas. Jei operatorius studijavo realų reaktoriaus mechanizmą, o geriau – dalyvavo jo surinkime, jis galės, manipuliuodamas likusiomis jo valioje valdymo priemonėmis sulaikyti reaktorių nuo sprogimo. O jei jis įprato prie savo sąsajos ir nežino nieko apie realų reaktorių, kuri valdo?
Bet dauguma vartotojų visgi dirba ne su atominiais reaktoriais !
Taip, bet ir jiems nepamaišytų žinoti sistemos funkcionavimo detales. Tarkim, firmos „Acorn“ kompiuteriuose (B+modelyje) buvo nuostabių operacinės sistemos savybių: sisteminis iškvietimas „OSByte“ atitinka komandai *FX, t. y. komanda:
*FX argumentas1 argumentas2 argumentas3
su skaitiniais argumentais atitinka asemblerio kodui:
LDA #argumentas1
LDX #argumentas2
LDY #argumentas3
JSR OSByte
Tiesa, tada neįmanoma sužinoti kokias reikšmes OS gražina į registrus A, X ir Y. Taip galima užduoti automatinį klaviatūros atkartojimą, funkcinių klavišų ir rodyklių veiksmus, pakeisti I/O kryptis, suderinti lygiagrečius ir nuoseklius prievadus, vaizdo sistemą ir dar daug ką. Tai padaryti galėjo tiek vartotojas, tiek programuotojas.
DOS siūlo daug prastesnį modelį: tarp komandų:
MODE con RATE=r DELAY=d
ir jos asemblerio analogo:
MOV AX, 0305H
MOV BL, 32-r
MOV BH, d-1
INT 16H
jau nėra tokio vienareikšmiško atitikimo. Tačiau vartotojas gali lengvai parsirašyti script’ą arba, kaip jį vadina DOS, batch-failą (komandų paketą), kuris savyje turės įprastines rašomas klaviatūra komandas. Vartotojas gali sau pasilengvinti gyvenimą, bet tapti programuotoju bus daug sunkiau.
Sistemose, naudojančiose meniu sąsają, paketines komandas sukurti daug sunkiau – paprastas vartotojas šito jau nesugebės padaryti. Būtent todėl, patogios vartotojo sąsajos kuriamos žmonėms, kurie vargo komandinėje eilutėje be jos redagavimo galimybių, be patogių „utilitų“ – bet kuo patogesnis jiems sudaroma sąsaja, tuo greičiau sistema nustoja vystytis. Tokios stagnacijos išvengti pavyko tik „Acorn“ ir „Unix“. „Acorn“ pradžioje atidirbo kompleksinius sprendimus, jungiančius patį kompiuterį ir programinę įrangą (nuo OS iki tekstinių redaktorių), užprogramuotą ROM. Daugiausia pelno duoda „geležies“ (hardware) pardavimas, tai todėl firma tapo suinteresuota plėsti programuojančių šioje platformoje ratą. Tiek firmos, tiek nepriklausomų programuotojų labiausiai pavykusias versijas dėdavo į naujus – tobulesnius ROM.
„Unix“ – unikalus fenomenas tarpe operacinių sistemų, sukurtų skirtingoms aparatūrinėms platformoms, sujungtas bendrų standartų. Nežiūrinti į kai kurias šeimas, kaip „SystemV“ ir BSD arba QNX, „Unix“ išsaugo suderinamumą programų išeities tekstų lygyje (sukompiliuotos programos nepernešamos netik prie kito procesoriaus, bet net į kitą „Unix“, dirbantį su tokiu pačiu procesoriumi). Net tos pačios firmos skirtingose OS versijose sunku pernešti programas. „Unix“ gyvybingumas ilgą laiką buvo palaikomas laisvai platinant išeities kodus. Paskutiniu metu komercinių „Unix“ išeities tekstai nepasiekiami, bet užtai atsirado nemokami „FreeBSD“ ir „liaudiškas Unix“ – „Linux“. „Unix“ tobulėjo skatinamas skirtingų programuotojų grupių konkurencijos: kiekvienas norėjo turėti tobulesnę sistemą, o sugalvoti naudingi atradimai greitai būdavo pritaikomi naujose realizacijose.
Tai kaip, langų sistemos turės išnykti ?
Nemanau. Pagal entropijos augimo teoriją, pasaulis laikui bėgant tampa vis blogesnis. Jei palauksime dar truputį, tai sulauksime naujo, dar labiau nepatogios sąsajos. Galimas daiktas tai bus garsinė sąsaja, kai mikčius ar paprasčiausiai peršalęs žmogus, per klaidą, vietoj to, kad nusiųsti elektroninį laišką, ištrins visą savo metų darbą. Juk kompiuteris geras tuo, kad klaidas daro daug greičiau nei žmogus ;-) Taip, kad po dešimties metų galbūt rašysiu referatą apie bjaurią, nepatogią, nenatūralią sąsają, su ilgesiu prisimindamas, kaip senus gerus langus lengva valdyti pele ;-).
Informacijos šaltiniai
- http://www.linux.com/
- http://www.microsoft.com/
- http://w3.misa.ac.ru/
- Įvairios WWW konferencijos.