detsember 31, 2016

Schuberti sõjamarss II nii nagu peab



Kirjutasin hiljuti oma õe klaverisaavutustest (millest ta täna näiteks ei taha midagi mäletada)....
ja sellestki, et seda Shuberti marssi mängisid nad oma pinginaabriga tükk maad kiiremini, kui vaja oli.
Kuidas seda marssi (mis POLE Schuberti marss I, mis on vahest kuulsaim Schuberti hitt praegu)
peaks mängitama?
Vahest Rudolf ja Peter Serkin, isa ja poeg teevad seda siin parimini.

Mõlemad on pianistid,
Rudolf Serkin 1991-st alates küll manalamaees, aga kes on  kindlasti pianist, kelleta ei ole võimalik rääkida Beethooveni sonaatidest.
Peter Serkin hoolimata isa saatusest sai ka pianistiks.
Kuigi kuulus isa siiski mõjus talle - hoolimata kõrgetest auhindadest katkestas ta 1968 üleüldse muusikategemise.
Siis aga ühel päeval 1971 kuulis ta naabri aknast mängitavat Bachi - ja pöördust tagasi muusikasse.
See salvestis on tehtud 1988.

Kõigile kena vana aasta lõppu ja algavale kuke aastele, millele küll Mang enne algust jaanuariski suuri segadusi ennustab, soovin ma vaid seda, et sõjakus jääkski marssimise, kiremise  ja kaagutamise tasemele.
Mina oleksin selle saavutise üle ülimalt õnnelik.

Minagi loodan võlgu heastada ja marssimise teema juurde tagasi pöörduda. Kellel meeles, kunagi oli mul kavatsus koostada marsside antoloogia.
See Schuberti lugu, mille ta kirjutas tegelikult ühe rikka krahvi tütardele, kellele oli klaveriõpetajaks, pidanuks selles antoloogias kindlasti sees olema...

detsember 30, 2016

Java kirbe kohvi













2016 aasta teise poole ühe osa pean maha kandma - tuleb tunnistada oma eepilist põrumist.
Kes seda viginat on jälginud, kirjeldasin kriisieelset olukorda ühes postituses ja kõik taandub ajale ja rahale.
Ette sai võetud rohkem, kui lubab aeg, raha ja ka 3-ndad faktorid - lihtne vanus. Kui ülikooli kursuste valikus on ette nähtud mingid eeldusained, siis minu puhul ei ole valikut - neid peab perfektselt teadma, sest edasi aega jälle ei ole ja ei tule. Üks eeldusaine, mis nüüd targemana oleks pidanud olema FP asemel, oleks olnud seesama Java kohvi lürpimine.
Kirsina tordil sain teada, et mul on aega siiski võtta ühest puhkuse reservist, aga liiga hilja - piisava fanatismi olemasolul ehk isegi mitte - ühesõnaga, AA jääb ootama teatud eelduste täidetust järgmise aastani ja siis enam taganeda ei ole kuhugi - selja taga on Emajõgi!
Kasud siiski olid sees, sain paar praksi kuidagi pusitud mulle tundmatus keskkonnas, FP-s esimese poole kuidagi kuidagi maha (Haskell, millega saan kohati eputada oma kogenumate kolleegide ees, eriti vahva ülletusena tuli koolivenna ütlus - esimest korda kuulen seda nimetust, 30 aastase progeja staazhiga tegelane).
AA on üldse väga tähtis kursus ja see tuleks igal progejal kasvõi põlve otsas ja iseõppijana ära teha.
Ja sisemine veendumus ütleb, et kõik need raamistike ja keelte paabelid selle kõrval ei ole nii tähtsad.
Tsiteerin A.P-d loengust: kui te ei oska puudega midagi teha, siis ei oska te üldse mitte kui midagi.
Ja mingiAVL puuni ma isegi oma InteliJ IDEA prakis peaaegu jõudsin. Siis sai jaks otsa /laiskus võitu / põhitöö võttis oma ... kaugõppija leiab alati põhjuse ...
Võtan praegu tulnud aega siis selle lünga täitmiseks ja pusin Javat edasi. Äkki veab ja istutatakse tööl ka mingid jar failid kusagilt selga, siis tean karta.
Mured tunduvad üldiselt Javaga olema samad, mis iga sarnase teise asjaga (C siis näitena). Algul on murdu asju, mis seletavad, mis asi on protsessor, muutuja ja tsükkel. Java puhul on see täiesti krooniline ja sobib hästi esmakursuslasele, hiljem juba mitte nii hästi. Ilmatu aeg kulub selle spämmi keskelt filtreerimisele. Kõrgema taseme raamatud jälle ei pea oluliseks mitmeid asju isegi mitte mainida, nii võib jääda iseõppimise tulem lünklikuks...
Seejärel uputatakse õppur üle IDE loendumatute võimalustega, milledest ehk IntelliJ IDEA ei tundunud olevat näiteks mitte paha variant. Võrrelduna näiteks Eclipsega, mis mulle kuidagi ei ole sobinud. Aga maitse üle ma siin ei vaidle. Eclipse võib mõnele väga meeldida ja väga OK olla.
Lõpuks on mingi lootus Java EE -ga tutvust teha, aga see sõltub reaalsete projektide olemasolust, niisama ei ole ka mõtet harjutleda. JavaScriptiga alustamisest saadik kusagil 3 aastat tagasi olen harjutusväljakuna kaasa tassinud mingite mängude progemise algeid. C -s olen saanud asja juba Sudoku mänguni, ühitades hobi õppimisega. Javascriptis skriptisin ära trips traps trulli ja mida juba oled teinud, siis ei pea jalgratast leiutama. Jutud koodi ühesest portimisest tõenäoliselt kõik põruvad.
Sudoku teeb intrigeerivaks DLX algoritm (Dancing Links, millega saab ka muud huvitavat teha).
Üldse kõik AA (Algoritmid ja andmestruktuurid) tuntud asjad peaksid sobima harjutusülesannetena (tavaline zippimine ntx). Aga nagu meie Igor Mang prohvetlikult ennustas, Kuke aasta häda, mille käes juba nüüd vaevlen, on hiidprojektide ettevõtmine ja nende pidulik põrumine. Ainuke lootus ehk on see, et olen õppimisvõimeline ja realistlikum oma plaanide tegemisel.







