"western">Sushchestvuet vliyatel'naya tendenciya v sovremennyh gumanitarnyh disciplinah, poluchivshaya rasprostranenie v osnovnom v angloyazychnom mire i svyazannaya s ostroumnymi teoriyami kanadskogo professora Marshala Mak-L'yuena, utverzhdavshego, chto pis'mennaya ("vizual'naya") kul'tura svyazana s gipertrofiej analiticheskih funkcij chelovecheskogo intellekta na opredelennyh stadiyah ego razvitiya, i chto ee smenyaet kul'tura "audial'naya", napravlennaya na sintez celogo putem rasseivaniya vnimaniya, i vozvrat k doindividualisticheskomu, obshchinnomu soznaniyu, ot polisa i urba -- k "global'noj derevne".

S etoj smenoj on svyazyval populyarnost' televiden'ya (i utratu populyarnosti chteniya kak dosuga) i "klip-kul'tury", a ego posledovateli ukazyvayut i na nesomnennyj rost v devyanostye populyarnosti "graficheskih pol'zovatel'skih interfejsov" komp'yuterov, prichem ne tol'ko v bytu, no i v delovom okruzhenii.

Mak-L'yuen, vprochem, v svoem "zondirovanii" (kak on imenoval svoe tvorchestvo, ves'ma posledovatel'no otkazyvayas' nazyvat' svoi pozdejshie proizvedeniya "tekstami") byl dostatochno ironichen, chto v gorazdo men'shej stepeni nablyudaetsya v tvorchestve ego posledovatelej.

Razumeetsya, kazhdyj imeet pravo, hotya ono osobo i ne ogovoreno v Konstitucii, na personal'nye fobii, i dazhe pravo postfaktum racionalizirovat' ih v teoriyah. Odnako my polagaem, chto nikomu ne dolzhno byt' pozvoleno translirovat' eti fobii drugim, tem menee -- podrastayushchemu pokoleniyu.

Komp'yutery (i novaya generaciya "umnyh" priborov, mashin i mehanizmov, vklyuchaya promyshlennye, kancelyarskie i bytovye) otlichayutsya ot vsego, sozdannogo chelovekom ranee sposobnost'yu neposredstvenno manipulirovat' simvolami, vosprinimat' simvoly i soobshchat' simvoly cheloveku, t.e., v nekotorom rode vesti s nim dialog.

Stoit li nazyvat' eto svojstvo komp'yuterov i programm "iskustvennym intellektom" -- otdel'nyj vopros, no sam fakt, po nashemu mneniyu, dolzhen zanyat' odno iz osnovnyh mest v soderzhanii uchebnogo predmeta informatiki. V etom smysle, nablyudaemaya tendenciya k vytesneniyu programmnogo instrumentariya, yavlyayushchego eto svojstvo v samoj metodicheski i didakticheski otkrovennoj forme, iz shkol'nyh kursov kazhetsya nam krajne nepriyatnoj i nuzhdayushchejsya v korrekcii.

My s entuziazmom otnosimsya k primeneniyu graficheskih interfejsov, kak v tradicionnoj sfere komp'yuternoj grafiki, tak i v novyh, perspektivnyh prilozheniyah. Kartinka chasto stoit sotni slov, a energichnyj zhest sposoben vyrazit' prostuyu mysl' bystro i odnoznachno.

Odnako mysl' o tom, chto piktogrammami i zhestami mozhno zamenit' polnocennyj yazyk, napominaet nam lish' odnu iz genial'nyh idej akademii nauk v Lagado, opisannoj Sviftom v "Tret'em puteshestvii Gullivera":

"A tak kak slova sut' tol'ko nazvaniya veshchej, to avtor proekta vyskazyvaet predlozhenie, chto dlya nas budet gorazdo udobnee nosit' pri sebe veshchi, neobhodimye dlya vyrazheniya nashih myslej i zhelanij".

Glyadya na vizual'no-dizajnerskoe proizvedenie ocherednogo ih posledovatelya, lish' udivlyaesh'sya: iz kakogo meshka on dostal znachok, vyrazhayushchij ideyu: "Vhod s zhuyushchimi morozhenoe nesovershennoletnimi leopardami v temnoe vremya sutok zapreshchen"? I pochemu on dumaet, chto etot znachok intuitivno ponyaten?

"Mne chasto sluchalos' videt' dvuh takih mudrecov, iznemogavshih pod tyazhest'yu noshi ... Pri vstreche na ulice oni snimali s plech meshki, otkryvali ih i, dostav ottuda neobhodimye veshchi, besedovali v techenie chasa".

V Ladago popytka mudrecov osushchestvit' masshtabnoe vnedrenie svoego izobreteniya zakonchilas' tem, chto:

"ZHenshchiny, vojdya v stachku s nevezhestvennoj chern'yu ... prigrozili podnyat' vosstanie, trebuya, chtoby yazyku ih byla predostavlena polnaya volya ... tak prostoj narod postoyanno okazyvaetsya neprimirimym vragom nauki!"

Grafik naglyaden, lish' poka cifry na nem mozhno razglyadet', a piktogrammy osmyslenny tol'ko pri vybore iz nemnogih variantov (dazhe sotnyu dorozhnyh znakov vyuchit' uzhe neprosto). Dlya artikulirovannogo i gibkogo vyrazheniya idej (daleko ne vse iz kotoryh mozhno narisovat') i ih svyazi chelovechestvo vyrabotalo takoj instrument, kak yazyki (estestvennye i formal'nye), i zameny im poka ne predviditsya.

6.2 Komandnaya obolochka: osnovnye ponyatiya

