oktoober 19, 2014

Programmeerimise paradigmadest: Millist korvi valvama hakata?





















Vita brevis,
ars longa,
occasio praeceps,
experimentum periculosum,
iudicium difficile.

Elu on lühike, kunst selle mõistmiseks
võtab kaua aega,
juhus libiseb käest,
katsetamine ohtlik
ja otsustus keeruline

Meie keeleruumi on lugu munadest ja nende paigutamispõhimõtetest jõudnud peamiselt
ühe tubli Kilpla naise kaudu, kes teel turule äriplaani valmis mõtles:
müüa mune, osta kanu, müüa veel rohke mune ja saada pururikkaks.
Rõõmust hakanud ta aga tantsima ja kõik munad purunenud katki. 
Ehk oleks pool korvitäit targem olnud koju jätta ja alustada äri poole korvitäie munade müügi edulooga.
Ma ei mäleta täpselt, mis sellest kanast sai, ilmselt sai tal munemise isu otsa, kui sellisest oma ihuvilja raiskamisest kuulis.

"Ärgem pangem munasid ühte korvi!", nii võiks seda lugu refereerida.

Inglased üritavad selle elutarkuse sündi seostada Cervantese kuulsa tegelase Sancho Pancha-ga.

Naljakal kombel ei ole Cervantesel selle vanasõna sünniga suuremat pistmist:
Käibesse läks lause Cervantese bestselleri lohaka ümberpanemise tõttu - kusagil 1700 avaldatud esmatõlkes pandi üks lause inglise keelde sedaviisi ümber. Pärast seda ei leia te mitte ühestki Don Quijote tõlkest sellist rahvatarkust. Aga dzinn oli pudelist välja lastud ja mitte ühegi valemiga ei ole Hippokratesel ega Cervantesel, juhul, kui nad taaskehastuksid, võimalik maailmale selgeks teha, et nad ei mõtelnud neid asju päris nii. Et tahtsime paremat, aga välja tuli, nagu alati.
Sancho originaalse mõtteavalduse leiate te Don Quijote eestikeelse väljaande 186-ndalt leheküljelt:

"Teie heldus", vastas Sancho, "taganemine ei ole põgenemine, ja kohalejäämine ei ole mõistlik, kui hädaoht on suurem lootusest ja kes on tark, see hoiab end homseks ega pane kõike mängu ühel päeval . Ja teadke, et kuigi mina olen ainult harimatu talupoeg, taipan ma ometi veidi, mis on mõistlik talitusviis. Ärge siis kahetsege, et te mu nõu vastu võtsite, vaid asuge Rocinante selga, kui te suudate, ja kui ei, siis ma aitan teid, ja tulge mulle järele, sest mu nupp ütleb mulle et meil läheb praegu jalgu rohkem tarvis, kui käsi

Jänkid vormisid lause munade jagamisest Mark Twaini / Carnegie abiga soovituseks, et rikkaks saamiseks tuleks
"kõik munad ühte korvi panna ja seda hoolega valvata!…"
Hippokratese mõtte juurde tagasi tulles aga nii ongi, vähemalt vaese mehe puhul. Meil ei ole neid mune nii palju, mida korvide vahel jaotada, kui üldse. Munemise aeg on lühike. Tehnoloogia õppimisele kulub aga aeg, mis sageli on pikem, kui selle tehnoloogia enda elutsükkel võib olla.
Eriti tähelepanelik tasuks olla praegu täies elujõus tehnoloogiate osas.

Mida siis võiks ühele kompuutria ala tudengile ekspert soovitada? (btw, ma ei pea ennast sääraseks, aga ma refereerin siin teiste arvamisi)
Mis keelt uurida? Mis paradigmasse süveneda? Mida toob tulevik?


Elukogemus teeb paratamatult ettevaatlikuks, nii olen sunnitud süüvima enne (taas)vettehüppamist üsna põhjalikult teemasse. Ühes võib olla kindel - elame huvitaval ajal ja endiselt on arvutiala perspektiivikas, mitte hääbuv tehnoloogia.

Praeguste trendide kestes ollakse endiselt kohas, kus toimub "ristumine peateega", ainult et milline tehtud valikutest võiks olla see "õige"?
Äkki aitaks tutvumine ajalooga. Miks mitte eruditsiooni lisada seda käsitlust järgides?
James Iry programeerimise ajalugu
Parim selles vallas.
Pisut pikemalt ja tõsisemalt asja üle mõeldes - miks ikkagi kuldsed kuuekümnendad ja 70-ndate algus pani kõik peamised paradigmad paika?
Vaadake üle - 
Bret Victor: Tuleviku programmeerimine
ja lisamaterjalid:
Bret Victor, lisamaterjalid
Eriti selle esitluse lõpus väljatoodud küsimused panid mõtlema:
See oli aeg, kus teadlased "ei teadnud", millest räägivad. Sellised
ajad on kõige viljakamad, võrreldes aegadega, kui äkki teatakse (ja tegelikult
selgub, et ikkagi ei teata), millest räägitakse.
Üks nüanss lisandub veelgi: ARPA-st sai DARPA ja alates 1973 finantseeriti vaid neid ettevõtmisi, millel oli otsene seos sõjandusega. Ja lisandus kõik muu bürokraatia - tuli hakata projekte vorpima, et üldse raha saada. 

