oktoober 17, 2015

Arvutitest, muusikast, kokandusest ja keeleõppest














Olen oma olemuselt üsna teoreetiline inimene ja seda olemust on raske muuta. Mulle meeldivad paksud ja põhjalikud raamatud, isegi kui ma ei ole enamasti neid suutnud lõpuni läbi lugeda.
Mulle meeldib olla informeeritud ja mulle ei meeldi tegelda asjadega, kus on hea ports küsimusi, millest ma aru ei saa. Siis oleks hea kaevata, küsimus küsimuse järel, näiteks annab Internet selleks võimalusi, seni, kuni tundmatuid küsimusi enam ei ole jäänud.

Matemaatikas selline meetod (kohati) töötab ja sealgi mitte väga hästi - hobimatemaatikas hästi, professionaalse matemaatiku puhul enam mitte - paljud teoreemid ja tulemid tuleb võtta omaks usu põhiselt, olgu näiteks siin nelja värvi probleem või mõni muu sarnane teema.
Usk on matemaatikas oluline.
Aga see konkreetne teoreem või probleem, millega tegeled, tuleb pulkadeni lahti võtta.

Arvutite programmeerimine siin omab mingit ühist osa matemaatikaga.
Aga vastu tahtmist olen sunnitud tunnistama, et veel rohkem omab see kummaline käsitöö sarnasust kokandusega.
Kõige loetavamad ja kasulikumad arvutiraamatud on head retseptikogumikud, mitte loogiliselt ülesehitatud tellised.

Ja programmeerimine on ka lingvistika, selleni tõi mind põgus tutvus Perl-iga, mille loojale Larry Wallile võlgneme tänu selle tõsiasja allakriipsutamise eest.
See töö on tegelikult pidev tõlkimine. 2 programmeerijat peavad suhtlema omavahel võõras keeles, mis ei ole nende emakeel ja karmiks kriitikuks on nende vahel arvuti, kes mõne lause kuulutab vääraks, mõne õigeks. 
Selle (eelkõige, nagu lõpuks selgub) omavahelise ja arvutiga suhtlemise eesmärk on panna arvutit väljendama ennast inimese moodi mingis kolmandas keeles, mida peab mõistma selle programmi kasutaja. Viimane - kasutaja rahulolu - võiks olla isegi kõige tähtsam, kuid sinnani jõudmiseks on ees väga pikk tee.
Mõnikord kuulutatakse laused vääraks või õigeks väga pika aja möödudes, enamasti aga ei ole võimalik päris vigase keelega arvutile ligi pääseda. Selles mõttes on see halastamatu keeleõpe. Omamoodi hea ka, peab hakkama vähemalt grammatiliselt õieti rääkima, kuigi võib selle juures väljutada igasuguseid rumalusi.

Ja nii jõuame sarnasuseni muusika mängimisega, kus instrument ei talu vigast mängu silma otsaski. Mõnikord ehk on mingit sarnasust loomisega, aga enamasti mängimisega, improviseeridas ad nauseam tuntud teemadel ikka ja jälle.
Improviseerimiseks saab seda algaja puhul lugeda sama palju, kui sai lugeda improviseerimiseks koerapolka mängimist minu kooliajal vahetundidel kusagil koridorinurka unustatud klaveritel. See oli NL aja omapära - iga kooli mõnes nurgas vedeles mõni vana klaver. Seal tavaliselt mängit vahetunniti koerapolkat, mõnikord kahel käel. See oli juba tegija, kes niigi kaugele oli jõudnud.
Ja nii jõuame ka sarnasuseni muusika ja kokkamisega - see on harjutamine, vahel ad nauseam.
Tõsi, ärge nüüd jõudke Paganinini, kes olevat 14 tundi päevas harjutanud, või Richterini, kelle kohta tänase päevani häbematult valetatakse, kuidas ta oli kogu aeg etüüde harjutanud.
Ma arvan, et need geeniused harjutasid ja lõid ühteaegu. Richter ei ole oma elus MITTE ÜHTEGI ETÜÜDI mänginud (Samad sõna Argerichi kohta, Paganinilt ei ole saadud küsida).
Richter mängis kohe algusest peale tõsiseid klaveripalu.
Aga et nad mängisid, iga päev mängisid, tunde, see on küll õige.

Koka kohta ei olegi võimalik öelda, et ta on kokk, kui ta ei õienda piisavalt kaua köögis.