Opracionnaya sistema, kak "sreda obitaniya" fajlov i processov, sostoit iz yadra i obolochki s utilitami. YAdro pri normal'nom funkcionirovanii sistemy ostaetsya dlya pol'zovatelya "veshch'yu v sebe", kotoruyu neposredstvenno ne vidno i ne slyshno. V to zhe vremya, tol'ko yadro, imeya dostup k oborudovaniyu, sposobno operirovat' fajlami i processami, t.e. osushchestvlyat' "deyatel'nost'" s nekotorym ob容ktivnym rezul'tatom.

Pol'zovatelyu eta funkcional'nost' dostupna tol'ko oposredovanno, cherez osobuyu programmu, kotoraya "obshchaetsya" s nim posredstvom terminala i vpolne logichno nazyvaetsya "obolochkoj". Teoreticheski obolochka mogla by realizovat' zamknutyj yazyk dialoga (i rannie arhitektury OS nosyat sledy takih popytok), no v otkrytyh sistemah prinyata drugaya filosofiya -- razdeleniya, specializacii i minimizacii programm. Poetomu na praktike obolochka ispol'zuetsya vmeste s utilitami -- naborom samyh chasto upotreblyaemyh programm -- i lish' sintaksis i semantika obolochki vkupe s sintaksisom i semantikoj ispol'zuemyh utilit i obrazuyut polnocennyj formal'nyj yazyk dialoga pol'zovatelya s sistemoj. V iyune 1993 g. etot yazyk byl standartizovan Mezhdunarodnoj organizaciej standartizacii (dokument ISO/IEK IS 9945-2:1993), no izvesten on bol'she pod svoim "otraslevym" nazvaniem POSIX.2.

Sushchestvuet mnozhestvo realizacij standartnogo yazyka obolochki i utilit, voshodyashchih k sistemam Unix, BSD, proektu GNU i nekotorym drugim proektam. Naibolee populyarnoj na segodnya yavlyaetsya bash v sostave GNU Tools, razrabotannyh chastichno v Fonde svobodnogo programmnogo obespecheniya i chastichno pri ego podderzhke. GNU Tools yavlyayutsya, naryadu s yadrom Linux, osnovoj operacionnyh sistem na etom yadre, no dostupny i dlya drugih OS, vklyuchaya al'ternativnye arhitektury.

V tehnicheskom aspekte obolochka predstavlyaet soboj postrochnyj interpretator prostogo yazyka sentencional'nogo (direktivnogo) programmirovaniya, v kachestve operatorov kotorogo mogut ispol'zovat'sya utility, kak, vprochem, i lyubye drugie programmy, vklyuchaya, v chastnosti, napisannye samim pol'zovatelem, i, v eshche bol'shej chastnosti, napisannye na yazyke samoj obolochki, ibo, buduchi interpretatorom, ona mozhet chitat' komandy kak interaktivno (s terminala), tak i iz fajla.

6.3 Komandnaya obolochka kak instrument

Pol'zovanie obolochkoj ochen' prosto: v otvet na priglashenie ("podskazku"), vydavaemoe nahodyashchejsya v ozhidanii obolochkoj, pol'zovatel' vvodit komandu i, posle ee vypolneniya (vozmozhno, soprovozhdayushcheesya vyvodom na ekran nekotoroj informacii), obolochka snova vyvodit priglashenie i ozhidaet sleduyushchej komandy. I tak -- poka pol'zovatel' ne vvedet simvol konca fajla (ili komandu exit), posle chego seans raboty zakonchitsya. Podobnym obrazom (s nekotorymi nyuansami) obolochka interpretiruet i fajl "scenariya" (programmy) s zapisannymi v nem komandami (vozmozhno, s ispol'zovaniem upravlyayushchih konstrukcij; obshchuyu harakteristiku obolochki kak yazyka programmirovaniya sm. nizhe).

$ ls
!                     k7m-104.old                tmp.sh
EPIA_Manual_v1.0.pdf  k7m-104.pdf                wget-log
[0-11-9].jpg          words-to-avoid.ru.html.1   army_engl.txt
names                 words-to-avoid.ru.html.2   dengi.rar
opensource.mit.edu    www.computerra.ru          econ.pdf
ruspunk.swf           www.ctc.msiu.ru            firewalls.tar
school                tmp                        gosorgan.amursk.ru
tmp.1                 www.oreilly.com            j463_k7m.pdf
tmp.html
$_
Ris. 1


Prostejshij "obmen replikami" mezhdu obolochkoj i pol'zovatelem priveden na ris. 1 (zdes' i dalee vvodimyj pol'zovatelem tekst vydelen poluzhirnym shriftom, a nevidimye pri vvode simvoly -- kursivom. Vvedya komandu ls (ot LiSt -- vyvesti spisok fajlov v tekushchem kataloge), pol'zovatel' poluchil spisok fajlov, nahodyashchihsya v tekushchem kataloge.

$ ls -l
total 3707
drwxr-xr-x   2 maksim   None         4096 Oct 29  2001 !
-rw-r--r--   1 maksim   None        19743 Nov  5 00:08 EPIA_Manual_v1.0.pdf
-rw-r--r--   1 maksim   None           39 May 27  2002 [0-11-9].jpg
-rw-r--r--   1 maksim   None       666120 Nov 12  2001 army_engl.txt
-rw-r--r--   1 maksim   None        12402 Oct 11  2001 dengi.rar
-rw-r--r--   1 maksim   None       101873 Oct  8  2001 econ.pdf
-rw-r--r--   1 maksim   None      2129920 Aug 15  2001 firewalls.tar
drwxr-xr-x   2 maksim   None            0 Nov 10 08:48 gosorgan.amursk.ru
-rw-r--r--   1 maksim   None       768086 May  1  2002 j463_k7m.pdf
-rw-r--r--   1 maksim   None       340016 May  1  2002 k7m-104.old
-rw-r--r--   1 maksim   None      2543572 Dec  9  2001 k7m-104.pdf
-rw-r--r--   1 maksim   None           23 Nov 28 03:44 names
drwxr-xr-x   5 maksim   None         4096 Nov  7 07:08 opensource.mit.edu
-rw-r--r--   1 maksim   None       855480 Jun  7 17:01 ruspunk.swf
drwxr-xr-x   5 maksim   None            0 Oct 14  2001 school
-rw-r--r--   1 maksim   None        16000 Aug 25 02:24 tmp
-rw-r--r--   1 maksim   None          467 Oct 29  2001 tmp.1
-rw-r--r--   1 maksim   None        67888 Sep 26  2001 tmp.html
-rwxr-xr-x   1 maksim   None          198 Aug 23 04:48 tmp.sh
-rw-r--r--   1 maksim   None          835 Nov 27  2001 wget-log
-rw-r--r--   1 maksim   None        12698 Jun 16  2000 words-to-avoid.ru.html.1
-rw-r--r--   1 maksim   None        12698 Jun 16  2000 words-to-avoid.ru.html.2
drwxr-xr-x   6 maksim   None         4096 Sep 26  2001 www.computerra.ru
drwxr-xr-x   3 maksim   None            0 Oct  9  2001 www.ctc.msiu.ru
drwxr-xr-x  12 maksim   None         4096 Apr 26  2002 www.oreilly.com
$_

Ris. 2

Nachinayushchih pol'zovatelej (osobenno vospitannyh v subkul'ture PK) chasto udivlyaet takaya veshch': esli dat', naprimer, komandu ls, rezul'tat budet ves'ma lakonichnym, v to vremya, kak u nee est' klyuchi-modifikatory, pozvolyayushchie poluchit' ukazannyj spisok v vide, gorazdo bolee podhodyashchem dlya vospriyatiya chelovekom (sm. ris. 2). Pochemu zhe umolchaniem (variantom, primenyaemym v sluchae, esli klyuchi yavno ukazany ne byli) yavlyaetsya imenno lakonichnaya, "nekrasivaya", "neudobnaya" forma?