Praegu aga on aasta 2014 ja kompuutriteooria on endiselt arendamas neidsamu ideesid, mis 50 aastat tagasi. Tehnoloogia tikub muutuma kiiresti, inimesed aga võtavad need muutused omaks aeglaselt. 

Vaatleks siis mõningaid meie praeguse kompuutriajastu märksõnu lähemalt, ehk muudab see minu praeguseks hetkeks arvutitega tegeleva blogi veidi vaheldusrikkamaks. Selle blogijutu lõpetuseks alustaksin andmebaasidest, mille vahest kõige kujundlikumaks märksõnaks on kurikuulus
COBOL 


I COBOLI NEEDUS

Sageli määrab tehnoloogia olemasoleva  taseme meie … soovmõtlemine.

Üheks selliseks soovmõtlemise osiseks on ka instinktiivne viha bürokraatia vastu. Pisut leebem võiks ju see tunne olla selle bürokraatia "leevendamise" ühe vahendi - arvutiprogrammi osas, mis seda bürokraatiat haldab.
Võib ju juhtuda, et ametnik  teie fenomenaalse programmi mõjul muutub äkki valgustunuks?

Selliste asjadega aga ülikooli ajal vaevalt, et tasub tegelda ja ilusam ja popim on uurida objektide maailma (mida juhatatakse värvikalt sisse mingite simulatsiooninäidetega ei tea mis planeedi ökosüsteemist). Veel võimekamad võivad oma ajud murda lambda arvutuse sügavustes.
Ühel ilusal päeval tuleb teil ikkagi lahendada mõni selline probleem: persooni käest on vaja teada saada, mis on tema nimi või isikukood ja saadud andmed kuhugi üles kirjutada.
Eriti kerkib selline vajadus päevakorrale, kui otsite tööd ja leiba, sest mingite oleste tegemised teie väljamõeldud mänguökosüsteemis millegipärast seda ei kindlusta, kui mõned eriti õnnelikud ja talendikad mänguloojad välja arvata. (tõsi, meil siin Tartus vist saab mängude loomisega koguni leiba teenida).  Ja siis selgub, et teie käest tahetakse mingit kodulehte, mis müüb näiteks mingisuguseid torujuppe ja kõik ilus piirdub kliendiandmete kogumisega, kliendi krediidikaardi tühjendamisega ja veel mõne sarnase pudi-ludiga.
Aga akadeemilisel mesinädalate perioodil sellega tegelema ei pea ja siis äkki peab seda tegema päris palju, koguni nii palju, et need akadeemilised uudsused ununevad üldse. 
Ja nii nagu 10 või 30 aastat tagasi jäävadki need akadeemilised uudsused vaid akadeemia nelja seina vahele ja kodeerijad visataks tänavale tööd ja leiba otsima ikkagi eluks üsna ettevalmistamatult, sest kihvtide objektide maailma ja funktsionaalse maailma vahele on akadeemikutel ära ununenud kõige tähtsam asi, mida arvutid praegu teevad - see on ANDMETÖÖTLUS. 
Alguses on ANDMED. Kogu selle IT revolutsiooni väga lihtne eeldus on inimeste (mitte ainult bürokraatide) soov oma andmetega hakkama saada. 
Ja ometi õpetatakse arvuti eriala praegu enamasti nii, nagu oleks andmete töötlemine kõige teisejärgulisem asi, mis tuleb iseenesest. 
Keegi ei taha tunda pärmi maitset taignas, mis tänu pärmile on kerkinud 
Ja andmed ei ole selle kõige juures mitte kuhugi kadunud, vaid neid tuleb järjest juurde.
Aga andmed ei ole esimese klassi kodanikud selles süsteemis, vaid mingi tüütus, millega tegelemiseks ehk enam sobilik on rekursiivne kustutamine. Arvuti saab sellega imelihtsalt hakkama.
Vastupidise operatsiooniga aga arvuti enam hakkama ei saa. 
Ja iga päev toimuvad ikkagi täpselt samad väikesed tragöödiad personaalsetes arvutites, kord läheb kõvaketas katki, siis ebaõnnestub mingi install, siis jälle kasutaja ise on liiga hoolas olnud mõne kustutamisega. … See toimus ja toimub aastast aastasse ja mingi Moore seadus ei päästa, vaid on pigem nuhtluseks, sest seda nodi, mida varundada, on järjest rohkem ja mõnikord võib mõni varundus võtta päevi aega.
Äriloogika sellist korralagedust ei võimalda taluda ja seetõttu on välja arenenud andmebaasisüsteemid. 
Üheks esimeseks kõrgtaseme keeleks, kõrvuti Fortraniga, sai selle loogika haldamisel COBOL.
Hoolimata akadeemikute leiutatud ALGOList, rääkimata muudest kõrgtaseme saavutistest, kirjutati 60-ndatel, 70-ndatel, 80-ndatel ja 90-ndatel aastatel endiselt ärirakendusi COBOLis.
1997 tehtud ülevaatest järeldub, et enamik ärirakendusi on endiselt kirjutatud COBOL-is.
200 miljardit rida koodi - umbes samas suurusjärgus on Hiina müüris telliseid. 80 % ärirakendustest .
COBOLI järel tulid aga teised andmebaasikeeled, näiteks minulegi "ad nauseam" tuttav Foxpro.

