Andrej Bogatyrev. Zapiski sistemshchika
... |to utverzhdenie ostanavlivaet na sebe nashe
vnimanie. Na pervyj vzglyad ono kazhetsya erundoj.
Kazhetsya erundoj ono i na vtoroj vzglyad. I tol'ko na
tretij, pristal'nyj i dotoshnyj vzglyad, nam nachinaet
mereshchit'sya, chto eto - polnyj i okonchatel'nyj bred.
---------------------------------------------------------------
© Copyright 1995 Andrej Bogatyrev
Andrej Bogatyrev (abs@openwin.msk.su)
Rodilsya v 1965, napisal eto vesnoj 1995.
http://sun.nstu.nsk.su/vendors/sun/bogat.html
---------------------------------------------------------------
Itak, nastalo vremya oglyadet' tot mir, kotoryj vrashchaetsya
vokrug nas, i v kotorom vrashchaemsya my. V etom mire ya s 1984 goda
obitayu v srede UNIX, i ne zhaleyu. Prishlos' i v tekstah yadra BSD
pokovyryat'sya, i v shellah raznyh, da i v prikladnyh programmah
pouchastvovat'. A uzh administrirovat' i nastraivat'... Net,
UNIX - eto konechno ne ideal i dazhe ne podarochek. No ved'
gorizont - eto to, chto otodvigaetsya, skol'ko by my k nemu ni
stremilis'. Tak zhe i s idealom...
* Operacionnaya sistema. *
eto ne sistema, a skoree zagruzochnyj monitor dlya programm.
Otsutstvie zashchity i mnogozadachnosti (ili prityagivanie ih za ushi
cherez zadnij prohod) ne pozvolyayut skol'ko-nibud' ser'ezno
rassmatrivat' etu sistemu dlya industrial'nogo primeneniya (a ne
dlya nastol'nyh igr). Osobenno kogda nado obsluzhit' mnogo
narodu. V seti. Da eshche i virusom ih fajly ne porazit'.
ochen' slozhnaya i otkrovenno plohaya operacionnaya sistema.
Problema v tom, chto nichego luchshe, nadezhnee i otlazhennee poka ne
pridumali; a esli i pridumali, to ono eshche ne vyshlo za steny
laboratorij i iz maketov. Izobreteniya Microsoft - novee, no ne
luchshe.
kogda tuda dobavitsya mnogozadachnost', navernoe budet
neploho. No vse zhe - eto sistema, vyrosshaya vokrug graficheskogo
interfejsa. CHto, vprochem, ne est' ploho - poskol'ku prityanulo
za soboj ob®ektnuyu orientirovannost' i sredstva obshcheniya
programm mezhdu soboj. Problema v tom, chto vse eto, i v bolee
sovershennom vide, uzhe bylo k tomu vremeni v UNIX. Problema UNIX
- chto etim malo kto pol'zovalsya. Vse predpochitali rugat' UNIX
za komandnyj nedruzhestvennyj interfejs, nezheli pol'zovat'sya
druzhestvennoj obolochkoj X Window, kotoraya tam uzhe davno byla.
Tut mozhno pronablyudat' i inye interesnye problemy,
svyazannye kak raz s otkrytost'yu. UNIX - sistema otkrytaya, ee
razvivaet, uluchshaet i izuchaet v ishodnyh tekstah massa narodu
po vsemu svetu: sistema-laboratoriya dlya vsego hack
er-soobshchestva. Zato kommercheskie postavshchiki UNIX dlya raznyh
platform do nedavnego vremeni rychali drug na druga, pryatali vse
svoe po uglam, podkladyvali drug drugu svinok. Kak zhe - UNIX
UNIHom (ibo UNIX - on i v Afrike... Edinstvennaya OS,
perenesennaya na desyatki arhitektur mashin), no denezhki vroz'.
Tem vremenem na rynok vylez Microsoft, kotoryj nikomu nichego iz
ishodnyh tekstov ne pokazyval (to est' byl i est' absolyutno
zakryt), ni s kem krome sebya ne sorevnovalsya, i slepil soft
ware, kotorym srazu stali pol'zovat'sya milliony. Da, nikto ne
govorit, chto on sdelal samoe luchshee (ili hudshee), no samoe
massovoe - nesomnenno. I tut - uvy UNIHam. Ran'she UNIHisty
svysoka smotreli na nedosistemu MS DOS i pochivali na lavrah.
Teper'...
Zato eto sygralo polozhitel'nuyu rol' - i eshche ne slishkom
pozdno - UNIX-proizvoditeli perestali rychat' drug na druga
zlobno, a oslabili ton do "nastorozhenno". I prishlos' im vsem
vmeste dumat' o tom, kak luchshuyu operacionnuyu sistemu (da eshche i
uzhe sushchestvuyushchuyu, i davno) eshche i v lyudi vytolknut'. Takie
pirogi. Monstry protiv vyskochki Microsoft-a.
ee pochemu-to imenuyut "setevoj operacionnoj sistemoj", da
kakaya zh ona operacionnaya sistema? DOS cherez set' - sistema
perekachki fajlov v lokal'noj (i tol'ko) seti. Neser'ezno,
gospoda. Vy somputer science izuchali? CHto takoe OS znaete? Nu i
gde ona? Nu ladno, ladno, pust' dazhe operacionnaya sistema. No
ne dlya rabotayushchego na mashine cheloveka. Dlya vydelennogo
servera. A potomu - ne "setevaya operacionnaya sistema", a
"sistema dlya seti". Setevaya - eto kogda operacionnaya sistema (v
tom chisle) cherez set' rabotaet, resursy razdaet.
Da, eshche ochen' menya razdrazhaet kogda Pisyuk v Novell-ovskoj
seti "rabochej stanciej" velichayut. Smeshno. Zabyli, chto takoe
rabochaya stanciya - a ved' desyat' let nazad eto luchshe znali.
Kogda cherez desyat' let ponyatiyu dayut vyholoshchennoe znachenie - eto
udruchaet.
okstis', eto tozhe UNIX! Da, no chto-to on kak-to uzh
graficheskij i ob®ektno-orientirovannyj kakoj-to bol'no. Mi
crosoft-u takoe i ne snilos'... Da-da, a teper' eta ob®ektno-
orientirovannaya grafika perekochevala v UNIX - pod nazvaniem
OpenStep. Vot, v Solaris, naprimer.
"a eto chto za zver' takoj?", - sprosit podavlyayushchee
bol'shinstvo. A eto takaya raspredelennaya
ob®ektno-orientirovannaya operacionnaya sistema ot SunSoft. Vot
vse krichat "mikroyadra", a kto ih silu real'no
ispol'zuet? OSF/1 nad MACH postroennaya? Net. A vot Spring -
ispol'zuet, prosto dlya togo i delalsya. A na chto pohozha? A ni na
chto. Vot naprimer: process v nej mozhet imet' chast' pamyati na
odnoj mashine, chast' - na drugoj. Gde nado i gde udobnee - tam i
budet imet'. A kto ee videl? A rabotaet ona v laboratoriyah Sun
Soft! Kak gotovaya polnocennaya sistema, v chastnosti cikl ee
razrabotki vedetsya pod neyu samoj, bez privlecheniya UNIHa. A
prilozheniya pod nee est'? A netu... |ta sistema, veroyatno, ne
budet kommercheskoj. Zato posluzhit prototipom operacionnoj
sisteme 21 veka. Dolzhen zhe byt' posledovatel' u UNIHa. Kstati,
UNIHnyj interfejs k Spring pishut russkie programmisty.
snova UNIX. CHego tut teper' tol'ko net! I ne po
znamenitomu principu "i togo net, i etogo net". Inache.
- MS Windows est', WABI (Windows Application Binary In
terface) nazyvaetsya. Sobstvenno, pod nim ya etu stat'yu i pishu,
na SPARCstation 20 pod Solaris 2.4 sidyuchi.
- Macintosh OS7 est', nazyvaetsya MAE (Macintosh Application
Environment).
- NeXTstep est'.
- NetWare est', v vide podderzhki protokolov IPX/SPX.
- I voobshche chego u vas net, to u nas est'. Vot zagadka
dlya znatokov: verno li obratnoe?
Voobshche, na UNIX posmotrish': svalka-svalkoj. Vot chto znachit
- otkrytaya sistema. CHto hotyat, to i dobavlyayut.
|ksperimental'nyj poligon kakoj-to, a ne operacionnaya sreda. Da
eshche s bogatym arsenalom sredstv dlya svyazyvaniya voedino
nesovmestimyh mezhdu soboj veshchej - vivisekciya sploshnaya. Vot odno
tol'ko nepriyatnoe dlya avtorov vseh drugih sistem svojstvo
imeetsya: standart na UNIX. SVR4 nazyvaetsya. A ni na chto drugoe
standarta poka net, v tom chisle na goryacho lyubimyj MS Windows
API. Tak chto v UNIX narod pobaluet-pobaluet, eksperiment
postavit, chto-nibud' novoe izobretet (kak v svoe vremya TCP/IP
tut otladili), da potom - bac! - i standart na eto primet. A
vse ostal'nye - dogonyaj.
Windows-95, Windows/NT, OS/2
menya zabavlyayut, no i zastavlyayut krivit'sya gromkie
zayavleniya proizvoditelej NOVYH operacionnyh sistem o tom, chto
vot, oni dobavili novuyu vydayushchuyusya vozmozhnost' - vrode
keshirovaniya fajlov v pamyati ili optimizacii razmeshcheniya fajlov
na diske - kotoraya sdelala ih sistemu neprevzojdennoj. Rebyata,
v UNIX ya ob etih samyh vozmozhnostyah slyshal minimum 6
let nazad. I pechal'no videt' razveshivayushchih ushki chajnikov, i
vpravdu schitayushchih eto izobreteniem ih lyubimoj firmy,
otkroveniem i novinkoj, ostavlyayushchej daleko pozadi vseh
neizvestnyh im konkurentov. Neznanie i nevezhestvo daet povod
dlya chvanstva.
ZHal' to, chto real'no novyh idej - a ne
pozaimstvovannyh drug u druga - nemnogo. Naprimer, ob®ektnost'
v OS. Novye idei k tomu zhe dolgo musolyatsya, ispytyvayutsya na
prochnost', raznye realizacii odnogo i togo zhe prevrashchayutsya v
vojnu avtorov realizacij. Obnadezhivaet vo vsem etom processe
odno: rano ili pozdno poleznoe prizhivaetsya, nezhiznesposobnye
pobryakuhi otmirayut i otvalivayutsya, i nachinaet pahnut'
standartom (chto ne oznachaet okonchanie processa razvitiya i
uluchshenij); a takzhe to, chto rano ili pozdno vse bazovye veshchi
sol'yutsya voedino. Razlichie i mnogoobrazie nablyudaetsya tol'ko na
perednem fronte issledovanij: molotki i vilki dolzhny byt'
privychny i edinoobrazny, inache my ne smozhem udobno i privychno
pol'zovat'sya imi povsednevno.
Mne, kak programmistu, po bol'shomu schetu bezrazlichno -
kakaya platforma. Moe delo - yazyk Si, da to, chtoby to, chto
opisano v dokumentacii, rabotalo imenno tak, kak ono opisano, a
ne kak Bog na dushu polozhit. Rabotalo tak, chtoby ya mog
programmirovat' to, chto hochu ya, a ne poluchat' neozhidannye
syurprizy. CHtoby ono mne pomogalo, a ne zastavlyalo prevratit'sya
v mastera lavirovki i izvrashchenij. Rabotalo pravil'no, v meru
bystro i nadezhno. Nu i udobno, konechno zhe, ne lyublyu ya pisat'
zaklinaniya da eshche v desyatke mest srazu. Pomnit' vse eti mesta
ochen' lenivo.
Koroche govorya, mashina dolzhna ne meshat' mne
programmirovat'. A eto bol'she vsego svyazano s kachestvom OS.
Samoe glavnoe, zachem sobstvenno programmy, operacionnye
sistemy i raznyj instrumentarij napisany - eto chtoby ya mog kak
mozhno proshche i legche poluchit' rezul'tat, sdelat' to, chto mne
nuzhno (ili prosto hochetsya: "hochu" - est' dvigatel' razvitiya).
YA videl massu "glyukov" v rannih Solaris-ah. S priskorbiem
dolzhen soobshchit', chto ih kolichestvo (a glavnoe: ubojnaya sila) v
versii 2.4 upalo na poryadok. Rabotaet uzhe ne "snosno", a
"horosho". |tot put' i HP UX 10, i DEC, i Microsoft s ego
Windows NT eshche dolzhny projti.
Voobshche, sejchas est' dve protivopostavlyaemye tendencii
naschet uvelicheniya skorosti raboty mashin. Odna - eto uskorenie
processora. Vse milo, poka u vas processor ne nachinaet obgonyat'
vse ostal'nye chasti komp'yutera nastol'ko, chto bystryj processor
vynuzhden dolgo-dolgo zhdat' k primeru sistemnoj shiny, kotoraya
emu dannye iz pamyati podaet. Nazyvaetsya takaya veselaya situaciya
nesbalansirovannost'yu mashiny. Vtoraya tendenciya -
klepat' mnogoprocessornye mashiny s ne obyazatel'no sverhbystrymi
processorami. Mol, rasparallelim vychisleniya, tak N muzhikov za 1
chas sdelayut to zhe samoe, chto sdelaet za odin chas odin muzhik,
sposobnyj odin rabotat' za N chelovek. Ideya v meru zdravaya,
krome odnogo tonkogo momenta: ne vse zadachi poddayutsya
rasparallelivaniyu; a togo huzhe - sejchas parallel'no napisannyh
programm malovato. Znachit, rabotat' nado, pisat' ih, da starye
perepisyvat'. No na eto zh massa deneg, lyudej i vremeni
nuzhna!
Vse prekrasno, tol'ko ya hochu i mnogo i bystro srazu.
Davajte delat' mnogoprocessornye sistemy, i davajte delat'
bystrye processory. Ni pro chto ne zabyvaya.
Nu vot tut-to opyat' pora vspomnit' pro sbalansirovannost'.
Esli u nas est' 4 processora, a koridor iz pamyati k nim (shina,
estestvenno) pozvolyaet tol'ko odin iz nih na polnuyu moshch'
pitat', to drugie tri budut zhdat' osvobozhdeniya etogo koridora,
kakimi by bystrymi oni ne byli. CHto budet, esli chetyrehryadnoe
shosse napravit' cherez odnoryadnyj pereulok? Pravil'no: probka!
Variant obratnyj: koridor shirokij, processory slaben'kie -
ele zhuyut. Na shine dannye davno est', a processory ih potrebit'
ne mogut. Otsyuda vyvod: v komp'yutere vse dolzhno byt' krasivo, i
CPU, i shina, i pamyat', da i diski.
Dlya uskoreniya dostupa v pamyat' v svoe vremya processornyj
kesh izobreli - kotoryj v registrovoj bystroj pamyati chasto
ispol'zuemye dannye sohranyaet, i tem umen'shaet chislo obrashchenij
k bolee medlennoj operativnoj pamyati. YAsno, chto chem bol'she kesh,
tem bolee processoru bezrazlichna uzost' koridora, poskol'ku on
izolirovan ot zhestokogo mira. No vot dosada: tak proishodit
lish' do teh por, poka dannye bolee-menee umeshchayutsya v kesh. A
esli programma linejno summiruet massiv v 1 GB? Tut nikakoj kesh
ne pomozhet - tut bystraya shina neobhodima.
Teper' eshche - pust' u nas shina moshchnaya. I pust' iz pamyati
dannye posledovatel'no vybiraet. No u nas v mnogozadachnoj
sisteme eshche processory est', kotorye drugim delom zanimayutsya. I
im tozhe nuzhna shina. Znachit, poka ona zanyata - oni budut zhdat'.
Kak byt'?
Vyhodov dva: pervyj - imet' neskol'ko shin, kotorye ne
blokiruyut drug druga pri obrashchenii k obshchej operativnoj pamyati.
Pamyat' dlya etogo "sloenaya" byt' dolzhna. Tut, pravda, slozhnaya
problema s sinhronizaciej dannyh voznikaet - ezheli cherez odnu
shinu dannye chitayutsya, a cherez druguyu - v eto zhe vremya, te zhe
samye - zapisyvayutsya. A vtoroj vyhod - sdelat' takuyu shinu,
kotoraya bystro- bystro osvobozhdaetsya.
Kak rabotaet normal'naya shina? Vystavlyaetsya na nee zapros,
ustrojstvo (pamyat', naprimer) na nego otvechaet, svoimi mozgami
ne slishkom rezvo shevelya, zatem shina osvobozhdaetsya - i drugoj
processor, kotoryj vse eto vremya zhdal, vystavlyaet svoj,
sleduyushchij zapros k pamyati. A vot v Sun ispol'zuetsya drugaya
shina, paketnaya, nazyvaetsya XDBus. Ona delaet chut' inache.
Processor govorit: daj mne takie-to dannye po takim-to adresam.
SHina zapros peredaet, i esli pamyat' (ili karta vvoda-vyvoda) na
nego ne mozhet otvetit' nemedlenno gotovymi dannymi,
otklyuchaetsya. Po shine mozhno slat' drugie zaprosy ili dannye - k
drugim processoram. Kak tol'ko dannye budut gotovy, zaproshennoe
ustrojstvo govorit shine: "gotovo". I v svobodnyj interval
zahvatyvaet shinu i otsylaet dannye k zhdushchemu ih processoru.
Koroche govorya, poluchaetsya chto po odnomu telefonu mogut govorit'
ne dva cheloveka, a mnogo - ispol'zuya te pauzy, kogda kto-to
zamolkaet dlya obdumyvaniya svoego otveta. Obmen proishodit
paketami, maksimal'no plotno "upakovannymi" vo vremeni. SHina
vse vremya (a ne epizodicheski) rabotaet na maksimal'noj
propusknoj sposobnosti. To est', esli prodolzhit' analogiyu s
telefonom, v provode nikogda net molchaniya, hotya vse vremya
govoryat raznye golosa. V principe, esli vzyat' bolee bystruyu
shinu, no ne packed switched, to odin processor
veroyatno budet imet' bolee bystryj dostup k pamyati. No esli
processorov mnogo - nachnetsya tolcheya, pauzy, ozhidaniya, i
nekotorye iz processorov budut prostaivat', prichem
mnogo dol'she, chem v packed switch shine s men'shej skorost'yu!
Est' eshche odna analogiya: s poezdom-ekspressom. Emu
osvobozhdayut put', pritormazhivaya vse ostal'nye poezda. |kspress
dohodit bystro, zato vse ostal'nye poezda v rezul'tate
opazdyvayut na mnogo chasov. Neravnopravie, otsutstvie simmetrii
i sbalansirovannosti.
A teper' - o mnogoprocessornosti. Pust' u vas idut na
mashine dve zadachi. S kvantovaniem vremeni: to odna na
processore porabotaet, to drugaya. Dlya intensivnyh po dannym
zadach kesh etogo processora budet chasto vytryahat'sya: to zagruzhaya
dannye odnoj zadachi, to drugoj. A esli u vas est' dva
processora, to zhit' kak-to legche. Mozhet hot' odna na
fiksirovannom processore osyadet. Da i voobshche, proshlo vremya
odinochek. Teper' problemu prinyato reshat' kollektivno, gurtom.
Nu a uzh esli i v odinochku - to pust' drugoj processor hot' obed
dlya myslitelya gotovit: dannye tam s diska ili iz seti
podkachivaet, graficheskij interfejs obsluzhivaet, preryvaniya
lovit (to est' ispolnyaet rol' "zheny", nesushchej v sem'e vse
tyazhesti byta).
Koroche govorya, v mnogozadachnoj sisteme (kakovoj UNIX i
yavlyaetsya) lishnie processory nikogda ne povredyat. Pravda, esli
u vas mashina tol'ko dlya nabivki tekstov ispol'zuetsya - to vam
eto ne nado po opredeleniyu. Vprochem, vojny processorov vas tozhe
togda ne kasayutsya. Zachem vam togda Pentium? Zachem UltraSPARC?
Kakaya Alpha? Kupite sebe PC 286 (bez vsyakogo Power) i bud'te
schastlivy.
A vot esli u vas mashina srazu mnogo pol'zovatelej cherez
set' da cherez mul'tipleksory obsluzhivaet - togda delo drugoe.
Odni chto-to schitayut, drugie svoi bessmertnye tvoreniya v fajly
redaktorom nabivayut (nu vot kak ya sejchas), tret'i - kompiliruyut
chto-to. A uzh baza dannyh diskami vorochaet - bud' zdorov. Tut
processory i shiny ne pomeshayut: ni chislom, ni bystrodejstviem.
Est' eshche odna interesnaya shtuka, kotoraya nazyvaetsya
razmerom operativnoj pamyati. YAsno, chto esli ee malo, to
operacionnoj sisteme pridetsya chto-to podkachivat' s diska, a ne
iz fajlovogo kesha. Da pri tom eshche kakie-to processy iz pamyati
na disk v svopping vykachivat', chtoby komu-to drugomu
prostranstvo v pamyati osvobodit'. Vse eto katastroficheski
zamedlyaet rabotu sistemy. Pri samom bystrom processore, ibo
disk v mashine - samoe medlennoe. Tak chto ne zhalejte pamyati. No
- i ne pokupajte chrezmerno: prostaivat' budet - znachit den'gi
svoi vy vybrosili na veter.
Vot takie interesnye cifry privedu: esli 1 nanosekunda
(10E-9) budet rassmatrivat'sya kak 1 sekunda, to
- dostup v kesh processora zajmet 20 sekund.
- dostup k osnovnoj operativnoj pamyati cherez shinu - 3 minuty 20 sekund.
- dostup k disku... 7 mesyacev.
CHem bol'she pamyati, tem rezhe nuzhen disk - i eto
dramaticheski uvelichivaet bystrodejstvie. Da, sovsem zabyl
ob®yasnit' - pochemu. Potomu chto UNIX dannye, raz schitannye s
diska, staraetsya sohranit' v buferah v operativnoj pamyati - v
keshe. I ne lazit' za nimi kazhdyj raz na meeedleeennyj disk.
Sleduyushchij zatyk vozmozhen v seti, kogda u vas tak mnogo
mashin, chto oni derutsya mezhdu soboj za edinstvennyj provod
Ethernet. Kto kogo perekrichit. Set' srazu perepolnyaetsya.
Resheniem tut mozhet byt' razdelenie mashin na neskol'ko
izolirovannyh segmentov seti, s priemlemym chislom mashin v
kazhdom segmente; ili ispol'zovanie intellektual'nyh habov i
svitchej, kotorye umen'shayut chislo stolknovenij paketov.
Nu i naposledok pro ekster'er. Monitor. Mne vsegda ne
hvatalo razmera monitora, poskol'ku ya lyublyu obkladyvat'sya na
stole bumagami, prikalyvat' ih na stenku, i dazhe podstavlyat'
stul'ya dlya neumestivshihsya listochkov. Byli by monitory 30", 40"
- ya by zanyal i eto prostranstvo. K schast'yu, Sun postavlyaet
olvwm - virtual window manager, kotoryj nazhatiem pary klavish
predostavlyaet vam drugoj ekran (tochnee govorya, druguyu oblast'
rabochego polya, kotoroe ogromno i bol'she razmera ekrana
monitora). |to hot' i ne reshaet problemu razmera rabochego
stola, no hotya by predostavlyaet ih v neogranichennom kolichestve.
Slava razrabotchikam, ekrany na rabochih stanciyah imeyut vysokoe
razreshenie i ne portyat glaza.
Ah da, eshche disk. Ne budu govorit' pro optimizaciyu skorosti
dostupa k nemu - vsyakie tam RAID 5 i stripes, a takzhe zerkala,
kotorye pozvolyayut razmalyvat' kuvaldoj odin iz diskov i pri
etom prodolzhat' rabotat' - net, menya kak pogrammista volnuet
drugoe: emkost'. Ishodnye teksty vsyakih sistem, kotorye u menya
est' (legal'no, gospoda! - v UNIX prinyato razdavat' teksty
sistemnyh programm i utilit), zanimayut gigabajty i desyatki
gigabajt. A esli ih eshche nachat' kompilirovat'... A esli eshche
polozhit' tut zhe bazu dannyh... Nu, vobshchem, vy ponyali, da?
Nu chto za merzkie seti TCP/IP! Vsego kakih-to 32 bita na
adres - razve zh etogo hvatit na ves' mir? Adresov uzhe
katastroficheski ne hvataet, NIC vydaet novye nomera podsetej s
bol'shim skripom.
No ya-to hotel skazat' chto-nibud' pro fizicheskie seti.
- Tonkij Ethernet - vse horosho, poka u
vas ne propadaet kontakt hot' na odnom BNC-raz®eme. Posle etogo
vsya set' perestaet rabotat', i vas osazhdayut nervnye
pol'zovateli. A vy neprikayanno brodite i proveryaete vse
soedineniya.
- Vitaya para - opisannaya situaciya v
principe nevozmozhna: esli chto-to dohnet, to tol'ko odin provod
ot mashiny k habu. Vse ostal'nye prodolzhayut rabotat'. Zato nuzhen
nadezhnyj hab, potomu chto mozhet zavisnut' i on. Ethernet na
vitoj pare sushchestvuet dlya 10 i 100 MegaBit v sekundu, vtoroj iz
nih trebuet provodov povyshennogo kachestva, tak chto ne
ekonom'te centy! Krome togo, ne zabluzhdajtes', chto 10 Mbit/sek.
- eto mnogo. Pri pereschete v bajty - eto 1 MBajt/sek. Pri uchete
zagolovkov paketov i stolknovenij pluchitsya 300-450 KBajt/sek. V
luchshem sluchae.
- Fiberoptika - samoe nadezhnoe i
bystroe. Vam sluchalos' videt', kak posle dozhdya padaet kachestvo
svyazi na telefonnyh liniyah (a sledovatel'no na modemah)? Mne -
da. I tak - s lyubym metallicheskim provodom. A s opticheskim - ne
tak, emu hot' v rechke lezhi. Da, samoe nadezhnoe reshenie (esli,
konechno, tankom ne pereedut), no zato i samoe dorogoe.
Sushchestvenno dorozhe prochih.
* YAzyki programmirovaniya. *
- BASIC - Vasik. Ne yazyk. CHelovek,
nachavshij izuchat' programmirovanie s etogo s pozvoleniya skazat'
yazyka, naveki ostanetsya nravstvennym i intellektual'nym urodom.
- C - yazyk dlya menya rodnoj, hotya i ne
pervyj. Ne budu ya rassuzhdat' ni o ego dostoinstvah, ni o
nedostatkah. YAzyk rabochij - na nem vpolne mozhno pisat' i pisat'
effektivno. Kak na assemblere.
- C++ - nemalo dnej, nochej i mesyacev
bylo posvyashcheno etomu yazyku. Vpechatleniya? Monstrik. Ne monstr,
kak Ada, ili togo luchshe PL/I, no vse zhe monstrik. Programmistu
pomnit' nado ne tol'ko klassy i metody, no i mnozhestvo raznyh
pravil samogo yazyka. Nedarom ego avtor - Straustrap - tak
neohotno rassmatrivaet rasshireniya yazyka. On i tak uzhe
neizyashchnyj. Odnako v meru strogij k oshibkam, chego
ob®ektno-orientirovannye yazyki s dinamicheskim svyazyvaniem ne
dayut (no ot etoj zhe strogosti - ego slozhnost').
- Smalltalk - edinstvennyj
absolyutno ob®ektno-orientirovannyj yazyk. Dazhe bukvy i
chisla v nem - ob®ekty, ne govorya uzh o tom, chto i ishodnyj tekst
programmy i ee skompilirovannyj kod - ob®ekty tozhe. Uvy,
Smalltalk - eto interpretator, hotya i ochen' sovershennyj,
bystryj i effektivnyj. K nemu mozhno dobavit' novye primitivy,
napisannye, skazhem, na Si, no ego nevozmozhno (da i ne nuzhno)
vypolnit' neposredstvenno na processore. Skompilirovannyj kod -
eto special'nye "bajtkody" dlya interpretatora. V chastnosti
poetomu nel'zya ispol'zovat' Smalltalk iz Si. Zato eto daet
absolyutnuyu perenosimost' ego skompilirovannogo v bajtkody
obraza bez izmenenij na lyubuyu mashinu.
V prezhnie gody Smalltalk byl prosto operacionnoj sistemoj,
a takzhe zamknutoj sredoj razrabotki na mashinah firmy XEROX.
Segodnya on stal ravnopravnym chlenom zooparka yazykov i sred,
rasplodivshihsya (k primeru) pod UNIX.
Glavnoe zhe dostoinstvo pozhaluj takovo: yazyk ochen' prost.
Na izuchenie dostatochno poluchasa.
Za chto ya ne lyublyu
Ob®ektno-Orientirovannoe Programmirovanie: za ogromnoe chislo
klassov i metodov, kotorye hotya i shozhi po interfejsu, kotoryj
nasleduyut drug u druga, no po ploshchadi svoej "poverhnosti" ne
ukladyvayutsya v moyu, chelovecheskuyu, pamyat'... Vprochem, ya nikogda
ne pisal na nem vser'ez (a eto teper' stalo vozmozhnym - pisat'
na nem ser'eznye veshchi, a ne igrushechnye).
Tak chto, esli b ne bylo Objective-C i napisannogo na nem
{Open,NeXT}step - ya by vybral Smalltalk.
- Objective-C - gibrid chistogo Si i
Smalltalk-a. Fakticheski tol'ko odna novaya konstrukciya - posylka
soobshcheniya:
otvet = [komu selektor argumenty];
No svyazyvanie metoda s vyzovom - chisto dinamicheskoe (dlya
lyubitelej C++ poyasnyayu: vse funkcii
virtual'nye). CHto ne pozvolyaet lovit' massu oshibok vo vremya
kompilyacii. Zato yazyk prost i stroen. V meru dazhe izyashchen.
Koroche, eto - moj lyubimyj yazyk.
- Pascal - v obshchem ves'ma neplohoj
yazyk, osobenno potoptannyj firmoj Borland. Podderzhivaet
vlozhennye procedury i dinamicheski otvodimye massivy, chem v Si i
ne pahnet (massivami - pahnet, pri pomoshchi allo
ca. No neizyashchno). Nedostatok rovno odin: ochen' uzh
mnogoslovnyj yazyk - to i delo pishi dlinnye slova begin, end...
Vmesto lakonichnyh { i }. Drugoj nedostatok ne immanentnyj: vse
zhe bol'she vsyakih bibliotek na Si napisano. I dlya Si.
- Modula - lishena mnogih nedostatkov
Pascal i obladaet mnogimi dostoinstvami Si. Horoshij yazyk, no
kto na nem pishet?
- Ada - yazyk s pretenziyami, no pohozhe
mertvorozhdennyj. Izlishnyaya slozhnost' programmista udruchaet, i on
vybiraet drugoj yazyk.
- FORTRAN-77, PL/I - yazyki dlya fizikov,
da i to vymirayushchie. Ne lyublyu. Nekrasivo, ochen' uzh mashinoj fon
Nejmana otdaet, da eshche i preparirovannoj.
- COBOL - po ironii sud'by - pervyj
yazyk, kotoryj ya pytalsya vyuchit', odin iz starejshih prakticheskih
yazykov. Monstr. No bez pretenzij. Rossiyu minovala (prakticheski)
uchast' poznakomit'sya s etim yazykom. I vozblagodarim za eto
Gospoda.
- FORTRAN-90 - ne znayu, chto budet, esli
k telege privintit' kryl'ya i reaktivnyj dvigatel', no...
nadeyus', chto vse zhe poletit. Vprochem, ya rassmatrival by
progressivnym takoj process izmeneniya yazyka, v kotorom prezhde
vsego ne dobavlyayutsya novye moguchie vozmozhnosti, a izbavlyayutsya
ot idiotizma starogo (ne vnosya pri etom novyh udachnyh
uhudshenij).
- LISP - ideya, konechno, interesnaya...
No uzh bol'no mnogo skobok. Da i obraz myshleniya nuzhen drugoj:
spisochno-linejnyj. Iz golovy i hvosta - bez tela. A eshche nado
umet' lyambda-vyrazhat'sya. Neprivychno.
- Scheme - bolee moshchnoe razvitie LISP.
Neprivychno, no sil'no.
- Prolog - tozhe neprivychno, hotya
po-drugomu. No eshche moshchnee i eshche interesnee. Fon Nejman s ego
mashinoj spryatalsya kuda-to. |to tot yazyk, na kotoryj ya soglasen
potratit' vremya. Hotya by potomu, chto sam nauchus' myslit'
logichnee. |ffektivnost'? Osobenno interesno budet, kogda vetvi
logicheskogo vyvoda budut obrabatyvat'sya parallel'no na mnogih
processorah. No poka ya ne uvizhu takogo produkta na svoem stole,
ya ne budu govorit' o ego industrial'nom ispol'zovanii. Hotya,
znayu ya i pro takoe.
- VisualBasic i Tcl/Tk
- da, i takie strannye yazyki poyavilis'. YAzyki dlya
programmirovaniya interaktivnogo graficheskogo interfejsa. Tcl/Tk
- eto primochka dlya UNIX. |to interpretativnyj yazyk, ne
trebuyushchij kompilyacii. Imeet dva cennyh svojstva: mozhet
vstraivat'sya v Si programmy, a eshche - imeet vstroennyj mehanizm
obshcheniya s drugimi processami, na Tcl zhe napisannymi.
- Assembler - ne rassmatrivaetsya kak
kandidat dlya resheniya skol'-nibud' slozhnyh zadach. YA hochu dumat'
o tom, chto mne nado sprogrammirovat', a ne kak
poborot' apparaturu komp'yutera. Krome togo, ispol'zovanie
assemblera v lyuboj chasti proekta tut zhe namertvo privyazyvaet
ves' proekt k konkretnomu tipu mashiny. Assembler ostetsya dlya
razrabotchikov kompilyatorov, optimizirovannyh bibliotek, da dlya
toj bratii, kotoraya kak raz i boretsya s zhelezom po dolgu
sluzhby: dlya sistemnyh programmistov, pishchushchih mashinno-zavisimuyu
chast' yadra OS. No ya im ne zaviduyu: trud ih tyazhek, no ne zhivet
dol'she konkretnoj OS i konkretnoj mashiny.
- Rezyume: yazykov mnogo, edinogo net,
samogo horoshego net. V stremlenii sdelat' bolee horoshij yazyk,
kto-to sochinyaet eshche odin - i svalka uvelichivaetsya. Skazat' zhe,
chto dlya kazhdoj zadachi neobhodim svoj, specializirovannyj, yazyk,
luchshe vsego otrazhayushchij chayaniya dannoj konkretnoj zadachi, ya tozhe
ne mogu: budet Vavilonskoe stolpotvorenie. Dazhe pri nalichii
perevodchikov. No i edinyj yazyk, yavno, ne roditsya. Hotya by
potomu, chto u programmirovaniya ne odna paradigma (nu k primeru
- fon Nejman i logicheskoe programmirovanie). My uchim
anglijskij, no predpochitaem trepat'sya mezhdu soboj po-russki. A
francuzy - po-francuzski. A uzh yaponcy-to i vovse... A rezyume
vse zhe takoe: plohuyu programmu mozhno napisat' na lyubom
yazyke.
Uzh tak dolgo UNIX rugali za otsutstvie druzheskogo
interfejsa, kak i proglyadeli, chto on tam davno uzhe est' (nu let
10 tochno); a vot sredstv, podobnyh shell, v drugih
sistemah kak-to ne obrazovalos'.
CHto my imeem? Imeem my okonnuyu graficheskuyu sistemu
X Window, kotoraya (v otlichie ot MS Windows)
mozhet pokazyvat' kartinku ne na toj mashine, gde prikladnaya
programma etu kartinku generit. Imeem my biblioteku dlya
ispol'zovaniya etogo: Xlib. I na nej
napisannye "toolkit"y - biblioteki funkcij bolee
vysokogo urovnya: menyu, dialog boxes, scroll bars,- wid
gets koroche govorya (neperevodimyj fol'klor - "stroitel'nye
bloki graficheskogo interfejsa"). Stil' ramochek, menyu itp. - ne
vstroen v X Window, ego zadayut toolkity! Zahochetsya vam
sdelat' druguyu vneshnost' - prepyatstvij net.
Sredi nih nahodyatsya OpenLook i
Motif - kotorye do nedavnego vremeni
sorevnovalis' mezhdu soboj. Pobedil Motif - kak
bolee pohozhij na MS Windows. Hotya, chestno priznayus',
programmirovat' na OpenLook-ovskoj biblioteke
XView sushchestvenno proshche. Zato i veshchej, kotorye
v XView hochetsya dobavit' ili peredelat' - tozhe gorazdo bol'she.
Kstati, Tk iz Tcl/Tk - eto tozhe
toolkit, imeyushchij vneshnost' Motif.
Zato, v otlichie ot Motif, v Tk vse mozhet menyat'sya vo vremya
vypolneniya programmy: cveta, fonty, razmery. Motif v etom
smysle fiksirovan.
Eshche imeyutsya vsyacheskie rasshireniya dlya trehmernoj grafiki,
vrode PEX i OpenGL. OpenGL
priduman firmoj Silicon Graphics, horosh, i ya udivlyayus' - pochemu
on do sih por ne stal standartom dlya X Window? No i otvet,
pohozhe, znayu: avtory prosyat deneg za ispol'zovanie. V to vremya
kak X Window vplot' do vseh ishodnyh tekstov dostupny
besplatno. CHto, pravda, ne oznachaet, chto ih pishut v
universitetah golye entuziasty. Ih finansiruet konsorcium
krupnyh proizvoditelej UNIX-sistem. A vlozhenie deneg v
universitety v USA ne oblagaetsya nalogami! Tak chto firmy tratyat
den'gi "deshevle", i pri tom rezul'tat raduet glaz.
Teper' dlya dvumernoj grafiki v UNIX poyavilsya eshche i
OpenStep - ta samaya ob®ektno-orientirovannaya
graficheskaya sreda, chto Stiv Dzhobs na NeXT-ah sochinil.
Da, eshche yazyk dvumernoj grafiki PostScript
prochno obosnovalsya v UNIX. Vmeste s vozmozhnost'yu risovat'
PostScript obrazy v okoshkah (a ravno pechatat' ih na printer).
Nu, multimedia i video eshche tol'ko nachinayut svoyu istoriyu.
No i oni v X Window est'.
* Sistemnyj administrator. *
UNIX spravedlivo rugayut za slozhnost' administrirovaniya
sistemy. U etogo est' tol'ko odno opravdanie: posle nedel'
nastrojki vsego, chto tol'ko mozhno (i chto poroj ne nuzhno), vse
rabotaet kak tank. |tim priyatnym svojstvom drugie sistemy chasto
ne otlichayutsya.
Problemy zhe sistemnogo administratra sostoyat, glavnym
obrazom, v tom, chto on dolzhen znat' ochen' mnogo raznorodnyh
veshchej. Prichem veshchej "universal'nyh": yazykov dlya oformleniya
chego-nibud'. YAzykov, a ne nabora menyu i ekrannyh form. Potomu
glavnye instrumenty UNIX-administratora - eto tekstovyj
redaktor i tolstennoe spravochnoe rukovodstvo.
Vot tol'ko koe-chto dlya administratora Solaris
2: yazyki i produkty.
- shell - yazyk programmirovaniya
komndnyh fajlov proizvol'noj slozhnosti, vprochem ih gorazdo
bol'she: sh,
csh,
ksh,
jsh,
vcsh,
tcsh,
bash,
wish.
SHelly - odno iz glavnyh sredstv skleivat' drug s drugom
raznomastnye programmy, govoryashchie chashche vsego na raznyh yazykah;
- Si - yazyk, na kotorom napisana
operacionnaya sistema. Imeya kompilyator i opisanie bibliotek
(kotorye v UNIX est' vsegda) mozhno sdelat' vse;
- perl, awk,
sed - yazyki programmirovaniya obrabotki dannyh,
"perevodchiki" s yazyka na yazyk;
- make - sistema avtomaticheskogo
postroeniya bol'shih proektov po opisaniyu; Tuda zhe
imake - preprocessor k make;
- nroff, tbl,
eqn, pic - yazyki opisaniya
formatirovaniya tekstov;
- HTML - yazyk dlya formatirovaniya
gipertekstov v Mosaic;
- NIS+, DNS -
vsyacheskie setevye informacionnye servisy. Netrivial'nyj yazyk
(format) opisaniya tablic i kucha komand.
- TCP/IP routing - eto na samom dele
predshestvuet DNS;
- OnLine DiskSuite - sistema
zerkalirovaniya diskov. Tozhe massa komand;
- NetWorker - sistema bekapirovaniya na
magnitnye lenty;
- sendmail - marshrutizator elektronnoj
pochty. YAzyk;
- SunNet Manager - sistema upravleniya
set'yu;
- SecureRPC, NFS,
automounter - vsyacheskie shtuki dlya setevyh
fajlovyh sistem;
- UUCP - chtoby nastroit' etot "UNIX-
UNIX copy" nado umet' bit'sya s modemom i pisat' zagadochnye
skripty;
Programmistu krome togo polezno znat' lex
i yacc - generatory leksicheskih i
sintaksicheskih analizatorov (dlya postroeniya kompilyatorov).
Da, eshche est' massa moguchih i neochevidnyh v upravlenii
tekstovyh redaktorov:
emacs,
TeX,
vi,
ed,
sed.
A eshche on dolzhen umet' chitat' bez slovarya angloyazychnuyu
tehnicheskuyu dokumentaciyu.
Kstati, raz uzh rech' zashla i o programmistah: kak pravilo
razrabotchiki (osobenno fanatichnye) ne lyubyat ni pisat'
kommentarii, ni dokumentaciyu. Sledstvie etogo takovo: proshche
zanovo napisat' programmu, chem dodelat' ili modificirovat'
chuzhuyu. Iz ploho (ili sovsem ne-) dokumentirovannoj programmy
udaetsya nadergat' v luchshem sluchae otdel'nye funkcii. V itoge -
massa programm, delayushchih pochti odno i to zhe. Svalka i
raznosherstnost' rastut, kachestvo zhe - sushchestvenno medlennee
kolichestva.
V otnoshenii sistemnogo administratora v UNIX verna
"obratnaya" pogovorka: "Dve golovy horosho, no odna - luchshe". V
silu togo, chto u seti, rabotayushchej kak odna bol'shaya mashina,
dolzhen byt' odin hozyain, kotoryj znaet
vse tonkosti. Emu zhe huzhe: on dolzhen tak
mnogo znat' i pomnit'. No drugim - luchshe. Potomu, chto kogda
kazhdyj nachinaet stavit' opyty, i levaya ruka ne znaet, chto
delaet pravaya noga - rezul'taty poluchayutsya uzhasayushchimi. Mne
dovodilos' videt' seti, kotorye administrirovalis' neskol'kimi
lyud'mi. Nekotorye iz nih byli nekompetentny. |to uvelichivalo
rabotu glavnogo administratora vdvoe i vtroe - emu prihodilos'
peredelyvat' vse za krivorukimi. S drugoj storony, odin chelovek
ne mozhet znat' vse. I dlya delaniya togo, chto on ne znaet - emu
sleduet prizvat' pomoshchnikov. No tol'ko pust' oni ne delayut
nichego bol'she!
Itak, v administrirovanii odna golova luchshe - ona pomnit
vse, obshchuyu kartinu. No odna golova - i huzhe. V tom smysle, chto
esli odin zabolel, uvolilsya, zagulyal - vse ostal'nye vryad li
bystro razberutsya v nakruchennyh im nastrojkah. Poetomu menedzher
dolzhen trebovat' ot administratora zapisyvat'
hotya by mesta, imena fajlov i sistem, kotorye
on nastraival. V luchshem zhe sluchae - vel by zhurnal.
Process napisaniya programmy
- Dostizhenie rezul'tata: "YA eto mogu" i "|to v principe
vozmozhno i mne po silam". Pishetsya chernovik, prototip
programmy. Glavnym zdes' yavlyaetsya novizna i poluchenie
uverennosti v svoih silah. Plohoj programmist na etom i
ostanavlivaetsya, sotvoriv novuyu i plohuyu programmu, kotoraya NE
delaet togo, chto mogla by, i ottogo eshche obidnee.
- Posle togo, kak rezul'tat v PRINCIPE poluchen, dumaesh'
"a kak eto nado sdelat' PRAVILXNO?" I vot teper', privlekaya
ves' prezhnij opyt, v programme pere- i do- pisyvaetsya do 80%
mest. Poroj (i ne tak uzh redko) perepisyvaetsya VSYA
programma-prototip.
- Dovodka. Privedenie k "pochti idealu". Ideal
nedostizhim, ibo zaprosy so vremenem rastut, izmenyayutsya, i
ishodyat iz uzhe dostignutogo; a opyt (syn oshibok trudnyh) tozhe
rastet i podaet novye idei. Posemu process uluchsheniya ne imeet
konca. No pervoe priblizhenie k idealu dostizhimo: my dopisyvaem
k programme ne tol'ko to, chego "ya hochu, sejchas", no i to, chego
"ya mog by v principe zahotet'" - i delaem eto zaranee.
Zaranee, chtoby POTOM ob etom ne zabotit'sya, a esli uzh i
pripret, to imet' uzhe nametki: kak eto sdelat', ne s nulya.
Zaranee sdelannoe pozvolyaet nam oblegchit' zhizn' v budushchem i
otvyazat'sya ot etoj programmy, zabyt' pro nee.
- Ne tak li i v obychnoj chelovecheskoj zhizni?
Okazyvaetsya, russkie programmisty v Rossii pishut na raznyh yazykah; no vse oni -
Russkij YAzyk. Est' massa russkih kodirovok, otlichayushchihsya poryadkom bukv, to
est' kakoj bukve pripisano kakoe chislovoe znachenie (encoding).
- KOI-8 - istoricheski prinyataya na
russkih UNIX sistemah - samaya rannyaya iz poyavivshihsya
vos'mibitnyh kodirovok. Otlichaetsya tem svojstvom, chto esli u
nee obrezan vos'moj bit:
c & 0177
to ona vse zhe chitaema s terminala kak transliteraciya
latinskih bukv. Imenno etoj kodirovkoj pol'zuetsya avtor etoj
stat'i (kak i bol'shinstvo UNIX-sites seti RelCom). Imeet to
nepriyatnoe svojstvo, chto bukvy v nej idut ne v alfavitnom
poryadke.
- ISO 8859/5 - eto amerikanskij
standart na russkuyu kodirovku. A russkie programmisty k ee
razrabotke ne imeyut nikakogo otnosheniya. Eyu pol'zuetsya
bol'shinstvo kommercheskih baz dannyh.
- Microsoft 1251 - eto ta kodirovka,
kotoroj pol'zuetsya Microsoft Windows. Vozmozhno, chto
imenno k etoj kodirovke pridut i UNIX sistemy.
- Al'ternativnaya kodirovka dlya MS DOS -
russkaya kodirovka s psevdografikoj, ispol'zovavshayasya v MS DOS,
i v silu etogo okazavshayasya dostatochno rasprostranennoj (v
Rossii vse plohoe rasprostranyaetsya shiroko).
- Kodirovka dlya Macintosh - tozhe
osobennaya.
A podderzhivat' prihoditsya ih vse (ili po krajnej mere
bol'shinstvo), i pri tom - odnovremenno.
Nu i eshche upomyanem mul'tibajtovye kodirovki, gde russkie
bukvy kodiruyutsya voobshche poka neizvestno kak. A eshche est'
ukrainskie bukvy. I prochie.
|to velikoe "raznoobrazie" prichinyaet massu neudobstv. No,
gospoda, eto Rossiya - chto znachit - shirota dushi i absolyutnyj
bardak.
Relax and enjoy it. Raz bardak odnazhdy nachalsya,
izbavit'sya ot nego udastsya ne skoro.
---------------------------------------------------------------
Nu i v kachestve poslesloviya - nazhmite na etu knopku i
prochtite tekst vverhu ekrana
Last-modified: Sat, 21 Mar 1998 12:30:03 GMT