Prichina ochen' prosta: kak i lyubaya drugaya standartnaya utilita, ls gorazdo chashche ispol'zuetsya ne operatorom, a kakoj-nibud' drugoj programmoj, poetomu ee vyvod prisposoblen dlya naibolee udobnoj ego posleduyushchej obrabotki. Podacha komandy s klaviatury -- isklyuchenie, a ne pravilo, i dlya udobstva operatora predusmotren sootvetstvuyushchij klyuch. Esli pol'zovatelyu chasto nuzhno vyvodit' spisok fajlov na ekran, on zaprogrammiruet obolochku, opredeliv dlya sebya sinonim (naprimer, sinonimom konstrukcii ls -al --color=always | less, postranichno vyvodyashchej spisok fajlov so vsemi atributami i s vydeleniem tipov fajlov cvetami, mozhet byt' opredelena komanda lls).

Ponyat' etu prostuyu veshch' oznachaet ponyat' ves'ma ser'eznuyu chast' komp'yuternoj kul'tury. Universal'nye sistemy (naprimer, OS), v otlichie ot specializirovannyh (naprimer, mul'timedijnyh kioskov ili igrovyh pristavok) sozdayutsya ne dlya udobstva pol'zovaniya imi "iz korobki" abstraktnym "prostym pol'zovatelem", a dlya udobstva ih nastrojki (programmirovaniya) konkretnym pol'zovatelem pod ego konkretnye nuzhdy. |to ne udobstvo, a metaudobstvo, ne vstroennaya v steny komnaty mebel', a modul'nyj garnitur s instrukciej po sborke, ne "dlya vseh", a dlya kazhdogo. A "prostyh" pol'zovatelej ne byvaet, vse my slozhnye i raznye.

$ cat
Petya
Petya
YAna
YAna
Vasya
Vasya
Masha
Masha
^D
$_
$ cat >names
Petya
YAna
Vasya
Masha
^D
$ ls names
names
$ cat <names
Petya
YAna
Vasya
Masha
$_

Ris. 3

Ris. 4


Utility mogut ne tol'ko vyvodit' tekst, no i chitat' vvod. Prostejshij primer -- utilita konkatenacii cat, kotoraya, buduchi izdana bez argumentov, prosto postrochno kopiruet tekst (sm. ris. 3). Utilita, chitayushchaya chto-libo iz standartnogo vvoda i vyvodyashchaya chto-libo na standartnyj vyvod, nazyvaetsya fil'trom, fil'trami yavlyayutsya mnogie iz standartnyh POSIX-utilit.

Standartnyj vvod-vyvod -- eto dva fajla, kotorye po umolchaniyu svyazany s tekushchim terminalom. Moshchnejshim sredstvom obolochki yavlyaetsya perenapravlenie vvoda i vyvoda v proizvol'nyj fajl, zadayushcheesya sootvetstvenno znakami < i >, za kotorymi sleduyut imena fajlov. Na ris. 4. pokazano perenapravlenie vyvoda komandy cat v fajl names i perenapravlenie vvoda etoj komandy iz sozdannogo predydushchej komandoj fajla. Vazhno zametit', chto perenapravlenie standartnogo vvoda-vyvoda proizvoditsya imenno obolochkoj, "umeniya" raspoznavat' perenapravlenie kak svoi argumenty ot samoj utility (ili, k primeru, pol'zovatel'skoj programmy) ne trebuetsya.