Kuid COBOL, see polnud veel kõik. Selleks, et andmetega viisakalt ümber käia, tuli leiutada andmebaasi mõiste ja eraldada kaks asja teineteisest: programmid, mis selle andmebaasiga tegelesid ja andmebaasisüsteem. 
See võimaldas andmetega tunduvalt viisakamat ümberkäimist, sest andmebaasisüsteem ei lubanud programmidel enam igat asja teha ja hoolitses oma terviklikkuse eest ise. Et andmebaasile ligi pääseda, tuleb teha päringuid ja lisamise ja uuendamise käske ja seda käsitleb SQL nimeline keel.
Andmebaasi andmete loogikat aga käsitleb relatsiooniliste andmebaaside teooria, üks õnnestunumaid leiutisi programmeerimise ajaloos kõrvuti funktsionaalse programmeerimisega.
Matemaatikageenius Edgar Codd on selle taga seisev isiksus ja ma arvan, et ilma selle inimeseta oleks maailma andmekäsitlus oluliselt teistsugune ja vaevleksime endiselt samade hädade küüsis, mis 60-ndatel. Siis olid ka andmebaasisüsteemid, kahjuks mitte nii arenenud, üks selline andmebaasisüsteem kujunes välja ameeriklaste Kuu vallutamise käigus, et kuhjunud dokumentidega hakkama saada 

Mingist ajast alates, tinglikult  2005 algas aga järjekordne "revolutsioon" või vähemalt algas järjekordne revolutsiooni katse, et  jagu saada 
COBOL-i needusest, andmetest ja sellele lisandunud relatsiooniliste andmebaaside teooriast, millest kahjuks põhjani ei olnud palju võimelised aru saama. Revolutsiooni põhisisuks võiks olla relatsiooniliste andmebaaside ranguse leevendamine, et paremini toime tulla "suurte andmemahtudega", ("big data").
Üheks revolutsiooniliseks tõukejõuks sellele pöördele on kahjuks usk, et kõik siin maailmas on taandatav objektidele. See objektiusk sai alguse 80-ndatest ja kuigi ta tõi suhtelist edu, ei allunud relatsioonilised andmebaasid sellele mitte. Aga kui andmed objektidele ei allu, siis häda …
andmetele. 
Teooriakse nimetatakse seda objektide ja relatsiooniliste andmete impedansi 
probleemiks. Relatsioonilised andmebaasid selles on aga küllaltki rangelt defineeritavad nähtused (objektideks neid ei anna ümber lõikuda, kui mitte kasutada üldobjekti "andmebaas", mis jälle midagi ei lahenda). Andmete puhul saab järeldada enam-vähem selgelt, milline on selle andmestruktuuri "normaalkuju". Puhh.
 Seevastu objektide maailmaks lahutamise jaoks mingid üldised juhtnöörid puuduvad. See loob olukorra (katsun sellest rääkida järgmises teoreetilises loos OO kohta), kus õnnetut õppurit hurjutatakse sageli sellega, et tegemist ei ole "tõelise" OO-ga. 
Mis aga on see "tõeline", jääbki sageli saladuseks.
Protseduuriliste programmide puhul seda probleemi väga ei tekigi. Asi on lihtsalt selles, et protseduuriliste keelte paar põhistruktuuri, if, while, for ongi peaaegu kõik, mida alustaja peab teadma…
Lisaks see siis muidugi ka, et GO TO on kahjulik.
See on aga  täiendav pluss vanale protseduurilisele maailmale, sest täna ei ole väga selge, mida ikkagi programmeerija peab teadma või mis stiili eelistama.

Olen üsna kindel, et relatsioonilised andmebaasid kahjuks või õnneks on  selleks välja mõeldud, et jääda.
Et revolutsioonide ja manifestidega matemaatilist loogikat ei võida… 
Ja seetõttu tasub pigem panustada andmebaaside loogika uurimisse, kui seda eirata. Moed tulevad ja lähevad, andmebaas alati jääb … ja kunagi ehk jõuab ka operatsioonisüsteemide tegijate teadvusesse tõsiasi, et ka kõik andmed, mis seal arvutisüsteemis olemas on, moodustavad andmebaasi ja peaksid olemas sama kaitstud, kui tänapäevane korralik äriandmebaas.
Näiteks võiks kasutajal olla võimalus taastada oma kustutatud faile, unistus, mille täitumist olen oodanud nüüd vist juba 25 aastat. Ja uue arvuti ostmise järgne kolimine võiks olla midagi väga lihtsat, mitte tüütu, ja vigaderohke isiklike arhiivandmete kopeerimine, mida M$ vaid raskendab…

