juuni 06, 2015

Alguses oli ed
















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.
Sedoku lahendab sudokusid. Pidavat sisaldama siiski mingi kala ja see on nüüd mõne noore särava geeniuse ülesanne see kala sealt välja püüda / mis veel vingem, kogu asi täielikult ümber panna.
http://sed.sourceforge.net/local/games/sedoku.sed.html
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.

Muuseas, need PÄRIS TÕELISED PROGRAMMERIJAD peavad isegi “sediste” “pehmodeks”:
http://www.cs.utah.edu/~elb/folklore/mel.html ….
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.

Keel tasub uurimist mitmel heal põhjusel. Kõigepealt on tema kohta kirjutatud paar päris head raamatut:
http://www.amazon.com/The-AWK-Programming-Language-Alfred/dp/020107981X
(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.


1 Comments:

Anonymous Anonüümne said...

Eks asi tegelikult ole peakujus kinni.

On neid, kes tahavad kiiresti midagi tehtud saada ja kindlasti vähima võimaliku vaevaga. Keda üldse ei koti, kas ja kuidas asi tegelikult töötab. Neile UNIX ei sobi ega ole kunagi sobinud.

Paraku on ka neid, kes tahavad, et asjad töötaksid ka tegelikult, mitte näiliselt. Et kord omandatud teadmus kestaks kauem kui mõne ülifirma järjekordne libaOS. Neile on UNIX ja selle derivaadid alati sobinud ja jäävadki sobima.

Mis puutub käsunimedesse, siis esimesele grupile meeldivad käsud nimega Trillalaa, Trallalaa ning firmad nimega GoDaddy, Come'O'Mama ja sellised. Teisel grupil on kamakaks kui keeruline nimi, peaasi, et seda oleks võimalik loogiliselt tuletada. Urin UNIXi käsunimede päritolu ümber on minu arvates pärit oligofreenikute hooldekodust - pea iga nimega käib legend kaasas ning oma asi, kui keegi tahab valida sihiliku ignoreerimise tee. See oleks umbes nagu tantrismist võtta vaid nühkimine ja jätta arvestamata kogu mentaalne värk.

Mis puutub maailmanägemisse, siis esimene grupp (UNIXlased) moodustab oma peas korrektselt toimiva maailmamudeli, keeruline see ju on, aga pärast seda toimib masin täies vastavuses mudeliga ja jääb toimima kuniks tänapäevast on saanud antiik. Ümber õppida ja iga päev tuult nuusutada pole vaja. Teine grupp on oluliselt laisem, vaimne jõupingutus pole neile sünnipäralt omane, nende lemmikproge on Microsofti kirjaklamber. Arusaadav siis, et kaebused on erinevad.

Sõnaga, tegemist on filosoofilise teelahkmega. Ühe või teise suuna eelistamine ripub ära struktuurse mõtlemise kultuuri(tu)sest. Kuivõrd see omadus põhiosas päritakse vanematelt, siis siinkohal igaks juhuks sügavuti ei lähe.

Muide, säärast asja nagu tavakasutaja ei eksisteeri. On umbes 20% inimesi, kellele pole probleemiks mistahes süsteem ja siis on ülejäänud 80% GoMamatajaid, kelle arvuti juurde toomiseks tuleb teha imetrikke, kaasa arvatud žestide dekodeerimine ja mõtete lugemine. MA ei ole päris kindel, et need viimased suudavad maailmale sama palju tagasi anda kui võtavad.

juuni 07, 2015 3:58 PM  

Postita kommentaar

<< Home