Eshche odnim moshchnym sredstvom obolochki yavlyaetsya tak nazyvaemyj "konvejer" (ili "kanal") -- soedinenie vyvoda odnoj komandy s vvodom drugoj.

$ cat names names >names2
$ cat <names2
Vasya
Masha
Petya
YAna
Vasya
Masha
Petya
YAna
$ sort <names2
Vasya
Vasya
Masha
Masha
Petya
Petya
YAna
YAna
$ uniq <names2
Vasya
Masha
Petya
YAna
Vasya
Masha
Petya
YAna
$ sort <names2 | uniq
Vasya
Masha
Petya
YAna

Ris. 5

Na ris. 5 priveden razvernutyj primer. Komandoj cat names names >names2 my sozdaem fajl names2, soderzhashchij udvoennoe soderzhimoe ranee sozdannogo fajla names. Utilitoj sort ego mozhno otsortirovat' v alfavitnom poryadke, a pro utilitu uniq izvestno, chto ona udalyaet povtoryayushchiesya stroki. Odnako udalyaet ona tol'ko podryad idushchie stroki, poetomu, chtoby unikalizirovat' stroki v fajle, soderzhashchem ih v proizvol'nom poryadke, fajl nuzhno sperva otsortirovat'.

Nam uzhe izvestno, chto perenapravleniem vvoda-vyvoda mozhno sozdat' vremennyj fajl (eto vyglyadelo by tak: sort <names2 >temp ; uniq temp ; rm temp), odnako konvejer, zadavaemyj simvolom |, pozvolyaet "zamknut'" vyvod komandy sort na vvod uniq bez sozdaniya promezhutochnogo fajla, kotoryj potom nuzhno udalyat': sort <names2 | uniq temp. Cepochka komand, ob容dinyaemyh v konvejer, mozhet byt' proizvol'noj dliny.

I, nakonec, eshche odnim moshchnym sredstvom komandnoj obolochki yavlyaetsya podderzhka shablonov imen fajlov (usechennogo varianta tak nazyvaemyh "regulyarnyh vyrazhenij"). Esli my hotim udalit' iz kataloga, soderzhimoe kotorogo otobrazhalos' v primere na ris. 1, fajly words-to-avoid.ru.html.1 i words-to-avoid.ru.html.2, nam ne obyazatel'no peredavat' ih spisok komande rm; dostatochno opredelit' vyrazhenie, odnoznachno ih harakterizuyushchee, naprimer words-to-avoid*. Metasimvol * oznachaet lyuboe kolichestvo lyubyh simvolov; sushchestvyut i drugie metasimvoly. Rezul'tat vypolneniya etoj komandy v ukazannom kataloge v tochnosti ekvivalenten komande rm words-to-avoid.ru.html.1 words-to-avoid.ru.html.2, prichem "raskrytie" metasimvolov vypolnyaet, opyat' zhe, ne utilita, a sama obolochka.

6.4 Komandnaya obolochka kak yazyk programmirovaniya

V kachestve yazyka programmirovaniya standartnaya obolochka mozhet byt' oharakterizovana sleduyushchim obrazom:

Takim obrazom, yazyk obolochki horosho podhodit dlya togo, dlya chego on prednaznachen: napisaniya programm (scenariev) raboty s fajlami (nebezynteresno, chto znachitel'naya chast' samih otkrytyh OS napisana imenno na yazyke obolochki). On ne slishkom podhodit dlya resheniya algebraicheskih zadach, hotya otsutstvie vstroennogo mehanizma raboty s plavayushchej arifmetikoj mozhet byt' obojdeno primeneniem special'nyh utilit, naprimer, universal'nogo kal'kulyatora proizvol'noj tochnosti bc, i hraneniem znachenij veshchestvennyh chisel v strokovyh peremennyh. Podobnym zhe obrazom ispol'zovaniem vneshnih utilit mozhno pisat' na etom yazyke programmy s okonnym (kak psevdograficheskim, tak i graficheskim) interfejsom.

Sintaksis yazyka (v chastnosti, sintaksis vyrazhenij) ne otlichaetsya vneshnim izyashchestvom (hotya dlya znatoka scenarii mogut byt' ves'ma krasivymi i netrivial'nymi) i vryad li mozhet byt' rekomendovan7 v kachestve pervogo yazyka pri znakomstve s programmirovaniem. Otsutstvie tipizacii i nepodderzhka inyh, krome sentencional'noj, paradigm programmirovaniya, vo vsyakom sluchae, sluzhat veskim povodom k tomu, chtoby ne vvodit' ego v uchebnyj kurs v kachestve edinstvennogo.

V to zhe vremya, hotya by begloe znakomstvo s yazykom obolochki, pomimo ochevidnogo pragmaticheskogo znacheniya, didakticheski polezno. On vpolne prigoden dlya demonstracii takih vazhnyh ponyatij, kak prisvoenie znachenij, smysl i ispol'zovanie upravlyayushchih konstrukcij, podprogrammy (funkcii). Tehnicheski on prost v ispol'zovanii blagodarya nalichiyu interpretatora bash (mogushchego rabotat' v POSIX-rezhime, t.e. v strogom sootvetstvii so standartami) pod rukoj v lyuboj standartnoj OS (a takzhe nalichiyu portov togo zhe bas prakticheski dlya lyuboj al'ternativnoj platformy). On mozhet byt' edinstvennym sentencional'nym yazykom v obshcheobrazovatel'nom kurse informatiki.

6.5 Resursy

Metodicheskaya literatura, special'no orientirovannaya na shkol'nyj kurs i posvyashchennaya programmirovaniyu na yazyke obolochki, na russkom yazyke segodnya otsutstvuet, hotya sleduet otmetit', chto "klassicheskie" rukovodstva po Unix za tridcat' let razvitiya otrasli dostigli prakticheski kristal'noj prozrachnosti izlozheniya i legko mogut byt' adaptirovany dlya nuzhd kak uchitelej, tak i samih uchashchihsya. Po-russki nam izvestna edinstvennaya kniga [11], special'no posvyashchennaya programmirovaniyu na yazyke obolochki.

Interpretatory yazyka obolochki yavlyayutsya neot容mlemoj chast'yu otkrytyh sistem i vklyucheny v sostav lyubogo distributiva (tak zhe, kak i rukovodstva pol'zovatelya); luchshim iz nih my schitaem svobodnyj bash, razrabotannyj Fondom svobodnogo programmnogo obespecheniya. Dlya pol'zovatelej al'ternativnyh arhitektur (naprimer, Microsoft Windows) my rekomenduem takzhe bash, dostupnyj v sostave mnogochislennyh programmnyh paketov.