Andmebaaside teema lõpetuseks aga tekkis kiusatus uurida, kes ikkagi on selle COBOL-i "needuse" taga, mis akadeemikutel ja "tõelistel" programmeerijatel meele nii kibedaks teeb.
Teame tõenäoliselt päris hästi või oleme vähemalt kuulnud, et Alan Turing leiutas Turingi masina, või et John McCarthy LISPI. 
Niklaus Wirth-i loominguks on programmeerimiskeel Pascal ja nii edasi…
… Mõnikord aga saab kuulsaks lihtsalt sellega, kui GO TO kuulutada kahjulikuks:
(Edsger W. Dijkstra).

Seevastu Grace Hopperi, COBOLi looja nime tõenäoliselt teavad vähesed. Ka mina kuni viimase ajani ei  teadnud, kuni lõpuks tuli mõte värskendada oma mälu relatsiooniliste andmebaaside osas. 



















Jutus tuginen põhiliselt Kurt Beyeri käsitlusele (vt. Kurt Beyer, loeng Grace Hopperist).
Grace Murray Hopper sündis 9 detsembril 1906, nii, et põlvkondliku kuuluvuse mõttes ei oleks temal tulnud arvutitega mingit pistmist teha.
Aga elu tahtis teisiti. Ta lõppetas Vassari kolledzi, ning seejärel Yale ülikooli, 
kõik suurepäraste tulemitega ja õpetas Vassari kolledzis matemaatikat, kuni algas sõda. Pearl Harbori järgselt taotles ta kolledzist töölt vabastist ja astus mereväkke, saades ohvitseri väljaõppe. Sõjaolukord tingis selliste võimaluste tekke ka naisterahvastele, kuigi siin oli probleemid - Grace Hopper oli juba 38 ja kaalus normist vähem. 
Kuid mereväes leiti temale siiski rakendus arvutite alal, sest just siis oli koostöös IBM-ga Howard Aikenil valmis saanud kolakas nimega Mark I.
Nii et küberlaevaks, kuhu Grace määrati, sai Mark I ja teda loetakse 3-ndaks persooniks ajaloos, kellel oli võimalus seda kolakat "programmeerida". 
Tänapäevast arvutit see asi siiski ei meenutanud. Mõõtmed aga olid vägevad, 16 meetrit pikkust, 2.4 meetrit kõrgust, 800 km. kaableid …
Arvutil ei olnud "if" võimekust ja tsükliks tuli programmeeriv paberlint otsipidi kokku kleepida. 3 lihtoperatsiooni sekundis, korrutamine võttis mitu sekundit, jagamine 15 sekundit, logaritm terve minuti. 
Ometi arvutati selle aparaadiga välja aatompommi käimapanekuks vajalikud ülesanded (implosiooni modelleerimine). 
Howard Aiken ehitas valmis Mark järgmised versioonid, Mark II, Mark III.
Mark II jäädvustus arvutiajalukku peamiselt reaalse putukaga, mis tema releede vahelt välja õngitseti, selleks oli üks õnnetu koiliblikas.
Grace Hopper oli tollal Mark II-ga ametis ning tõenäoliselt ehk ei oleks ilma tema populariseerimiseta see termin nii laialdaselt kasutusele tulnud.
Mdx, termin  "bug" oli siiski ka varem raadio- ja telegraafiaparaatide puhul kasutusel. Aga siin on siis selle originaalse putuka foto:




Sõja lõppedes Hopperi teeneid mereväes enam ei vajatud. Grace leidis enesele rakenduse UNIVAC arvutite programeerimisel. Need masinad said üsna populaarseks pärast seda, kui UNIVAC kompuuter suutis ennustada päris hästi presidendivalimiste tulemeid 1952, kus masin ennustas Eisenhoweri suurt võitu. Esialgu ei julgetud sellist ennustust isegi avaldada, see tuli ilmsiks PÄRAST valimisi, et UNIVAC ennustas valimistulemeid täpselt.
Grace Hopperi üks suurimaid leiutisi aga tekkiski sellel ajal. Ei, seda ei teinud von Neumann ega teised matemaatikageeniused. Nendel inimestel ei tulnud tollal pähegi mõtet, et suure kolaka aega võiks raisata millegi nii banaalsele, kui näiteks …assembleri käskude ümberpanemisele bitijadadeks. Inimesed sobisid selleks tööks vägagi hästi. 
Ja kolakate endi juures toimetavatel kodeerijatel, nii imelik, kui ka pole, ei olnud ka erilist vaimustust selliseks pöördeks. Omamoodi uhke tunne on olla nende releede ja vaakumlampide peremees, maag või mustkunstnik, kellest sõltub õige koodi ja õige tulemi väljavõlumine…
Grace käsitles aga asju teistmoodi - tema jaoks oli väga tähtis mõte, et ka tavaline surelik võiks neid arvuteid kuidagi programmeerida.
Ise ta väidab, et 1952 lihtsalt ei mahtunud ühelegi inimesele pähe mõte sellest, et arvuti ise võiks koostada enesele programmi. 
Aga 1952 oli tema esimene, kellel oli olemas töötav kompilaator. 
Selle kompilaatori keele elementidest aga pandigi kokku programmeerimiskeel nimega COBOL, seda juba aastal 1959, kõrvuti FORTRANI ja LISP-ga. 
Aga sellega see lugu veel ei lõppenud. Grace teeneid vajas Ameerika Merevägi ja nii leiame ta töötamas mereväes 1966-1986 (läks erru 80. aastasena) ning välja teenimas koguni kontradmirali tiitli.
Teisi selliseid väljapaistvaid admirale-programmeerijaid arvutiajalugu tänaseni ei tunne.
Muuseas, tema seinal oli selline kelle, mis käis teisipidi, mitte päripäeva.
Äkki ongi väljapaistvus üks saladusi võime ja soov asju panna teistmoodi käima, mitte nii, nagu seda "alati on tehtud".






