detsember 19, 2016

Tartu linnatäis lugejaid











Olen natuke nagu uhke, sest täna sai mingil imelikul viisil täis 100000 külastust minu blogis. Noh, selleks kulus ka omajagu aega - 10 aastat ja rohkemgi veel. Kui juba kiitlemiseks läks: olen siis nagu ühe tärni blogija või midagi sellist ...
Tegelikult on mul hea meel, et mul on olemas lugejad ja võib-olla on minu mõtted kellelgi teisel tekitanud mingeid omi mõtteid ja nii on tekkinud mingi kasulike mõtete ahel. On muidugi võimalik, et on võinud ka vastupidi minna: on tekkinud lausa kahjulike mõtete ahel.
Ja veel hullem on arusaamine, et tegelikult salamisi olen salaedvistaja inimene. Pealt ei paista hästi välja, aga näe, blogi peab ja uhkeldab ka sellega ...
See on ju veel hullem edevuse laat, kui kohe aus ja avalik edvistamine.
Järgmise ümmarguse rajajooneni ma õnneks ei jõua, selleks kuluks ära 100 aastat. Võimalik, et kui hakata siia igasuguseid veidraid videosid pasteerima, võib isegi vähemaga, näiteks eluajaga läbi saada.
Hoolimata sellest, et ma ei ole matemaatik, muusik ega programeerija, kirjutan ma peaasjalikult neist teemadest. Millegipärast aga on muusika midagi, millest ma pean kirjutama.
Miks, seda ma ei tea.
Ma ei tea, miks Goldberg, kes ühe krahvi eeskojas pidi Bachi variatsioone omaenda väljamõeldud teemal mängima, et krahvi unetust ravida, mulle nii korda läks.
Või Chopin, kes paduvihma ajel oma prelüüdi lõi. Või Beethooven, kes oma sonaati nr. 31 paigutas lorilaulu kassidest, kes sai pojad.
Mingi aeg tagasi olin ka maailmaparandaja. Usun natukene ka nüüd sellisesse maailma parandamise võimalusse, kuigi mitte enam nii palju. Arvasin tõtt öelda 10 aastat tagasi, et need koledadad valed saavad ükskord otsa, juba nüüd. Ei, palju enam läheb aega. Võib olla 15 aasta pärast on midagi jälle natukene teistmoodi - nagu nüüdki võrreldes aastaga 2005.  Kirjutasin ühele kirjatuttavale K-le tornidest ja tema arvas, et keegi ei usu tegelikult praegu nendesse asjadesse. 2005 ja 2003 nii ei veel ei olnud, väga paljudele tundus see kõik uskumatuna.
Sellised nihked aga võivad ühe inimelu jaoks olla liiga aeglased.
Inimene üksi on siiski liiga nõrk, isegi koos tegutsedes ollakse nõrgad. Aga koos Kõiksuse, Universumiga tegutsedes nii enam ei ole.
See võib muidugi viia mõttele - hm, aga miks need kõrgemad jõud või jõud ei aita, ei taluta meid siit olukorrast välja.
Igal asjal on hind. Praegune, ehk isegi masendust tekitava olukord on see hind, mida inimesel tuleb maksta oma valikuvabaduse eest.
Aga valida saab ja enamasti on isegi teada, kuidas tegelikult tuleks valida. ...
Ja siin ma jõuan tegelikult teema juurde, mis mind enim on hämmastanud ja millega ka selle ümmarguse 100000-lise jutu lõpetaks. Nimelt ümmargune on see arv vaid meile, inimolendeile, kellel on 10 sõrme ja kes seetõttu kasutavad 10-nd süsteemi.
Aga mingid jõud selles maailmas on meie saladusliku Päikesesüsteemis nii sättinud, et Päike, Kuu ja Maa kolmekesi on täiesti erandlikes suhetes, sellistes arvulistes suhetes, mis jällegi sageli vaid kümnendüsteemis midagi tähendavad. Võtke või jätke, aga siin on mingi teoreemi tõestus, kõrgema jõu või jõudude tegutsemise tõestus. Ei, seda pole mina välja mõelnud - mitmed raamatud, näiteks Kes ehitas Kuu, on sellest rääkinud. Aga asjad on ilma raamatutetagi selged. Võtsin minagi arvuti ja kalkuleerisin masside suhteid. et mingid 3 juhuslikku arvu, Maa, Päikese ja Kuu mass. Aga ei! Nende suhted on Maa / Kuu : 81.3 (81 ja .3 selleks, et tuleks Päike - Kuu suhe õige ja ka selleks, et 3-e alla kriipsutada, 81 jälle on 3 astmes 4...), Maa - Päike 333000 (kümnendsüsteemi maagia - vaid inimestele on see "ümmargune", aga need 3 3 jälle - kõik masside mäng on kodeeritud 3-desse ja 10- astmetesse), ja Päike - Kuu (300 kuubis). See ei ole isegi ligilähedane sellele haledale paroodiale, mida mingi ülbitsev astrofüüsik tegi - leidis oma jalgrattal mingid arvulised suhted ja voila - ongi kõik ümber "lükatud".  Ja see on vaid üks suurus, võtame teise, diameetrid. Jälle arvude täpne mäng. 3.66 - Maa - Kuu diameetrid, 0.273 pöördsuhe,  366 päevaga teeb Maa tiiru ümber Päikese, 27.3 päevaga Kuu ümber Maa,  Kuu katab täpselt Päikese ketta - seda on isegi need ülbitsevad astrofüüsikud läbi hammaste tunnistanud, et näe, vahel ikka trehvab küll... ja nii edasi ...seda kõike kriipsutab alla aga püramiid Egiptsuses, mis suvatseb paikneda valguse kiirusega samal laiuskraadil. ...
Võite võtta ülejäänud objektid (ehk mõni neist joonistub isegi kuidagi eriliselt jälle välja, ei ole kindel, aga esimesel pilgul küll mitte). Nende arvulised suhted on tõepoolest juhuslikud, ei anna võrreldagi keeruliste matemaatiliste täpsussuhetega Maa, Kuu, Päikese süsteemis.
Ja kuigi võib-olla on need asjad mulle toonud kõige vähem lugejaid, siis mind on nad kõige enam hämmastanud. Eriti see, et kui Maa ja Kuu panna üksteise peale, ja püramiidi oma alusega oleks maa ekvaatoriaaltasapinnal, siis püramiidi tipp oleks Kuu keskpunktis ja kuidas sellest järeldub, et juba Maa ja Kuu suhtesse on kodeeritud pi (ja e ja fii).
...
Sellest kõigest aga võite kahjuks järeldada vaid seda, et ka edaspidi hakkab blogi sisaldama üsna erinevaid asju, just nii, kuidas kunagi välja kukub.
Midagi ei ole teha, iseennast ma ümber teha ei oska - kuigi olen vähemalt proovinud. (Hoolimata eneseabitööstuse õitsvast järjest muuseas ei paista see olevat kellelgi eriti hästi õnnestunud!)