Dlya Microsoft Windows rekomenduetsya ustanovka paketa Cygwin, soderzhashchego utility GNU i nekotorye drugie programmy, pozvolyayushchie organizovat' standartnuyu rabochuyu sredu. Sleduet uchest', chto pri rabote v versiyah MS Windows, osnovannyh na MS-DOS (MS Windows 95/98/Me), u mnogih programm voznikayut slozhnosti iz-za otsutstviya v MS-DOS kontrolya za pravami dostupa k fajlam i katalogam (versii, osnovannye na NT -- MS Windows NT/00/XP, lisheny etogo nedostatka), a takzhe to, chto lokalizovannaya dlya russkoj sredy sborka Cygwin v nastoyashchee vremya ne postavlyaetsya. Dlya podderzhki kirillicheskih simvolov neobhodimo v kataloge pol'zovatelya sozdat' fajl s imenem .inputrc, soderzhashchij stroki:

set meta-flag on
set convert-meta off
set output-meta on

Al'ternativoj Cygwin (po ryadu prichin menee predpochtitel'noj) yavlyaetsya ispol'zovanie sistemy Interix UNIX Tools for Windows, takzhe soderzhashchej utility GNU, vklyuchaya bash (ee mozhno priobresti cherez Microsoft na diske libo skachat' s ih sajta).

Lekciya 7. Graficheskij interfejs pol'zovatelya

Do serediny devyanostyh sushchestvovali otdel'no komp'yuternaya grafika i otdel'no -- nastol'nye igry v komp'yuternuyu grafiku. Pomnyashchie istoriyu otechestvennoj shkol'noj informatizacii chitateli, vozmozhno, stalkivalis' s chudom tehniki pod nazvaniem "cifrovoj displej rastrovyj" (CDR), kotoroe udavalos' podklyuchit' k pervomu otechestvennomu personal'nomu komp'yuteru DVK, chtoby otobrazhat' na ekrane televizora neskol'ko tysyach pikselov v chetyreh cvetah. V to vremya v Laboratoriyah Komp'yuternoj Grafiki nekotoryh vuzov mozhno bylo vstretit' Graficheskie Rabochie Stancii s vektornymi ustrojstvami i X-terminalami, i dazhe plotterami.

Zakon Mura tem vremenem delal svoe (v dannom sluchae, ne chernoe, a mnogocvetnoe) delo, i k seredine devyanostyh na komp'yutere s processorom Intel 486 uzhe zapuskalas' ta samaya sistema, kotoruyu pyat'yu godami ran'she nablyudat' mozhno bylo lish' na X-terminalah i graficheskih stanciyah, stoivshih kakih-to nemyslimyh (chto po tem vremenam, chto segodnya) deneg.

Igry v samodel'nuyu grafiku, konechno, prodolzhayutsya i segodnya, no v celom mir vossoedinilsya, i osoboj nuzhdy v takih igrah davno net. Hotya -- takova dialektika massovyh rynkov -- imenno eti igry (vklyuchaya igry v bukval'nom smysle) porodili spros na deshevye ustrojstva (prezhde vsego, graficheskie akseleratory), kotorye i delayut nastoyashchuyu komp'yuternuyu grafiku dostupnoj pol'zovatelyu massovoj x86- i PowerPC-tehniki, dazhe ustarevshie "personalki" -- sopostavimymi s X-terminalami, a bolee novye i moshchnye -- sopernikami i s professional'nyh graficheskih rabochih stancij nachal'nogo i srednego urovnya.

7.1 X Window System i Xfree86

X Window System -- odin iz samyh bol'shih i uspeshnyh proektov v istorii komp'yuternoj tehniki -- voshodit k 1984 g., kogda razrabotchiki dvuh sistem komp'yuternoj grafiki, pretenduyushchih na universal'nost' -- proektov Athena (Massachussetskij tehnologicheskij institut) i W Windowing (Stenfordskij universitet) -- reshili ob容dinit' svoi usiliya. S teh por prakticheski kazhdaya kompaniya, ser'ezno zanimayushchayasya grafikoj, poschitala svoim dolgom vnesti kakie-libo razrabotki v sistemu, formal'nym "hozyainom" kotoroj v 1987 g. stal vnov' sozdannyj X Consortium (nyne X Open Group, www.X.org).

S teh por X proshel cherez odinnadcat' osnovnyh relizov i mnozhestvo versij.