oktoober 06, 2014

Eksakompuutritest















PS!
Siin üks tubli hiinlane hoolitseb praegu maailmas esimest kohta omava superkolaka tervise eest. 


Kes veel ei tea igasuguste prefiksite slängi, siis eksa (exa) on see lühend, mis tuleb pärast koledat peta-t.
Õppige see selgeks ja olete kohe natukene nagu ekspert arvutite valdkonnas, koos järgmiste tähelepanuväärsete lühenditega:


Kilo  tähistab 10**3 (ja siin kaks tärni astendamist).
Tuleneb kreeka sõnast khiloi (1000).


Kunagi tähistas  täht K ka 2**10 väärtust 1024, aga praegune standard KEELUSTAB kahe astmete tähenduste kasutamist lühendeis
kilo, mega ... ja soovitab veidraid "bi" keelseid prefikseid kibi (1024), mebi (1024**2), gebi (1024**3), tebi (1024**4), pebi (1024**5), zebi (1024**6) ja yobi (1024**7).

On teada legend "kavalast" targast, kes valitsejalt oma leiutise - malemängu -  tasuks küsis viljaterasid  - vaid üks malelauatäis, nii et 1 ruudule 1 tera, 2-le 2 tera, ...64 ruudule 2**63 tera. 

Tasu suuruseks tuleks 16 zebi viljaterasid miinus üks, teisisõnu 18,446,744,073,709,551,615 tera.
Ablas leidur jäi peast ilma tasu saamata. 

 Olen sündinud sellel ajal, kui see arv tähistas midagi võimatult suurt ja Moore arv oli jõudnud suuruseni 2**3 ehk 8 elementi integraalskeemi kohta (1962, 1959 see asi algas, algul tempoga 2 korda rohkem aasta kohta kuni 1975).
Ja ilmselt lahkun siit kusagil sellel ajal või pisut hiljem, kui Maa võimsaim arvuti arvutab mingites zebiflopsides või zettaflopsides (vt. allpool), eeldatavalt omades sama koguse mälu (mõni zebi- või zettabait).


Aga jätkaks maagiliste prefiksitega:

Mega tähistab miljonit, 10**6 (ning ajaloolilselt veel üsna tihti tähistab 2**20) . Tuleneb kreeka sõnast megas (suur) ja on praegu väga väikese mahu sünonüüm.

Giga on meile miljard ja jänkidele biljon (10**9).
Mõnikord ikka veel ka 2**30.
Tuleneb ladina sõnast gigas - gigant.

Tera on 10**12 ja terabaidised kettad pole enam kellelegi mingi uudis. Tuleneb kreeka sõnast "teras" - koletis.
Miks selline normaalne ketta- või mälumaht "kole" on, jääb veidi arusaamatuks.

 Kaalude ja Mõõtude Üldkonverents (CGPM, Conférence générale des poids et mesures pr. keeles) leidis juba 1975, et vajab suuremaid arve ilmaelu kirjeldamiseks ja leiutas prefiksid peta ja exa. Need tulevad kreeka keelsetest sõnadest "pente", 5 ja hex, 6.
1000**5 ja 1000**6 vastavalt siis.

Peta elik 10**15
Petabaidid on mujal ilmas juba täiesti tavaline salvestusühik. See tavasipelgate jaoks ehk jääbki eksootikaks, aga serveri jaoks võiks see olla  igapäevane elu. 
Petaflopsid on suure arvuti arvutusvõimsuse ühik.
Hiinlaste praegu kõike isasem arvuti (vt. pildil) sai kätte 2014 suvel kusagil 30 petaflopsi, s.t. 3*10**16 arvutust sekundis ja loodab järgmine aasta saada kätte 100 petaflopsi. Paraku on kolaka voolutarve praegu 25MW.

Unelmpiir exa 10**18

Eksaflopsideni üritatakse jõuda konservatiivsete plaanide kohaselt kusagil 2019-2022 ja optilist superarvutit ehitava firma Optalysus kohaselt 2020 optiliste meetodite abiga.
Pisike analüüs viitab aga sellele, et see plaan on suuremalt jaolt väga õhku täis asi.
Nii et tegelikult mingeid väga kaalukaid alternatiive veel suuremate kolakate ehitamisele ei paista olevat, aga praegu üle 3-4 järgu juurde ei ole võimalik saada tekkiva tohutu voolutarbe tõttu.

Aga veel on varuks 2 lühendit. CGPM üldkonverents otsustas 1991 lisada prefiksi zetta (sõnast septo, seitse, s aga oleks tekitanud segadust) ning yotta (sõnast octa, kaheksa, aga et vältida o-d, mis tekitanuks ka segadust).
Zetta on siis 10**21 
Zettaflopsid peaksid olema vajalikud kliimaarvutustel.