Ühtegi keelt ei saa selgeks käsiraamatuid lugedes. Ka arvutikeelt. Ühegi keele selgekssaamise tunnuseks ei ole käsiraamatute teadmine, vaid rääkimise ja mõtlemise oskus selles keeles.
Pigem enamik autojuhte liikluseeskirju väga hästi ei tunnegi. Ometi mõned oskavad sõita, mõned ei oska.
Kõige kiiremini aga õpib ujuma vette viskamise meetodil, või keelt ikkag
i selle vana keelekümbluse meetodil.
Ei ole aga jonnakamat suhtlusparnterit, kui arvuti. Tõsi, selle taga on loodetavasti juba täna, võis siis homme teie kolleeg, kes peab teie koodi sööma, mis eeldatavalt on läbinud arvuti suhtlustesti - arvuti on saanud teie asjadest aru.
Siin on asjad sarnased köögiga, kus kõik võib ootamatult kergesti untsu minna.
Kahe inimese vaheline kommunikatsioon on
sellega võrreldes uskumatu tolerantsiga. Üksteisest aru saadakse isegi siis, kui suhtlejad ei oska üksteise keelt peaaegu üldse.
Arvutil ja praepannil aga puudub intelligents ja te peate olema tunduvalt kannatlikumad. Vahel ei jäägi muud üle, kui rida realt uurida manuaali ja veenduda, et arvutil oli õigus (tal on alati õigus, nagu ka praepannil).
Kuhu ma tahan selle jutuga välja jõuda?
Ikka selleni, et kõige paremini õpib kokkama köögis, mitte Jamie Olivieri saateid jälgides. Aga kui pärast kõva rahmeldamist ja kõikide kookide untsukeeramist viitsite selle kokkamise virtuoosi tegemisi jälgida, võib teist ehk veel asja saada.
Ja te peate saama köögis reaalselt asju untsu keerata, reaalseid ülesandeid täita, mitte pelmeene soojendada. Väga paljud õpikud teevad vaid seda ja kui olete need läbi närinud, avastate üllatusega, et peale keeruliste grammatikakonstruktsioonide ei ole teil mitte midagi.
Nagu Gunnar Graps laulis - jällegi vaid tühjad pihud...
Oskate C#-s pelmeene keeta, oskate seda teha Perlis ja javaScriptis, oskate isegi .bat keeles pelmeene soojendada.
Aga kokata ei oska.
Siin ma ei oska algul muud soovitada,endale ja teistele, kui muusika/koka/keeltekooli vana ja väga vastikut paradigmat:
õppimine klaveripalade / ülesannete stiilis. Vahel võib juurde õpetada ka mõne uue grammatikaelemendi või programmide teegi või misiganes asja. Aga kõige selle vahepeal peab olema aeg, mis kulub ära instrumendi, s.t. arvuti taga vaeveldes, seda vahel päris ilma igasuguse kõrvalise abita.
Võite aeg ajalt muidugi käia õppevideosid luuramas-puurimas, aga see aeg tuleb arvuti taga ära istuda ja välja mõelda / sõrmedesse saada see või teine liigutus. See on nagu sportlasel läbitud kilometraaz ja sellest ei pääse üle ega ümber.
Ja see aeg peab olema SUUREM KUI 50% minimaalselt arvutiteadusele pühendatud ajast.
Kui see % väiksem, siis olete oma aega kasutult raisanud.

Siin aga kerkib hoopis ootamatu mure - kust neid klaveripalu arvutimaailmas võtta?
Erinevalt muusikust, kes orkestris peab mängima etteantud noodi järgi, väga täpselt, aga ka loominguliselt siiski, on programeerija enamasti improviseerija. Aga et seda hästi tegema õppida, peab tal olema siiski mingi lähtematerjal.
Muusikas on lõputu hulk teemasid, noote, palu. Harjuta ogaruseni!

Programmeerimises on aga ogaruseni manuaale, mis õpetavad mängima “rong see sõitis tsuhh tsuhh tsuhh pala”, seda tuhandetel erinevatel instrumentidel. Aga pala on sama.
Ja mis veel hullem, programmeerijad ise eeldavad üksteiselt, et nad kirjutavadki selliseid manuaale!

Tahate programeerimist õppida luas? Ikka see üks ja ainumas pala - Kuidas ma kirjutan hello worldi? - 
Seejärel tuleb “põnev probleem”, kuidas ma kirjutan programmi, mis kasutajalt John küsib tema nime ja siis ütleb, hallo, kuidas elad John...
Ja loomulikult celsiuste ja fahrenheitide konversooniülesanne...
Homme aga õpime rongisõitu mängima hoopis “Julia-s”. Või Scheme-s ... või Java-s.

Sellele loole leidus kunagi erand - Andrew Tanenbaum kirjutas kunagi päris terve suure raamatu operatsioonisüsteemist Minix ja avaldas koos koodiga.

Selle tagajärjel sündis LINUX.

Pisut leevendab etüüdide muret avatud lähtekoodiga tarkvara, aga enamik nendest pakettidest on tänaseks veninud välja täiesti loetamatuteks monstrumiteks. Õppeotstarbel saaks neist kasutada vaid esimesi versioone, aga need on ammu vajunud aegade hämarusse ...

Kuid isegi kõige banaalsemate foo ja baridega jantimine läbi isikliku 10 sõrme on tunduvalt efektiivsem, kui sama asja kopeerimine ja peistimine. Igatahes mina olen mingis uues
 
arvutikeeles võimeline tegema läbi peaaegu kõik võimalikud ja võimatud grammatikavead, mis on võimalik teha ja alles siis hakkavad sõrmed normaalselt tööle. Reflekse aga ei omandata 10 minutiga või isegi mitte 2 tunniga.