detsember 18, 2016

Lihtsad lood



Õde käis mul klaverikoolis. Mina ei käinud, poisil ei sobinud selline asi hästi.
Aga ma mängisin õe kõrvalt ka natukene klaverit ja ühel ilusal päeval isegi käisin muusikaõpetaja juures, et kas mina ka ei võiks klaverit õppida. Siis ma olin aga juba 5. klassis, liiga vana ka.
Sellel aastal aga meie muusikaõpetaja ei võtnud poisse omale õpilaseks. Ilmselt selle pärast, et need tikkusid pujäänitsema ja ei olnud nii tublid ka.
Klassiõde võeti, tema olid tüdruk ja hästi tubli ja vahepeal lasti tal meile laulutunnis mõnda asja ette mängida.
Õde aga ei olnud üldse õnnelik oma klaveriõppega, minu arust ta jõudis küll väga kaugele, ta mängis oma pinginaabriga väga vägevalt (oi, kuidas ma kadestasin teda) Schuberti kuulsat sõjamarssi.
Alles nüüd ma tean, et seda marssi tuleks kõvasti aeglasemalt mängida. 
Kui kool lõppes, pole ma oma õde kordagi klaveri juures enam näinud.
Selline tubli õpilase klaveriõppimsie tulemus siis.

Mina aga tahtsin ja tahan aeg ajalt muudkui klimberdada.
Võimalik, et saatuse sõrm hoidis mind sellise õppe eest.
Midagi on selles õppes, mitte tingimatult inimestes, sügavalt valesti, olen ma nüüd, kõvasti 50++
saanuna, veendunud.
Sest kimberdama ei ole mind mitte kunagi keegi õpetanud.
Aga ma sain õe klaveriõppest külge omale sügava austuse noodi ees, nii sügava, et muusikat mõistma ma ei õppinudki. Mulle tundus ühel hetkel lausa pühaduseteotusena mõistmine, et sama harmooniareeglistik kehtib ka Beethoveni jaoks, tema kuupaistesonaadi jaoks, mis veel hämmastavam, Mozarti puhul.
Kuidas on see võimalik?
Samad banaalsed C, G ja F duur ja midagi nii jumalikku?
Ja kuulmise järgmi mängimist ma pidasin palju madalamaks kui täpselt nooti mööda käia.
Väga talendikaid inimesi, nagu Valentina Lisitsa näiteks, selline drill ehk ei riku.
Ülejäänu saavad sellest kaasa teadmise, et muusika õppimine on midagi väga vastikut ja mõnikord koguni nii vastikut, et never again.
Siis ehk mul isegi vedas, et sellel aastal poisse ei võetud. Ehk ei oleks ma enam iialgi oma kätte klaveri külge pannud.
Praegu kuulan kunagi neid õe kõrvalt klimberdatud mõnda pala üle ja olen Valentina Lisitsale väga tänulik, et ta neid lugusid mängib, lastele on neid väga vaja aru saamiseks, et iga laul tuleb igaühel ise üles otsida.  Mite järgi mängimiseks või imiteerimiseks, sest see on õnneks lihtsalt võimatu!
Tegelikult mõistan ma alles nüüd, milleni heal klaverimängijal tuleks jõuda. Kõigepealt peab ta mängima õppima väga tehnilisi palu - Valentina oli mõned aastad tagasi just selline, uskumatult hea tehnikaga pianist, aga mulle tundus see kuidagi isetu, isegi liiga puhas, tehniline.
Praegu aga on ta jõudnud väga lihtsate asjade juurde, tema Tshcaikovski "Aastaajad on muuseas ka väga head... (selle kõige kõrval, otsige linke ise, on Lisitsa üks kõige virtuoossemaid pianiste maakeral!).