Dal'nejshee izlozhenie orientirovano na svobodnuyu realizaciyu X, kotoraya nazyvaetsya XFree86, podderzhivaetsya odnoimennym partnerstvom (www.xfree86.org) i voploshchaet na segodnya versiyu 4.2 tekushchego reliza. XFree86 -- samaya populyarnaya realizaciya X, ona postavlyaetsya v sostave podavlyayushchego bol'shinstva otkrytyh sistem (kak svobodnyh, tak i nesvobodnyh) dlya x86-sovmestimyh komp'yuterov, podderzhivaet besprecedentno shirokij spektr oborudovaniya i, blagodarya dostupnosti ishodnyh tekstov i pol'zovatel'skoj auditorii v desyatki millionov chelovek, dostatochno "vylizana", po krajnej mere, naskol'ko eto vozmozhno dlya takogo raznoobraziya "zheleza". Nesmotrya na to, chto istoricheski cifry "86" v nazvanii paketa otnosyatsya k sootvetstvuyushchemu semejstvu processorov ot Intel, sovremennye versii XFree86 realizovany dlya bol'shinstva drugih populyarnyh processorov. XFree86 dostupen i dlya nekotoryh al'ternativnyh arhitektur OS, vklyuchaya Microsoft Windows NT.

Bol'shinstvo nizheskazannogo spravedlivo dlya lyuboj realizacii X na lyubom oborudovanii i pod lyuboj OS, spisok kotoryh mozhno najti na www.X.org.

7.2 Cvetnoj sendvich

To, chto pol'zovatelyu, sidyashchemu za monitorom, predstavlyaetsya sploshnoj graficheskoj operacionnoj sredoj, realizovano kak mnogoslojnyj sendvich tehnologij.

Neposredstvenno s oborudovaniem (videosistemoj, ustrojstvami vvoda i dinamikom) rabotaet X-server. |ta programma zahvatyvaet oborudovanie i predostavlyaet ego vozmozhnosti drugim programmam kak resursy (sobstvenno, imenno poetomu ona i nazyvaetsya serverom) po osobomu protokolu, kotoryj tak i nazyvaetsya, X-protokol. Perechislennoe oborudovanie v sovokupnosti nazyvaetsya X-terminalom (apparatnym X-terminalom nazyvaetsya i specializirovannyj komp'yuter, na kotorom ispolnyaetsya isklyuchitel'no X-server).

Zdes' srazu vidno otlichie X Windows System ot bol'shinstva samodel'nyh sistem grafiki, ispol'zuemyh v proprietarnyh sistemah: vzaimodejstvie X-servera s ego mnogochislennoj klienturoj proishodit po specificirovannomu protokolu, kotoryj mozhet tunnelirovat'sya cherez TCP/IP i, sootvetstvenno, klienty i server mogut ispolnyat'sya na raznyh uzlah Seti. |to oznachaet, chto odni i te zhe programmy mogut ekspluatirovat'sya v raznyh topologiyah, vklyuchaya sovokupnost' avtonomnyh rabochih stancij ("personal'nyh komp'yuterov"), sovokupnost' rabochih stancij bez dannyh ili bezdiskovyh rabochih stancij ("lokal'naya set'"), mnogopol'zovatel'skuyu sistemu s X-terminalami (ili kakuyu-libo gibridnuyu topologiyu).

Eshche odnim resursom, kotoryj predostavlyaet X-server, yavlyayutsya shrifty. Operirovat' shriftami on mozhet samostoyatel'no, libo s pomoshch'yu drugoj programmy, kotoraya nazyvaetsya server shriftov X i obespechivaet ih masshtabirovanie.

Bol'shinstvo pol'zovatelej, ustanoviv sistemu, poluchayut v svoe rasporyazhenie gotovuyu graficheskuyu sredu. My postupim inache -- budem razbirat'sya s nej po sloyam.

7.3 "CHistyj" X

Na Ris. 1 izobrazhena "golaya" sistema X Window -- to, s chem bol'shinstvo pol'zovatelej nikogda ne stalkivaetsya. Zapustit' ee obychno mozhno tak: X.


