Hallo,
maailm!
Jätkan
oma jalutuskäike *nix-i maailmas.
*nix on üldine üldnimetus
kõigile süsteemidele, mille aluspõhjaks on Unix. Niisiis ka Os X,
linuxid, androidid jpm...
Arvutiasjanduses on Unix-il absoluutselt unikaalne positsioon.
Uskumatu,
aga tõsi: 1969 loodud süsteem on kestnud nüüdseks pea pool
sajandit ja tunneb ennast kindlamini kui kunagi varem. Ja see on väga
suures osas seesama Unix.
Kui MS-DOS -il vaevalt et on enam
jäänud mingitkis sarnasust praeguste Windows xx süsteemidega ja
vahel isegi vahe kahe järgneva W versiooni vahel on väga suur, siis
Unixi baasiks olevad põhilised põhimõtted püsivad.
Kui seda
fenomeni millegiga võrrelda, siis vahest Kreeka ja Rooma
kultuurilise mõjuga, mis saavutas oma haripunkti alles 19. sajandi
lõpuks.
Ja võrrelda tuleks tõesti ka kultuurilises mõttes –
arvutiinimeste släng, mõtlemisviis, müüdid, kõik see on
eraldamatu Unix -ist ja selle ajaloost ja arvutiasjanduse jaoks on 50
aastat antiik.
Seetõttu,
kui te tõesti tahate midagi mõista arvutiasjanduses, ei pääse te
Unix-ist ja parem on see võtta oma ülikooliõpingute
baasteadmiseks.
Windows on kukutatav, Unix tõenäoliselt
(veel) mitte – ja ma väga tahaks, et see jätkuks veel mõistliku
aja jooksul.
Selline pikaajalisus seob omavahel juba 3
põlvkonda arvutiinimesi ja sellel on iseenesest määratu tähendus.
Kuid pikk ajalugu on kasvatanud ja alles hoidnud ning koguni
VÕIMENDANUD hulgaliselt veidrusi. Ja tahate või mitte – nagu
kreeka keele õppimisel on vaja ära õppida need kreeka eed ja
sigmad, on Linuxi / Unixi -l vältimatud mõnede imelike lühendite
äratundmine ja vähemalt sellise näo tegemine, et tunnete neid une
pealt.
Monstrumid,
millest arvutitudengid ei pääse on:
grep
sed
awk
perl
ja
selle kõige taga natukene müstiline termin "regulaaravaldis".
Ja
ärge veel lootke pythoni peale.
C programmeerijatele lisandub
veel töövahend make, ja kes veel ei ole C programmeerija, võiks
selleks ometi saada!
Te
ei pääse!
Kest,
mille sees see elu kulgeb, seda kutsutakse bourne shelliks ühe väga,
väga vana guru Stephen Bourne järgi (s. 1944).
Linuxi
mailmas on sellest saanud bourne again shell ehk lihtsalt bash.
Pühendamatutele
lisan, et see on käsurea aken ja sellega kaasnevad trikid, mida seal
saab teha, ntx ls või koguni rm -rf * natukene rohkem
edasijõudnutele.
Ken
Pier arvas sellest nii:
„Ma
võrdleks oma arvutikarjääri alustamist Unix-iga, ütleme kui
üliõpilane, sellega, kui juhtute sündima Ida Aafrikasse. Seal on
talumatult kuum, teie kehal roomavad täid ja kärbsed, te olete
nälginud ja kannatate paljude ravitavate tõbede käes. Aga nagu
noored Ida-aafriklased ütlevad, on see lihtsalt loomulik olukord ja
nad elavadki nimoodi.
Selleks
ajaks, kui tudengid leiavad, et asjad on teistmoodi, on juba liiga
hilja. Nad juba mõtlevadki, et kesta skriptide kirjutamine on
täiesti loomulik toiming.
AGA
esimene tõsiseltvõetav arglik katse Unix-it kritiseerida ta
ilmselgelt jaburate käskude pärast, mis meelde ei jää ja midagi
ei küsi,
ilmus
alles Donald Normanilt 1981.
Ma
arvan, et senini üks põhjendatumaid kriitikaid Unixi suunas üldse.
Soovitan
kõigil, nii *nix fännidel kui ka vastastel aeg leida ja see
kriitika läbi lugeda. See on väga asjalik ja sarnaste hädade alla
kannatavad paljud kasutajaliidesed, mitte ainult Unix.
Ken
Pieri tsitaat on aga võetud raamatust The Unix haters handbook
mis ilmus
millegipärast alles 1994, 25 aastat pärast süsteemi loomist.
{
Mitte
ainult mina ei alusta süsteemi uurimist selle kriitikaga -
leidsin
selle esimese UNIX raamatusoovitusena blogist
Sealolevaid
viiteid 15 blogi autori arvates parimale arvutiraamatule võitegi jääda Eestis otsima.
Tabavusprotsent 0.
}
Kuidas
see kohutav süsteem sai eksisteerida nii kaua aega? Miks lõpuks
raamat sellest kohutavusest tekkis, 25 aastat pärast
viljastamist?
Ja kus oleme meie nüüd, aastal 2015?
Unix-i
kaitseks kirjutas seesama Donald Norman unixivihkajate raamatu
eessõnas, et süsteem sündis ajal, mil sellistele asjadele, nagu
kasutajasõbralikkus, lihtsalt ei osatud sellist tähelepanu pöörata
ja ometi oli Unix TOLLAL kasutajasõbralikkuse fenomen. Juba see
asjaolu, et iga asja kohta võis lõputult lugeda manuaale, põrmustas
konkurendid (see ei olnud tollastes arvutisüsteemide maailmas üldse
loomulik asi).
Ja
Unix levis ülikoolidesse ja siit see viirus algas, sest
operatsioonisüsteem oli vähemasti kuni 80-ndate aastateni
kultuslikus seisuses. Seoses süsteemi kommertsialiseerumisega tekkis
süsteemi arengusse kriis, kuid siis tuli Torvalds ning sisuliselt
päästis Unixi. Aga sellel oli oma hind - kultus tekkis taas.
Aga
see ei oleks saanud teoks ilma sisemise loogilisuseta – kui käsurea
käsud või muud välised vidinad võivad Linuxite peres olla
ebaloogilised nimetustelt, on tuum korralik. Vana, kindel,
läbiõpitud, läbiproovitud süsteem, sisaldades arvutiteadmiste
nurgakivid, nagu standardne sisend, standardne väljund ning
operatsioonisüsteemi programmeerimine kõrgkeeles.
Mis
loeb selle kõrval asjaolu, et pärast rm -rf * -i olete vaikivalt
jäänud oma failidest ilma?
Tavakasutajatega
nii ei ole.
Kui
on valida süsteemi vahel, mis selliseid vigureid ei tee, või
süsteemi vahel, mis seda kogu aeg teeb ja kurtmiste korral soovitab
lugeda krüptilist manuaali, siis tavakasutaja ei vali sellist
süsteemi.
Apple
valis tee, mis viis sihile – on võimalik korraliku Unixi peale
ehitada ka kasutajasõbralik süsteem.
Kas
Ubuntu jõuab ükskord niikaugele?
Võimalik
siiski, et see jääb unistuseks, sest Unixi kasutasõbralikkuse
vastu võitlevad needasamad sisemised printsiibidi ja põhimõtted,
mis Keni ja Dennise ja tema kolleegide poolt paika pandi.
Näiteks
lühidus. Kui midagi öelda ei ole, siis Unix ei ütlegi midagi. Mida
üldse kosta idee peale kõik oma failid ära kustutada?
Tänapäeval ei tule selle pealegi, et võid ühe klahviliigutusega,
ilma mingi hoiatuseta oma töö viljadest ilma jääda – ja
Dennis ja Ken pidasid seda täiesti loomulikuks. Ükskord jääd
ilma, teinekord pead meeles. Ja imelik – see süsteem ka toimib,
kuigi tundub alguses pisut frusteeriv.
Ja
kasutajatel ei olnud ka valikut.
Vähemalt
kirjutas Brian ed juhendis – lugege ja imestage -
et
PEAAAEGU KÕIK TEKSTISISESTUSED UNIXIS on tehtud ed-ga.
See
võib – olla selgitab vi vaimustuse – kui mina seda "kohutavat"
editori vi esimest korda nägin, lubasin endale seda mitte kunagi
selgeks õppida. Never ära ütle never, sest nüüd tuli seda ikkagi
teha – on selliseid miniunix-eid, kus teisi võimalusi ei ole,
peale ed muidugi. Ja ei olegi midagi häda sellel vi-l!
Ja
vi oligi revolutsioon teeklaasis, sest vi on lühend sõnast visual
ja kasutas vist ühena esimest visuaalset moodi editeerimisel –
see, mida sa näed, seda sa editeerid. Kas võiks mõni asi üldse
teistmoodi olla, küsime pisut üllatunult. Jah, saab küll –
selleks lugege see ülaltoodud juhend läbi.
Kellel
UNIX näppude all ja teie bash ed-d ei tea, siis
apt-get
install ed aitab selle väärtustliku töövahendi teie arvutisse ja
saate nautida jälle ed võlusid.
Nagu üks teine UNIX- ringides
ringlev kultustekst ütleb -
ED
ON TÕELINE TEE NIRVAANASSE
Vaid
ed tundjale ei valmist mingit probleemi aru saada, kuidas g/re/p
tekkis.
g
tähistab globaalsust (ed-s terves fail)m
re
-regular expression – on regulaarse avaldise lühend
p
tähistab printi.
Unix
gurud ütlevad, et grep on filter.
Võta
mingi fail või failid, otsi kõik read, mis vastavad regulaarsele
avaldisele
ja trüki välja / ekraanile / printerile / faili.
Kolmetähelise
sed etümoloogia on nüüd ka väga arusaadav.
Sed – stream
editor – voo (vt. Vallaste arvutisõnastik) editor.
Või oja,
nire editeerimine, vahel on kujutlus voost pisut üle pingutatud.
Sed
asendab ja muudab midagi sissetulevas voos.
AGA tõelised
programmeerijad (real programmer) sellega ei piirdu.
Sed on
võimeline “Turingi masinat” programmeerima. Kui mingi
programeerimiskeel aga
Turingi masinaga toime saab, saab ta
hakkama kõigega.
Ja
nii ongi netis ringlemas hea hulga sed-i programme.
Neist
kuulsaim vahest on “sedoku”, mis mõneks ajaks on nullinud minu
vaga soovi javaScriptis sama asi kirja saada.
Milleks –
sed on selleks ju parim vahend ja töö ammu tehtud.
Kui
aga olete päris algaja, võtke kaasa või õppige pähe kuulsa
“FizzBuzz” ülesande lahend sed-s.
Saate
vähemalt teise ringi, kui mitte edasi, et firmas, kuhu maabute,
tekitada
….
olukord, millest räägib kõikide erialade kunn Kivirähk
Oht
FizzBuzz ülesannet oma tööintervjuul saada on siiski minu arvates
üle pingutatud.
Eksisteerib
siiski selline kurtmine, et noored, need tänapäeva noored ei saavat
sellega hakkama.
Eriti
muidugi, kui ettepanek on see kirja panna sed-s.
Tegelikult
on siin toodud lugu päris tõesti sündinud ja selline
programmeerija kusagil 50-ndatel-60-ndatel reaalselt toimetas. Kes
viitsib, uurigu interneti linkidest…
Kui
te nüüd olete sedi selgeks õppinud ja kõvasti harjutanud, enne
muidugi ikkagi need regulaaravaldised, eks, siis nii III kursusel
jõuame millalgi ka awk ja perl juurde.
Awk
EI OLE LIND.
Awk on programmeerimiskeel, mis on saanud (seda
pole ju üldse raske ära arvata) oma nime 3 gigandi perenimede
järgi:
:
Alfred Aho, Peter Weinberger ja Brian Kerninghan.
(Siin
keele autorid ise räägivad sellest, mida mõtlesid. Pean oma
riiulisse tellima)
Vabalt
loetav aga on see raamat:
Teiseks
on tegemis andmete poolt juhitava programmeerimiskeelega, mis teeb
mõne ülesanda awkis triviaalseks ja vastavad programmid lühidaks.
Paljud
neist on onelinerid, ühereakad.
Regulaaravaldiste
kultuse pealt sündinuks võib pidada ka programmeerimiskeelt perl,
mida võiks siis pidada awk-i edasiarenduseks.
Kes
veel pole aru saanud, perl on esitähed nimetusest Practical Extraction and Reporting Language.
Autoriks
Larry Wall, aasta 1987.
Neist
moodustisist millalgi lähemalt edaspidi.