Lõpuks on kõik jälle väga lihtne. Oma laul, oma lugu ja selle otsimine maa peal.




detsember 12, 2016

Kõrbes nimega C















Olen oma rännakutega jõudnud vist kõrbefaasi.
(kõrbenud faasi).
Sellest ja teistest faasidest kirjutatase hästi siin:
https://www.vikingcodeschool.com/posts/why-learning-to-code-is-so-damn-hard
Kuigi pisut ehk liialt kirjanduslik, tundub kodeerijate elu sarnane olevat piibellikule rännuteele - ei ole ju miskit uut Päikese all.
Kõigepealt Egiptuse meepotid.
Siis aga äkki tuleb ähmane äratundmine, et peab minema läbi mere, kuhugi kaugele ja proovida leida üles omaenese "Tõotatud maa". Kirjutama oma koodi, aitab teiste läbus sorimisest...
Rännakul kõrbes võib ette tulla igasugu asju, miraazhe, viirastusi, et nüüd on see tõotatu käes ja ometi on veel ees pikk tee.
Ja siis lõpuks, kui siiski, viirastub või saabub kusagilt toru lõpust valgus.
See kordub vähemal või suuremal määral mõne uue programmeerimiskeelega jälle, kuigi ehk veidi vähemal määral.
Meenub analoogia keeleõppega, kus väidetavasti iga uut keelt pidavat saama kiiremini õppida. Mina pole sellist asja väga märganud. Aga ega ma neid keeli ka väga palju ei oska - vene, saksa, inglise, prantsuse ja kõiki piisavalt halvasti, s.t. saab aru ja rääkida oskad 2 kõige rohkemini drillitut - jah, venet ja inglise oma ka natuke.
Nagu keeleõppelgi ei ole tegelikult õpikutest väga palju kasu, Ainuke viis õppida on kümmelda ja ise kirjutada ümber, jalgratast leiutades.
Vana "hea" C ei hiilga just kodeerijasõbralikkusega. Mühatab sulle korra "segmentation fault" teate ja sellega piirdubki. Kusagil on pang, aga otsi see ise üles.
Kõige sagedamini panen ma endiselt pange ikkagi mäluhaldusega.
Nüüd, natukenegi Javast kuulnuna tundub mulle viimane kaugelt vaadates lausa oaasina, puhkusena.
C-s tuleb kogu aeg eraldada kusagil mälu. Sa pead vaevlema sellega, et sama mälu jälle operatsioonisüsteemile tagasi anda, et see ei jääks programmile kasutult kätte. Sellist asja kutsutakse mälulekkeks ja tulemiks on programmi aeglane väljasuremine. Ühel hetkel vaba mälu enam ei ole, aga see hetk võib saabuda väga paljude töötundide järel. Programm paneb 2-l tööpäeval pange ja 1 päeval käib kui õlitatult....
Tore, oleme hoolikad ja vabastame mälu. Aga on veel toredam asi meie toredas C-s selle mäluga - ära vabasta üleliia. Kui juba vabastatud mälupesa minna veelkord vabastama, võib tulla ette 2 halba asja:
vähem halb on see, kui programm paneb kohe pange. See juhtub nimelt siis, kui programm pole jõudnud vabastatud mälupesa UUESTI kasutusele võtta. Siis C mäluvabastusfunktsioon "free" sülitab sulle sõbraliku ja lihtsa segmentation fault-i. Ära roni juba vaba pesa vabastama.
Kui aga see pesa ON kasutusse võetud uuesti, siis vabastad sa (tavaliselt mingi teegifunktsiooni) kasutuses oleva mälu, see võetakse mingi kolmanda asja poolt kasutusele, kirjutatakse uuesti üle ja nüüd jookseb programm kokku täiesti suvalisel ajal suvalises kohas. Tavaliselt siiski suhteliselt kiiresti, vahel koguni kogu aeg ühes ja samas kohas. Kohas, kus EI OLE VIGA.
Hõõrud silmi ja veendud veel ja veel: seal ei ole viga. Seda muuseas kahjuks juhtub ka piisavalt tihti, et seal ikkagi on viga, nii et tasub ka see koht ikka ja jälle põhjalikult üle uurida. Näide:
võrdusmärk on puudu või üle ("=" "==" asemel või vastupidi). 
Lõpuks jõuab ähmaselt kohale, et võiks ja peaks hakkama tegelema põhjalikumalt C keele putukatõrje vahendite, debuggeritega... ja nii edasi ja edasi ...
Mõnikord on aga jälle nii, et sama objekti mõnda osa ei olegi vaja vabastada, sest see mälueraldus on koodi sisse "raiutud" - see mälu eraldatakse programmile kompileerimise ajal. Mõnikord on jälle nii, et sama alamkoodi juppi kasutavad erinevad programmi osised - üks osis annab funktsioonile tööks üle objekti, kus see mälusosa on eraldatud dünaamiliselt, teine annab selleks üle konstandi, staatiliselt sisse raiutud objekti ja sellel pole võimalik vahet teha. Kolmas võimalus on selline, et see mälu vabastatakse automaatselt - funktsioon on lõpetanud tegevuse ja tema enda muutujaid hoitakse kohas, mida programmeerijad kutsuvad "pinuks". pinu saab vabaks ja ühekorraga toimetab teine funktsioon juba vabastatud mäluga.
Selline jahmerdamine toimub selle mäluga ja minu arvates on see üks suur tüütus ja ajaraisk. Aeg, mis võiks kuluda asjalikemate asjade peale, kulub ära mehhaanilise nikerdamise peale.
Teine sarnane hea asi, mis kõrvalt vaadates Javas on ja C-s ei ole, on try. Kui midagi läheb pange, siis Java SUHTELISELT automaatselt, eeldusel, et on kirjutatud midagi exception koha peale,  ronib programm veasituatsioonist välja, tehes ainuvõimaliku käigu - teatab sellest ja enamasti lõpetab. Kõik see asi aga on C kodeerija enda mure. Kuna absoluutselt iga asi, mida programm vajab operatsionoisüsteemilt, võib minna pange, tuleb iga operatsioonisüsteemi kallal käimise järel kontrollida, läks õnneks või ei läinud? See tähendab, et pooled koodiread on lihtsalt iff-id.
Tõenäoliselt on kõik ok selle mälueraldusega. Aga äkki ei ole, äkki kõik mälu sai mälulekke tõttu otsa. Sellest tuleks kusagil logis teada anda ja siis lõpetada, sest muidu võtab veaparandus otsatult kaua aega...
Nii on C programmid täis pikitud iff-sid.
Nüüd tulevad mängu uued tegelased - Security coding standardi meistrid. C -s ja mujalgi on nimelt selline häda: KÕIGE väiksem arv ja kõige suurem täisarv (näiteks nelja baidi korral) ei ole üksteise vastandid.
INT_MIN on -2147483648 ja INT_MAX is 2147483647.
Oletame nüüd, et sinu muutuja saab väärtuse INT_MIN. Teed selle muutujaga x = -x.
See muutuja EI OLE -x, ta on midagi, mida C keel ei defineeri. Äkki tuleb mingi viga. Äkki ei tule, x-i asemel on sel juhul mingi kahtlane väärtus, mis, seda keegi ei tea.
Et seda ei juhtuks, tuleks ohutu programmeerimise huvides alati enne x = -x i kontrollida, äkki x on vahepeal saanud väärtuse INT_MIN, nii igaks juhuks ...
Et selline kole asi on võimalik igal pool, kus tuleb graafikaga õiendada, sest seal on sageli vajalikud arvutused, siis võib ette kujutada, kui palju peaks "ohutu" koodi huvides selliseid imelikke kontrolle igale poole kirjutama. Kodeerija peab kinni lappima kasutatava programmeerimiskeele puudusi...
...
Kui viitsisite siiani lugeda, siis minge ja käige minu viidatud lingi ka ära. Minu arvates on seal päris hästi ära kirjeldatud, mis saabub kodeerijale pärast mesinädalaid. Kõrberännaku kestus võib olla erinev. Ealised iseärasused ei ole näiteks üldse soodustav faktor kõrbest väljumisel.Ja nii edasi ja edasi.
Ja mulle tundub, et ma ei ole siit veel saanud välja. Liiga palju aega virvendab minu ekraanil ja unenägudes kole "segmentation fault..."