Yotta on ilmselgelt  "varuks", sest "mine sa seda Moore't tea",  ja võrdub 10**24.
Keemikutele on see muidugi jälle päris tavaline mõõtühik molekulide ülelugemisel, sest kooli taibudele tuttav Avogadro arv on suurusjärgus 6.022*10**23 (mis on umbes 2**79).

Kuidas siis need superkolakad neid flopse võtsid

Kiloflopsi kohta on teada, et ENIAC töötas 5kHz peal (1946). 

Megaflops võeti 1964
(CDC 6600).

Gigaflopsini läks sealt aega 21 aastat – 1985, btw, minu ülikooli lõpetamise aeg. 
Teraflopsi rajajoon saadi kätte 1996.

Petaflops võeti ära 2008.
Ja praegu on hiinlastel siis 30 petaflopsi võetud ja veel 30 korda rohkem vaja kolakat kasvatada – kiirendada ja ongi valmis tehtud eksakolakas.

Sellega võikski “lühiülevaate” lõpetada teemal “eksaskaala” arvuti, kui
ei jääks painama LITHNE küsimus:

Kuhu aga need flopsid on siis jäänud?

Oleme kõik kuulnud Moore seadusest ja mega ja peta vahekord ütleb selgelt – aastate 1965 ja 2015 arvutusvõimsuste vahe on MILJARD korda.
Kujutlegem algul vaimusilmas ühte inimest midagi ehitamas -  ütleme müüri ja seejärel pangem seda tegema miljard inimest.
Suure Hiina Müüri pikkus olevat 8800 km, kõrgus 7 m jagu, laius 6 m.
Ümardame üles s.t. pikkus kusagil 10**7, kõrgus 10, laius 10, kokku 10**9 kuupmeetrit. Üks inimene paneb üsna kerge vaevaga müüri 1 m3 tellist.
Meie praegused arvutusvõimsused võimaldaksid meile piltlikult kokku ehitada Hiina müüri laadseid programseid imesid. 
Mida aga ei ole, on need imed. 
Meil on vaid natukene paremad arvutid, kui oli 60-ndatel või 80-ndatel. 
Eriti terav kontrastipuudus vaevab 80-ndatel arvuti taga istunud inimesi, sest 4.77 MHz –ga tiksunud IBM PC TÜ Füüsika Instituudis tundus mulle peaaegu täiuse tipuna, sest mitu aastat olin vaevelnud ühe veel hullema kasti käes, mis ometi oli ka arvuti.  

Ka selle arvutiga, kus oli 8 kilobaiti operatiivmälu, sai arvutada Fourier pöördeid ja automatiseerida eksperimenti, tõstes meie labori töö uuele kvalitatiivsele tasemele – enam ei pidanud käsitsi midagi tegema, see väike kast juhtis sammmootoreid ja tegi muid imeasju ....
Aga mitu järku võimekam arvuti tundus peaaegu unelmana.
See, praegune legendaarne IBM PC tegi tollase programmvara abiga peaaegu kõike, mida tänanegi arvuti. Jätame kõrvale uue ja tõeliselt uuendusliku nähtuse nimega Internet, sest tõenäoliselt oleks see sellega ka hakkama saanud.
Graafika oli olemas, kuigi viletsam, kui täna. Word ja temaga samaväärsed programmid olid olemas. Isegi Autocad toimis. Kõvaketas, vist  40 Mb on praegu miniatuur, aga sinna mahtus kõik vajalik ära. Ja nii edasi...

On selge, et selle aja jooksul on toimunud oluline progress. Aga see progress oodatust tunduvalt väiksem, pigem aeglane võimaluste lisandumine.
Mitte üheski teises vallas ei ole progress niivõrd mittelineaarne selle olulisema sisendparameetri - flopside suhtes.
Paradoksaalne, et selles on kõik ühel meelel: Flopsid on väga tähtis parameeter, kuigi meie ajavõite tema suurendamine ei tähista.

Oleks loomulik, kui 1000 töölisega saaks teha kui mitte 1000 korda rohkem, siis vähemasti 100 korda enam asju.
Kahjuks 3 GHz, seda NELJATUUMSE protsessoriga, ja 5Mz vahe ei ole isegi mitte 100-kordne, võimalusi on tunduvalt vähem lisandunud, kui vähemalt tollal, 1987,  oleks eeldanud.

Üks võimalus selle mittelineaarse kasvu või pigem kasvu elimineerimise tendentsi uurimisel oleks arvuti "pudelikaelade" analüüs. Isegi siin on varsti kõik väidetavad pudelikaelad pea kadunud - näiteks aeglane kõvaketas, mida nüüd asendab SSD.
Kuna kõik ülejäänud pudelikaelad arvuti jõudluses on varsti elimineerunud, jäävad järgi 2 siiski veel silmatorkavat asjaolu:

I Programmid, tarkvara. 