Imelik, et tegevus, mis on kutsutud ellu teiste inimeste tüütuid rutiine kaotama, on ise seotud selle omandamise- ja ka edasise praktiseerimise mõttes küllaltki rutiinsete mõtte- ja sõrmekäikudega.

Seetõttu ärge uskuge pettureid, kes teid küll 1 tunni, mõni koguni 10 minutiga, mõni 24 tunniga, midagi tegema õpetavad.
Kui te olete Mozart, siis olete seda juba lapsest saadik osanud. Kui te aga ei ole?
Sry, olete vaid järjekordse petturi lüpsilehm, kes heauskselt kalli raamatu omandamise järel veendub, et isegi mitte 56 tunniga ei ole ta veel midagi selgeks saanud. Võib-olla oleksite kaugemale jõudnud, kui oma kulutatud 56-st tunnist oleksite pühendanud vähemalt 40 ise pusimisele.
Seda aga mingi reaalse ülesande lahendamise käigus.
Üritan selle jutu lõpetuseks ennast motiveerida nädalavahetustel kirjutama just midagi sellist, mida oleks endale vaja - serverit, kuhu saaks üles ja alla laadida pilte. Oma kodus, arvutitest-mobiilidest A, B, C serverile D. Üle html-i.
Olgu näiteks ühes otsas node javascript ja teises otsas ka htmli kätketud javascript.
Mis puudutab infosse, et seda teeb kusagil pakett A, B või C palju paremini, siis seda paluks ignoreerida. Sellise mõtteviisi korral ei kirjuta te mitte iialgi mitte ühtegi kasulikku programmi, sest alati leidub keegi, kes sama ülesande on teist kümneid kordi paremini lahendanud.
Võib-olla ongi, aga mõnikord ka EI OLE. Võimalik, et selle pildilaadimisega olen pisut hiljaks jäänud, aga ühel hetkel mul tuleb idee, mille realiseerin ehk mina ise teistest pisut paremini.
Ja naudin bingo võitja rõõme. Nii ma vähemalt unelen.
Proosalisema variandi korral, kui bingo võitjat oma unikaalse paketiga teist siiski ei saa, vajatakse just praktilist oskust oskavat inimest igas teises arvutifirmas.
Kuulutustes on tuima järjekindlusega sama motiiv - IT hariduse võib lisaboonusena omandada, oskused peavad olemas olema. Need aga ei sünni mitte raamatu taga, nagu kokakski ei saada kokaraamatu taga.
Aga KOKARAAMATUD peavad riiulis olema, PARIMAD selle juures.
See on asi, millest ei tohiks ka taganeda. Võimalik, et veedate 80% ajast arvuti taga nikerdades. Aga 20 % peab jääma teoreetilisele mõtlemisele, kuigi jah, sõnniku keskelt, kus õpetatakse foode ja baridega jändamist, on seda raske üles leida.
Siin on nüüd teema, mis minu arvates Eesti IT maailmas tuleb uuesti avastada. See, et raamatutarkus ka loeb.
Lõpetuseks:
See jutt on isikliku kogemusega kaetud. Kui mingi asja omandamisel jääb kõik vaid raamatu veerimise ja foo ja baride katsetamise juurde, on see kõik osutnud täiesti kasutuks ajaraiskamiseks.
Õpikunäited ka ei aita, teil PEAB nina ees olema reaalne projekt. Kui ei ole reaalset projekti võtta, mõelge reaalsusele võimalikult lähedal olev projekt ise välja ja ärge kopeerige ja peistige valmis lahendusi-ideesid.

Mul on aga praktiliselt ka asju, kus teooriat ei ole jälle saanud peaaegu üldse uurida - andmebaaside programeerimine näiteks. Seal sai lähenetud just nii - hüpata vette ja hakata “panema”...
Kuna kogu aeg oli vaja töötada teatud ajadefitsiidi tingimustes, tekkis harjumus vajalikke, aga mitte NII vajalike asju edasi lükata. Lõpuks võib juhtuda, et isegi kui ajadefitsiiti ei ole, edasilükkamise koha pealt aga on olemas refleks. Te ei saagi kunagi päris korralikult teada, mida tähendab andmebaaside normaliseerimine!
Ja te määrite hiljem oma mitteteadmist teistele ka pähe - ma näen seda andmebaaside vallas hiliselt omandatud teadmise tõttu - kogu arvutimaailm üritab jonnakalt relatsiooniliste andmebaaside teooriat nurka visata, sest hetkel on vaja väga suurte baasidega midagi teha - ja astub väga pikaajajalisse ämbrisse, kust nii aastakümne möödudes jälle häbenedes välja üritatakse saada, nagu OO-stki.
Tulemina olen teinud pikka aega ehitanud natukene valesid asju. Pisut teoreetilist teadmist oleks suutnud üsna suuri karisid vältida.
Ja teoreetilisi puudujääke ei pane ise tähele, praktilised torkavad õnneks alati silma.


Natuke tarka juttu teistelt ka:









1 Comments:

Anonymous Anonüümne said...

Hää lugu. Aitüma.

november 01, 2015 12:33 PM  

Postita kommentaar

<< Home