My vidim tradicionnyj seryj ekran s ne menee tradicionnym kursorom v vide bukvy X. Ispol'zuya mysh' ili drugoe koordinatnoe ustrojstvo, kursor mozhno peremeshchat' po ekranu. Na nazhatie knopok myshi i klavish nikakoj vidimoj reakcii ne sleduet. I nevidimoj tozhe -- server gotov peredavat' eti signaly svoim klientam, a klienty poka ne zapushcheny. Hotya na samom dele nekotorye kombinacii klavish X perehvatyvaet i obrabatyvaet. |to Zap (Control-Alt-Backspace) -- zavershenie raboty servera (esli eta vozmozhnost' ne zapreshchena pri konfiguracii), Zoom (Control-Alt-+/-) -- "goryachee" pereklyuchenie dostupnyh videorezhimov. V nekotoryh OS (Naprimer, GNU/Linux) Control-Alt v sochetanii s funkcional'noj klavishej osvobozhdaet oborudovanie i peredaet ego na vremya sootvetstvuyushchej virtual'noj konsoli.

Vospol'zuemsya poslednej vozmozhnost'yu, perejdem na konsol' i zapustim pervoe klientskoe prilozhenie: programmu xterm (Ris. 2). Na ekrane X obrel poyavilos' okno, a v okne mozhno videt' interfejs klientskogo prilozheniya. V dannom sluchae interfejs tekstovyj, a prilozhenie -- emulyator terminala, na kotorom zapushchena dialogovaya obolochka sistemy po umolchaniyu. S emulyatorom mozhno delat' vse to zhe, chto i s obychnym terminalom: izdavat' komandy, poluchat' rezul'tat i zapuskat' drugie programmy. Esli programmy tekstovye (strochnye ili okonnye), ispolnyat'sya oni budut v tom zhe okne, a esli graficheskie (kak i sam xterm) -- v otdel'nyh oknah.

Zapustim programmu xclock (Ris. 3). Pri ee zapuske my ispol'zovali neskol'ko parametrov, zadayushchih geometriyu (mestopolozhenie i razmer) vnov' porozhdaemogo okna, cvet ego fona i shrifta po umolchaniyu, tolshchinu i cvet ramki. |ti (i nekotorye drugie) parametry tipichny dlya programm, postroennyh na osnove graficheskoj biblioteki X Toolkit. Znacheniya parametrov, zadannye pri vyzove programmy, mogut byt' perekryty samim zapuskayushchimsya prilozheniem, krome opcii geometrii. Delo v tom, chto okno vydelyaetsya klientskomu prilozheniyu pri zapuske, i vse dostupnye emu resursy etim oknom i ogranicheny -- eto svojstvo X-protokola.

Zapustiv neskol'ko ekzemplyarov togo zhe xterm (i pochitav dokumentaciyu) mozhno obnaruzhit', chto i "golyshom" X umeet ne tak malo. Naprimer, operiruet buferom obmena tekstom mezhdu prilozheniyami i predostavlyaet tekstovym prilozheniyam takoj resurs, kak polosu prokrutki (zabavnaya poloska, skrollirovat' tekst s pomoshch'yu kotoroj vverh ili vniz mozhno, shchelkaya po nej raznymi knopkami myshi, -- eto nasledie proekta Athena).

Est' li pol'za ot sistemy, rabotayushchej s fiksirovannymi oknami? Da, esli vspomnit', chto "universal'nyj desktop" -- ne edinstvennaya sfera primeneniya komp'yutera. Mozhno zapustit' pri zagruzke X i brauzer na ves' ekran i poluchit' gipermedijnyj kiosk po cene PC. A mozhno posadit' za tot zhe brauzer operatora, kotoryj budet cherez nego ves' den' "rulit'" bazu dannyh.

No my pojdem dal'she. Itak, osnovnaya rabota X-servera -- sozdavat' okna i predostavlyat' klientskim prilozheniyam vozmozhnosti raboty v nih. Dlya togo, chtoby rabotat' s oknami, nuzhna drugaya programma, kotoraya tak i nazyvaetsya -- menedzher okon (window manager).

7.4 Oknovody

Kak zhe menedzher okon preodolevaet ukazannoe ogranichenie X-protokola? Nikak -- prosto vydelennym emu oknom yavlyaetsya ves' ekran. (Na samom dele, menedzher okon -- ne edinstvennaya programma, sposobnaya rabotat' s "kornevym" oknom; naprimer, vhodyashchaya v komplekt postavki xsetroot pozvolyaet ustanovit' cvet fona ili pomestit' na nego risunok.)

Menedzherov okon sushchestvuet prevelikoe mnozhestvo -- pod lyuboj nabor zadach, kotorye mozhet reshat' graficheskaya mnogookonnaya sistema. Ih nastol'ko mnogo, chto vybrat' kakoj-nibud' v kachestve "tipichnogo predstavitelya semejstva" zatrudnitel'no. Poetomu vyberem odin iz samyh razvityh -- Enlightenment.