Kõige kisendavama ressursinappuse ajal, 60-ndad ja 70-ndate alguses, on sündinud enamik praegu programmeerimist suunavaid juhtideid. Edasi on olnud vaikus.
Moore'i seaduse kuldaegadel (1975-2000) on juurutatud vaid objektorienteeritust, mis on küll mõnda mõtlemisviisi korrastanud, aga mitte mingil viisil revolutsioneerinud. 
Kuldajaks nimetan seda perioodi seetõttu, et ei olnud vaja peale transistori vähendamise üldse mitte midagi teha ja sai tõsta taktsagedust, kõik muu võis jätta samaks, k.a. programmeerimise paradigmad.
Paralleelsuse rakendamist ei ole oluliselt edasi arendatud. Nii nagu need ideed suurte kolakate pealt personaalarvutite valda tulid, nii nad seal suuremalt osalt on jäänud.  
Funktsionaalne programmeerimine koguni lükati kõrvale kui eksootika ja alles nüüd, Moore seaduse lõpu aegadel, läheb see jälle moodi.
AI, tehisintellekti uuringud, on tammunud paigal. 
IBM Watson siiski ütleb, et NÜÜD ehk on aeg. Ja jälle toimub see nihe mitte siis, kui ressursse on piisavalt, vaid siis, kui pea lõppematuna tunduv ressursi juurdevool on peatumas.


II Raha - olemusliik, kõrvaldamatu pudelikael.

Iroonilis-tinglikult tähistab programmeerimismaailmas seda lühend M$. Selle firma "programmeerimiskeele" Power Shell muutujad mdx algavad ka dollari märgiga - kogemata välja kukkunud eneseirooniline äbarleiutis, nagu see keel tervikuna on (olemasoleva skriptimiskeelega Js-ga võrreldes, mis aga kõrvale heideti).
See rahamasin siiski ühelt poolt tingis või vähemalt soodustas Moore seaduse toimimist.
Teiselt poolt, et see tõesti toimiks majanduslikult, oli vajadus oma turgu kasvatada ja hiljem hoida. Kui turg küllastus, oli vaja kasutusele võtta muud kavalused, et tarbija ostaks uue arvuti. 
Miks mitte ühe kavalusena kasutada mõtet, et vanad arvutid vahest ei pea kõike väga kiiresti tegema (kuigi võiksid?).
Kõik tuntud muud nipid on ka käiku läinud - näiteks moe appitoomine. Lihtsalt sellel hooajal on moes sellised suured kandilised ikoonid. Ja ajaga kaasaskäivad tibid ostavad enesele uue moodsa roosa õunaarvuti või ifööni.
Kuigi Apple kindlasti turundab ka hästi, ei ole teatud piirini seal mindud ja me näeme välja joonistuvat täiesti selget vahet M$ vahel ja õunaarvutite vahel. Minu Mac ei ole mind alt vedanud, hänginud kiiretel aegadel ja raisanud tühjalt minu aega.

KUI programmeerimise pudelikaelu saaks leevendada ja Moore seaduse lõppemine seda ilmselt teeb, siis kapitalismi olemusliku pudelikaela - ahnuse - leevendamiseks on vaja Linuxi laadse idealismi taassündi ja mitu korda enama võimendusega, kui ta seda kunagi oli.
See tähendab mingit uut tüüpi sotsiaalset mõtlemist ja siin ma täna peatun, sest ma olen eemaldumas poliitikast vähemalt praeguseks hetkeks.

Ükskord saab see õudus läbi:

Aga läheme nüüd tagasi rõõmsamate momentide juurde, s.t. selle juurde, et pärast Moore seaduse lõppemist lõpuks ometi saab keskenduda programsetele pudelikaeltele.
Nimelt ei pääse eksa ja zettaarvutite puhul enam üle ega ümber voolutarbimisest.
Ka praegu oleks eksaarvuti ehitamine täiesti teostatav, aga see võtaks minimaalselt 500 MW võimsust. Praegune suurim kolakas Hiinas tarbib "vaid" 24 MW.  
Oletame optimistlikult, et voolutarvet saaks alandada 5-10 korda ja eksaarvuti tehakse valmis, mis "vaid" 50 MW voolu võtaks. Siis 20 eksaflopine jurakas võtaks voolu ikkagi 1 GW ja siin kusagil on isegi suurriikidel piir ees, sest ... Eesti kõige suurem voolutarve ajalooliselt on senini 1.6 GW!!

Inimkonnal peavad olema ikkagi väga põhjendatud vajadus zettaarvutit teha, kui see kulutab sama palju elektrienergiat, kui võiks olla suurriigi energiatarbimine.

Enne seda, kui see vajadus üldse tekiks, tuleks programmeerijatel õppida niivõrd paralleelsete kastide korralik programmeerimine selgeks.
Selgub nimelt, et enamasti seisab kolakate kogu praegunegi võimsus jõude, sest programmid lihtsalt ei ole piisavalt paralleelsed. Sellel lihtsalt põhjusel ei käi keegi enne välja raha sellise monstrumi rajamiseks, kui ei ole põhjani läbi uuritud võimalused nii voolutarbe kui ka tarbitava arvutusvõimsuse alandamiseks ja olemasoleva maksimaalseks kasutamiseks.
Järelikult on järgmiste astmete võtmisel täiesti kriitilise tähtsusega kaks olulist asja - voolutarve ja programmeerimise paradigmad. Mõlema peavad muutuma, muidu zettaprefiksini ei ole võimalik jõuda.
Lihtsurelikele võivad siin terenduda üsna tänuväärsed asjad. Lõpuks saavad OS-d korda, sest suure kolaka molutamine on liiga kallis lõbu ja tõenäoliselt saab kõrgetelt kolakatelt allaporditud OS-d korralikult käima ka väikeste kastide peal. Just nii on ajalooliselt toimitud 80-ndatet: UNIX oli suurte süsteemide OS ja sellel põhinevad personaalarvutite OS-d on hästi välja kukkunud (MAC, LINUX-id), põlve otsas arendatu osutus ja jäi ja jääb käkiks (M$).
Aga need väikesed kastid enam ei varsti olegi nii väikesed, vaid nende kastide kogu võimsus sõltub vaid selle kasutaja võimekusest oma arvutitele lisagraafikaprotsessoreid (mis moodsamas mõttes on lihtsalt kaasprotsessorid) osta.
Kui varematel aegadel näiteks 100 või 1000 paralleelse protsessi kasutamine võis jääda vaid unistuseks, võib seda GPU-d kasutades (Graphic Processing Unit) kindlasti teha.
Tavalised protsessorid võivad omada vaid 4, maksimaalselt 8 tuuma,
mis küll on väga sõltumatud protsessorid ühes kiibis. Seevastu graafikaprotsessoritel on juba praegu kasutada sadu paralleelseid protsessoreid korraga. Ilmselt see tendents veel süveneb ja kui kellelgi on vaja rohkem rehkendust, tuleb osta lihtsalt "graafika"mooduleid, mis pigem on kaasprotsessorid. Juba praegu saab nendega arvutusrohketes rakendustest 10 korda kiirust juurde.
 ….
Kokkuvõte:
Lõputu õudus nimega Moore seadus peabki ära lõppema. 
Äkki paneb see meid mõtlema, enne kui hakkame midagi arvutama ja äkki paneb see meid ka korralikumalt arvutama, nii et need arvutused ei raiskaks meie endi, aga ka teiste aega.
Lohutuseks - Moore ajastu lõpuni on jäänud veel vähemalt 8 aastat.
Michio Kaku ja teised pakuvad selle ajastu lõpuaastaks 2022.




oktoober 02, 2014

Almaga ja Almata

Rõõm on teatada, et alates oktoobrist ei pea enam pead vaevama kasutajatoe osutamisega Almas ja saab täie jõuga pühendada näiteks selles blogis mängunduse arendamisele. Nojah.
Meie riigis on olukord jõudnud sinnamaale, kus tulemuslik töö ja minu arust nagu oluline kriteerium - sinu tegevusega ollakse rahul - ei ole mingi argument. Ka kogemus on pigem negatiivne argument.
Eks sellest võiks kirjutada pikalt ja laialt, aga tõtt öelda ei ole tuju - see tähendaks jällegi näiteks oma aja ja energia pühendamist teemadele, kus ma ei tunne ennast tugevalt või mugavalt. Ma ei naudi enam pigem poliitilisi teemasid, kuid pean (ja peame) endale aru andma, et me ei pääse neist, sest üks pool on saanud oma kätte liiga suured trumbid. Ja nagu avantüristlikud kaardimängijad ikka, lammutatatakse edasi, kuigi mõned natukene kaugelenägelikumad inimesed juba ütlevad - meie riik jookseb inimestest tühjaks.
Ülikool tühjeneb üliõpilastest, aga ka õppejõududest, rääkimata siis sealt kabjahoopidega minema löödud tugistruktuurist. 1994 lõppes beebibuumi aeg ja noori enam ei jagu, sest nüüd hakkab tööikka jõudma see vaegsünni põlvkond... Asi aga teravneb veelgi, sest tänapäeva noorele on maailma väga lahti ja ma ei näe tõesti mingit mõtet ka oma lastele üritada
selgeks teha, et parim koht kõrghariduse omandamiseks võiks alla meie Alma. Seda peab see struktuur tõestama igapäevase tegevusega, mitte särasilmse jutumulli puhumisega. Kasvõi sellega, kuidas siin suhtutakse inimestesse.
Aga näiteks ka selline banaalne näide valdkonnast JavaScript - ma tahaksin sirvida mõnda selles vallas kirjutatud olulist raamatut. Ehk ei peaks sellekst soetama personaalset raamatukogu, äkki piisaks külastusest Ülikooli raamatukokku?. Programmeerimisalaseid raamatuid - võite mu sõnu kontrollida - aga ei ole. ÜLE TERVE EESTI EI OLE! Kuidas saab olla tulemuslikku Ülikooli ilma korras raamatukoguta, kus oleks saadaval mingigi minimaalne kogus õppekirjandust antud valdkonna kohta??
Aga jumal selle almaga.
Sageli inimesed siiski teavad, et and mingil põhjusel, minu puhul enese arendamine siiski peamisena,
peaksid  NAD  tegema muudatusi. AGA nad  ei tee ja siis teevad head inimesed selle otsuse sinu eest ära.