"Prosveshchenie" (www.Enlightenment.org) sozdano Karstenom Hajclerom i Dzheffom Harrisonom (Carsten Haitzler, Geoff Harrison) i ego tekushchaya versiya -- 0.16.5. Do 2000 g. on byl "shtatnym" menedzherom okon v populyarnoj srede GNOME (ej budet posvyashchena otdel'naya "lekciya"), zatem ustupiv eto mesto menee funkcional'noj, no bolee bystroj "Rybe-pile" (Sawfish). On prodolzhaet ostavat'sya GNOME-sovmestimym, i mnogie pol'zovateli etogo populyarnogo desktop-menedzhera predpochitayut ego, hotya i bez GNOME u Enlightenment poklonnikov hvataet.


Zapustim "Prosveshchenie" (Ris. 4). Kak rezko izmenilas' kartina!

Pervoe, chto my vidim -- eto poyavivshiesya vokrug okna nashego xterm "vidzhety" (elementy okon) -- stroka zagolovka s knopkami i ramka. Okno teper' mozhno peremeshchat' po ekranu, "uhvativ" za zagolovok, masshtabirovat', "vzyav" za bok ili za ugol, maksimizirovat', minimizirovat' ili zakryt', nazhav sootvetstvuyushchuyu knopku. Sprashivaetsya, chto eshche mozhno delat' s oknom?

Vopros ne prazdnyj. Nazhav na levuyu knopku v zagolovke, poluchaem neozhidanno raznoobraznoe menyu (menyu -- eto tozhe "vidzhet") takih dejstvij (Ris. 5). Okazyvaetsya, ego mozhno eshche unichtozhit' (Annihilate), podnyat'/opustit' (Raise/Lower), ottenit'/rastenit' (Shade/Unshade) prikleit'/otkleit' (Stick/Unstick) i vypolnit' eshche massu dejstvij, dlya kotoryh potrebovalis' otdel'nye menyu! Nabor etih dejstvij zavisit ot konkretnogo menedzhera okon (i Enlightenment -- odin iz samyh bogatyh vozmozhnostyami), a to, kakie iz nih vyvedeny v stroku zagolovka otdel'nymi knopkami -- voobshche ot ego nastrojki.

Sobstvenno, upravlenie oknami -- osnovnaya funkciya okonnogo menedzhera, i na etom ego funkcional'nost' mozhet i zakanchivat'sya. Odnako bol'shinstvo iz nih vypolnyayut po krajnej mere eshche odnu funkciyu.

Vy uzhe obratili vnimanie na to, chto pri zapuske "Prosveshcheniya" na ekrane poyavilos' eshche odno okno. |to tak nazyvaemyj pejdzher (pager), na Ris. 6 on izobrazhen krupnym planom. Na pejdzhere predstavlena miniatyurnaya kopiya ekrana, obnovlyayushchayasya v rezhime real'nogo vremeni, prichem, esli podvesti kursor k izobrazheniyu otdel'nogo okna, ono uvelichivaetsya i ryadom vysvechivaetsya nazvanie prilozheniya, zapushchennogo v nem. No pochemu ekran zanimaet tol'ko chetvert' okna pejdzhera? Potomu chto okonnyj menedzher pozvolyaet operirovat' "virtual'nym stolom, po razmeru prevyshayushchim fizicheskij ekran, a pejdzher -- odno iz sredstv peremeshcheniya fizicheskogo ekrana po rabochemu stolu. Enlightenment pozvolyaet sozdavat' do 64 ekranov na rabochem stole.

Eshche odin vazhnyj komponent Enlightenment my ne uvideli srazu: eto menyu nastrojki samogo menedzhera, kotoroe mozhno "dostat'", shchelknuv pravoj knopkoj myshi na fone ekrana (Ris. 7). Poryvshis' v nastrojkah, mozhno obnaruzhit', chto vysheskazannoe o sposobah operirovaniya s etim menedzherom ves'ma uslovno, potomu chto pomenyat' mozhno bukval'no vse, ot dekora vidzhetov do kolichestva i funkcij elementov oformleniya okon i ih reakcii na razlichnye dejstviya.

Lish' odin primer: skol'ko sposobov vizualizirovat' peremeshchenie okna vy znaete? Razrabotchiki "Prosveshcheniya" pridumali celyh shest', vklyuchaya fantasticheskij "poluprozrachnyj". Nastrojki i rasshireniya Enlightenment mozhno ob容dinyat' v "temy" (themes) i obmenivat'sya imi.

Sobstvenno, na etom funkcii okonnogo menedzhera kak takovogo i zakanchivayutsya, a dal'she Enlightenment vtorgaetsya vo vladeniya drugogo klassa programm -- menedzherov rabochego stola...

7.5 Stolonachal'niki

...CHto demonstriruet otsutstvie rezkoj granicy mezhdu nimi. Sushchestvuet dva podhoda k tomu, chtoby dostroit' okonnuyu sistemu do polnofunkcional'noj sredy. Pervyj -- dobavit' v "graficheskij sendvich" eshche odin sloj -- menedzher rabochego stola -- rabotayushchij "poverh" okonnogo menedzhera i ispol'zuyushchij funkcional'nost' poslednego. |tim putem idut komandy razrabotchikov GNOME i KDE, kotorym posvyashcheny otdel'nye "lekcii".

Drugoj put' -- "dotyanut'" do polnofunkcional'noj sredy funkcional'nost' samogo okonnogo menedzhera, i im idet Enlightenment i ryad drugih proektov.

CHto nam ne hvataet do polnofunkcional'noj sredy? Menedzhera programm, utilit i prilozhenij. Tak vot, v "Prosveshchenii" est' i takaya funkcional'nost', dostupnaya (po umolchaniyu) po shchelchku na fone levoj knopkoj.

Kommentirovat' zdes' osobo nechego: punkty menyu pozvolyayut zapustit' mnozhestvo razlichnyh prilozhenij, prichem, krome nezavisimo razrabotannyh, i celuyu pachku "eppletov", postavlyaemyh vmeste s Enlightenment. Al'ternativnyj sposob zapuska -- cherez "panel'" -- vstroen v nekotorye temy "Prosveshcheniya".

Otkuda berutsya takie resursy, kak "vidzhety" s ih dekorom i sposobom povedeniya? Konechno, menedzher okon mozhet soderzhat' ih v sebe. No takoj podhod ne ochen' harakteren dlya otkrytyh sistem, odnim iz principov razrabotki kotoryh yavlyaetsya komponentnost'. Bol'shinstvo razvityh okonnyh menedzherov, menedzherov rabochego stola i "zatochennyh" pod nih prilozhenij mozhno sgruppirovat' po bibliotekam (toolkits), s oporoj na kotorye oni razrabotany.

7.6 Triumf interfejsa nad pol'zovatelem?

Kosmeticheskih uluchshenij za tridcat' let sushchestvovaniya paradigmy WIMP byla pridumana massa, a vot bolee ili menee ser'eznyh, pri vnimatel'nom analize, obnaruzhivaetsya tol'ko dva: integraciya zvuka (i prevrashchenie graficheskoj (vizual'noj) sredy v sensual'nuyu) i nachalo ekspluatacii koncepcii giperssylok, v terminah kotoryh mozhno pereformulirovat' pochti ves' interfejs.

Frederik Bruks eshche v 1995 g., obsuzhdaya osnovnye processy, proizoshedshie v programmnoj otrasli za 20 predshestvovavshih let, nazval v chisle "naibolee vpechatlyayushchih yavlenij" "triumf interfejsa WIMP" [17, ss. 239-243]. V etom stavshem klassicheskim chetyrehstranichnom analize (vsem, interesuyushchimsya temoj, krajne rekomenduetsya prochitat' eti chetyre stranicy. A zaodno -- i vsyu knigu Bruksa). Bruks: