M.V. 2015_02 nägemus sellest, millistes programmeerimiskeeltes tasub end vormi ajada

Commander Shepard and Geth by 6anti6hero6.deviantart.com

Praeguse postitusega soovin tagasisidet ülimalt subjektiivsele mõttekäigule, et kui silmaringi laiendamine ja oma tarkvara-arendusalste oskuste mitmekesistamine välja arvata, siis töökindla tarkvara loomist kindlaks tähtajaks tarkvara loomisele eelistaval tarkvara-arendajal, kes lihtsalt ei suuda rämpsu tuimalt ära publitseerida, on majanduslikult tark ajada end vormi programmeerimiskeeltes, mille korral KÕIK järgnevad väited osutuvad tõeseks SAMAAEGSELT:

väide_V1)
Programmeerimiskeelt kasutatakse LOODUSTEADUSTE andmete uurimiseks
.

väide_V2)
Programmeerimiskeelt arendatakse mitme, üksteisest äriliselt sõltumatu, rahastaja poolt, kelle kõigi korral võtab antud programmeerimiskeele arendus-alaseid otsuseid vastu tehniliselt kompetentne, töökindlust tähtaegadele eelistav, isiksus.

väide_V3)
Programmeerimiskeelt ei saa korporatiivläbu kaudu ära solkida, s.t. läbimõtlematuid otsuseid teha eelistavatel inimestel puudub peamisse koodihoidlasse kirjutamise õigus.

väide_V4)
Programmeerimiskeele realisatsioon on avatud tarkvara, mille litsens võimaldab antud realisatsiooni kasutada Programmeerimiskeeles kirjutatud suletud tarkvara publitseerimisel.

väide_V5)
Programmeerimiskeel on kasutatav populaarseimatel avatud tarkvara põhistel operatsioonisüsteemidel.

väide_V6)
Programmeerimiskeelel eksisteerib avatud tarkvarana koodiformaatija, mis on kas konsoolirakendus või avatud tarkvarana olevasse tarkvaratoimetisse (IDE) integreeritud.

Antud mõte tekkis mul iseendale sobiva suuna valimiseks teostatava analüüsi käigus. Kulutasin sellele vähemalt 4 päeva ning ilmselgelt ei loetle ma praeguses artiklis kõiki nurgataguseid, mis ma selle tulemuseni jõudmiseks oma mõtetes läbi käisin, kuid üldskeem, mis erinevate tähelepanekute loeledes minu tähelepannu koorus, seisneb selles, et tähelepanekud jaotusid 3 klass:

  • kulturoloogilised tähelepanekud
  • psühholoogiapõhised tähelepanekud
  • loodusseaduspõhised tähelepanekud

Kultuur muutub suhteliselt kiiresti. Võite ette kujutada tööintervjuusid, üldist ärikultuuri ning inimeste töö- ja äri-alaseid vastastikusi ootusi aastatel 1994 ning aastal 2014. Rääkimata siis sellest, millise töökorralduse juures USA kuulendude tarkvara kirjutati. Kultuur määrab ka selle, kas automaat-tsensuur piirab Partei suunal tehtavat kriitikat või Tallinn-Tartu maanteel sõitvate, internetti ühendatud, autode liikumiskiirust.

(2014. aasta automaattsensuur Õhtulehe-nimelises … nägi välja nii, et kõik kommentaarid, mis sisaldasid vähemalt ühte järgnevatest sõnadest, jäid kohe pärast “saada” nupule vajutamist avaldamata: valitsus, Politsei, meelitama, kvantiteet, janusse. Kuna “kuriteole” õhutamine võib, pehmelt öeldes, juriidiliselt mitmekesine olla, siis ma vaid möödaminnes mainin, et põhimõtteliselt eksisteerib võimalus, et keegi krutskivend viib mõnes Õhtulehe vana, arhiivis asuva, artikli kommentaariumis läbi robootilise “testi”, uurimaks sõnaraamatu abil, mis sõnad veel automaat-tsensuuri kinni jäävad.)

Psühholoogia, sõltumata psühholoogide hetke, tuleviku, mineviku, teadmistest, nii kiiresti ei muutu, sest inimese bioloogiline evolutsioon ei ole eriti kiire. Küll aga saab öelda, et ahvi psühholoogia erineb koera psühholoogiast erineb väikelapse psühholoogiast erineb keskealise inimese psühholoogiast erineb teismelise inimese psühholoogiast. 100 aasta jooksul muutuvad enam-vähem vaid teadmised ja oskused ise-enda ning teiste inimeste psühholoogiaga paremini toime tulemiseks. Seda nii propaganda konstrueerimisel kui ka lähisuhete nauditavamaks muutmisel.

Loodusseadused ei muutu üldse, sõltumata sellest, kas me neist aru saame. Minu silmis kuulub loodusteaduste hulka ka puhas matemaatika. Isegi kui vaakumis leviva valguse kiirus ajas muutub, kvalifitseerub see muutus vaid üheks loodusseaduseks paljudest.

Tarkvara tegeleb infotöötlusega ja seda isegi siis kui selleks “töötluseks” on leierkasti kombel leierkastis olevate nootide, info, maha-mängimine mõne 3D-printeri või robootilise treipingi näitel ning seda isegi juhtumil, mil “tarkvara” on salvestatud “püsimällu” transistoride ja juhtmetena. Kultuur muutub, psühholoogiaga arvestatakse eri ajajärkudel eri ulatuses, kuid inimkeha keemia määravad ära loodusseadused, mis ei muutu. Isegi siis, kui inimene on arvutivõrgus elav “tehisintellektiline” virtuaalolend, määravad tema ehituse ja seeläbi ka võimekuse ära loodusseadused: matemaatika. Siit võib järeldada, et 1000 (tuhande) aasta pärast kasutatakse tarkvara lisaks uuest kultuurist ning evolutsioonilise arengu käigus muutunud psühholoogiast ajendatud rakendustele ka loodusseaduste uurimiseks, matemaatika-alased uuringud kaasa arvatud. Ajalooliselt kinnitab seda trendi asjaolu, et maailma esimesed arvutid olid, kui mitte kellad ehk ajanäitajad, siis laevade navigeerimisel tehtavate arvutuste abivahendid ehk eriotstarbelised arvutid, mis suutsid jooksutada vaid ühte ainust programmi, olles riistvaraliselt optimeeritud viisil, et kogu riistvara, mis antud programmi jooksutamiseks vajalikuks ei osutunud, oli arvutist väja jäetud. 20. sajandi Fortran’i kood, mis tegeleb füüsikutele huvipakkuvate arvutustega, on 21. sajandil veel kasutusel.

Loodusseaduspõhise tähelepaneku illustratsiooniks esitan väite, et piiratud ressursside tingimustes on piiratud ka õukondlaste arv, kes hierarhia tipus teiste arvel parasiteerides hästi ära saavad elada. Mida vähem ressursse, seda väiksem on hästi ära elava püramiidi tipp.

Psühholoogiapõhise tähelepaneku illustratsiooniks esitan väite, et kliendikandidaatidelt ei ole mõtet küsida, mida nad soovivad, sest on ette teada, et nad soovivad neile vanast ajast teada olevat, aru-saadavat, rohkem ja odavamalt. Piisab, kui uut ja põnevat otsivatele kliendikandidaatidele (“early adopters”) ulatada uhiuus ja neile tundmatu asi koos hea juhendmaterjaliga ja uurida, kuhu nad selle kasutamisel takerduvad. Kui niisama tiksuvad ja selle tiksumise eest spetsialistidest suuremat töötasu nõudvad “profesionaalsed juhid” koos oma korporatiiv-hierarhias peetavate õukonnavõitlustega vaatluse alt välja jätta, siis seltskonna ostmisele (BMV, et bemarite klubis olla, Facebook’i-konto, et teiste Facebook-lastega suhelda, mootorratas, et “bikerite” seltskonda kuuluda, jne.) võimekust osta eelistav (kiirem/võimsam töövahend, pakutavate teenuste valiku laienemine, võime mõnda tegevust sama kvaliteediga odavamalt ja kiiremini sooritada) inimene on nõus uue võimekuse saavutamiseks uut ja tundmatut asja õppima ning uurima küll.

Kulturoloogilise tähelepaneku näitena esitan väite, et see, mida ära automatiseeritakse, sõltub kultuurist. Robootilised seksmassöörid võivad olla füüsiliselt võimekamad kui bioloogilised olendid, rääkimata siis veel olukorrast, kus inimeseks on eelnevalt mainitud “tehisintellektilised” virtuaalolendid, kuid võib juhtuda, et tulevikus sisaldab seks ikkagi mingil määral mentaalset komponenti, sõltumata sellest, et kaifi võib ehk, võibolla, ka mõne dopamiini süstiga kätte saada. Sarnaselt kaabakatele, kes teenivad selle pealt, et loovad Eestis Rahandusministeeriumile andmekaevandus-tarkvara, laiendab Soome seksi-ostu-keeld kui järjekordne Soome “kuivaseadus” tõenäoliselt lisaks Tallinna, “Viro”, bordelli-äri-pidajate turule ka mõne tarkvara-arendus-äri turgu. Seega, kultuurilised trendid ei ole just see, mille järgi pika-ajalisi tehnoloogia-investeeringuid teha. Programmeerimiskeele õppimine tasemeni, et tõesti tolle programmeerimiskeelega seonduvaid trikke teada, on päris suur investeering.

Kuna antud artikkel on seotud programmeerimiskeelte valikuga, siis toon järgnevalt välja ka oma nägemuse programmeerimiskeelte arengust. Tunnistan, et mul on programmeerimiskeelte praktilises ja teoreetilises osas veel palju õppida, kuid minu hetke arusaam ja üldistus on, et programmeerimiskeelte korral kasutatakse ideed, et on üks vana, teada olev, nähtus, ning siis uusi nähtusi ning objekte, olukordi, üritatakse lahti seletada, kirjeldada, vanade ja teada-olevate, nähtuste ja objektide kaudu. Näiteks, olles tuttav nastikuga, võib tundmatu objekti, “elevant”, lonti kirjeldada sõnadega: sabapidi elevandi ülejäänud keha külge kinnitatud halli värvi nastik, millel on ühes otsas pea-aegu pidevalt lahti olev suu. Illustratsiooniks sobib ka tekstitöötluses laialt levinud regulaar-avaldised, kus teksti selekteerimist kirjeldatakse olekumasina kirjeldamise kaudu.

Kui mingi tegevuse jaoks on olemas mingi masin, mis inimese eest töö ära teeb, siis on võimalik seda masinat panna uut ülesannet lahendama viisil, et see uus ülesanne kirjeldatakse ära tolle masina poolt juba varem lahendatud ülesannete kaudu. Näiteks puuviljade pesemist saab kirjeldada nõudepesumasina poolt varem ära lahendatud külma veega nõude-loputamise ülesande kaudu, saades tulemuseks olukorra, kus nõudepesumasin teeb inimese eest ära ka puuviljade pesemise töö. Sama lugu arvutiga, kuid seal on neid kihte hästi palju. Masin, mis inimese eest töö ära teeb, on 2-ndsüsteemi kasutava digitaal-arvuti korral Boole’i loogika “kiire” realisatsioon transistoride, hammas-rataste, mille iganes näol ning siis Boole’i loogika kaudu on ära kirjeldatud liitmine-lahutamine-korrutamine-jagamine-andmete-liigutamine. See kirjeldus on realiseeritud “protsessori” näol. Liitmise-lahutamise-korrutamise-jagamise-liigutamise-boole’ioperatsioonide kaudu (lugeda: assembler-keel) on kirjeldatud uus ülesanne, “programmeerimiskeele C kompilaator”, “Ada kompilaator”, “COBOL’i kompilaator”, “Fortran’i kompilaator”, jne. saades tulemuseks, olukorra, et leidub masin, mis teisendab “programmeerimiskeeles C” kirjeldatud ülesande ümber kujule, assembler-keelde, mille jaoks juba leidub inimese eest tööd ära tegev masin, “protsessor” koos ASM’i binaariks konverteerijaga. Sealt edasi toimub kihtide lisamine, omavaheline segamine, harude tekitamine, jne, stiilis, et C’s saab kirjutada C++ kompilaatori ning C++’is saab kirjutada Java virtuaalmasina või .NET infrastruktuuri või Parrot‘i, jne.

KÕRVALTEEMA

Kui tahta ise omale uhiuut, radikaalselt erinevat, programmeerimiskeelt välja mõelda, siis see on tegelikult ime-lihtne. Piisab, kui valida mingisugune struktuur või tegevus, ideaal-olukorras selline, mille jaoks inimese eest tööd ära tegev masin on juba olemas, ning tolles uues programmeerimiskeeles kirjutatud “programmid” on ülesandekirjeldused, mis on kirjeldatud tolle struktuuri, tegevuse kaudu. Praktilisuse huvides peaks too tegevus või struktuuri pidi liikumine sisaldama mingit tingimuslikkust, näiteks, et kui on pime, siis teeme X, vastupidisel juhul teeme Y, ning seda tingimust muutev operatsioon peaks ka olemas olema, stiilis, et pimedust saab mõjutada tule põlema panemise ning ära kustutamisega.

Näiteks programmeerimiskeel nimega “laulupidu”. Tingimuslikkus on, et kui publik lärmab, siis koor on vait ja kui koor laulab, siis publik on vait ja kuulab. Kui koor laulab midagi publikut tõsiselt häirivat ja solvavat, siis hakkab publik lärmama ja koor jääb vait. Kui koor korraks lavalt ära jalutab, siis jääb lärmav publik vait, sest milleks lärmata, kui pole esinejaid, kelle peale lärmata. Programmeerimiskeelde võiks võtta kasutusele ka lendavad tomatid, mida koor saab publikusse ka tagasi loopida. Kooril on solvanguid sobivalt valides võimalik valida, millist osa auditooriumist ta lärmama ajab. Jne. Andmete sorteerimisülesande realisatsiooni programmeerimiskeeles “laulupidu” illustreerin mullisorteerimisalgoritmiga. Selleks on vaja mingit massiivide realisatsiooni, täisarvude realisatsiooni ja täisarvude võrdluse realisatsiooni. Massiivina võib käsitleda lauljate seisukohti laval. Täisarvudena võib käsitleda tomatiplekkide arvu laulja särav-valgel kuuel. Laululava lavatagus paremasse serva on pandud kast valgete, puhaste, kuubedega, kuid ükski laulja ei tea, et see kast on tegelt lukus. Pärast andmete genereerimist (tomatiplekkide tekitamist lauljate kuubedele) saavad auditooriumil tomatid otsa ja nad hakkavad koori loopima paberist volditud veepommidega, mis antud süsteemi korral tomatiplekke lauljatelt maha ei pese. Lauljad on omavahel kokku leppinud, et iga kord, kui nad peavad nende poole lendava veepommi eest kõrvale põikama, liigub iga paari see laulja, kellel on rohkem tomatiplekke, lava parema serva poole, ja vastupidi, see laulja, kellel on veepommi eest kõrvale põiklevas lauljate paaris vähem tomatiplekke, liigub lava vasaku serva poole. Iga laulja teab, et pärast N-ruudus kõrvalepõiklemist, kus ta pole oma paarilisega enam kohta vahetanud, tuleb hakata laulma solvanguid. Solvangute peale hakkab auditoorium lisaks veepommide loopimisele ka lärmama ja lärmi vaigistamiseks jalutab koor, reas, lavalt ära. Sellega on markeeritud asjaolu, et arvude, tomatiplekkide, sorteerimine on lõpuni jõudnud.


Kui ma oma 2015_02 oskuste juures peaksin hakkama uut programmeerimiskeelt looma, siis ma uue programmeerimiskeele kirjapildi, süntaksi, peale alguses üldse ei mõtleks, vaid kirjutaksin kõigepealt mõnes olemasolevas programmeerimiskeeles teegi, mis selle programmeerimiskeele tööpõhimõtted ära realiseerib. Seejärel kirjutaksin selles, uues, programmeerimiskeeles programme viisil, et need programmid koosnevad antud teegi väljakutsetest. Seejärel vaataksin, millised funktsiooniväljakutsed kõige sagedasemad on ning üritaksin siis neile leida mõne lühema kirjaviisi, süntaksi, ja harvemini rakendust leidvate väljakutsete korral lepiksin verbaalsema, pikema, kirjaviisiga.

Tsitaat minu ajaveebist:

Different programming languages seem to attract specialists from different fields, which means that for almost any given field, the libraries of different programming languages have different maturity. For historic reasons, the C++ seem to have the best 3D libraries, Ruby seems to be the most productive choice for text processing and software build automation. Java seems to have some really good data-file access libraries. Python seems to attract academics. Haskell seems to attract certain types of mathematicians. GNU R seems to be favored by statisticians. C seems to be popular amongst operating system developers, etc. The Babel Architecture is to allow the vast variety of different libraries to be used within a single application.

2014_11_xx_babel_architecture_version_0_t1

Teisisõnu öeldes, seoses töömahukkusega, õppimisele kuluv töömaht kaasa arvatud, ei ole võimalik iga programmeerimiskeele jaoks luua korralikke teeke, mistõttu tulevikus/olevikus tuleb hakata kirjutama tarkvara viisil, et sama “programm” koosneb erinevates programmeerimiskeeltes kirjutatud komponentidest. Komponente ühendavaks elemendiks on operatsioonisüsteem, mille kasutuskõlbulikkus sõltub paketihaldus-süsteemi töökindlusest ja pakettide valikust. 2015_02 seisuga spetsialiseerun Debian‘ile, mis ei tohiks seoses riistvara suhtelise odavusega probleemiks olla.

Mis puutub väitesse, et odavad indialased uputavad turu üle, kiskudes lääne tarkvaraarendajatel, “Ida-Euroopa” tarkvara-arendajad kaasa arvatud, hinna alla, siis olles läbi lugenud raamatu pealkirjaga “The rise of South Indians: Invisible dimension in decline of jobs for Americans in US economy” näen üldist tendentsi, et nii Eestis kui USA-s äritarkvara lõppkasutajad ja tootjad eelistavadki madalakvaliteedilist, katkist, lohakalt, mõtlematult, kiiruga, kokku klopsitud, rämps-tarkvara. 2015_02 seisuga on minu silmis eelnevalt mainitud raamatu dominandiks mõttekäik, et India kui lootussetult korrupeerunud piirkond on oma korruptsiooni-kultuuri eksportinud ka USA suur-korporatsioonidesse ning seda peamiselt skeemi abil, et tehniliselt andekas ja päriselt head tööd teha oskav hindu saab USA suurkorporatsioonis palgatavaid töötajaid valivale vahe-juhi positsioonile ning siis India korruptsiooni-kultuurile kohaselt palgatavad indialased maksavad neid palganud indialasest vahejuhile protsendi oma palgast. Sealt ka motiiv palgata USA suurkorporatsiooni võimalikult palju töötajaid ning võimalusel võimalikult suur protsent neist peaks olema indialased, kuni selleni välja, et tööötajate kvalifikatsioonile pööratakse tähelepanu vaid CV-s olevate “õigete” märksõnade alusel. Suurkorporatsioonide personaliosakonnad pidavat CV-sid valima märksõnu otsiva tarkvara abil ning CV-sse lisatav märksõnade komplekt koostatakse indialaste tööjõuvahendusfirmade poolt vastavalt personaliosakonna tarkvara seadistustele. Kokkuvõtlikumalt öeldult, kõigepealt tuleb päriselt head tööd tegev ja tark indialane ning siis see hakkab vastavalt India kultuurile korruptiivselt palkama hulgim lolle ja mõtetuid tegelasi, kes protsenti maksavad.

Indialaste teema ning üldse kogu tolle äritarkvara arenduse juurde, eesti e-tervise süsteemid ja muu sarnane kaasa arvatud, sobib suurepäraselt nentida asjaolu, et kogu see äri-IT-ajakirjade tühikargamine teemal, “Meil on nii keerulised süsteemid ja nii palju andmeid, et meie võimetus töökindlaid tarkvara-süsteeme luua tuleneb meie ülesande tehnilisest keerukusest”, on totaalne vale, sest füüsikud CERN‘is ja Fermilab‘is (lugeda: loodusteadlased) on kasutanud suuri arvutiklastreid hiigelsuurte andmemahtudega _aastaid_ enne “Big Data” mulli ning seda kõike kindlasti vähemalt sama keeruka andmestikuga kui äriprotsessides kasutusel on. Neil “saamatutel” tarkvara-arendus-meeskondade juhtidel (lugeda: korruptiivsetel loodritel) tuleks vaid korra käia “ekskursioonil” CERN’is või Fermilab’is ja VAADATA, KUIDAS TARKVARA LUUAKSE!!! Väidetavalt olevat üks jaapani firma direktor andnud vastuseks küsimusele, et kuidas on tema firma saavutanud toodete niivõrd kõrge kvaliteedi: “Meil on väga kvaliteetsed kliendid.”

KOKKUVÕTE

Programmeerimiskeelte realisatsioonide ning teekide töökindlus ja läbimõeldus sõltub inimestest, kes need realisatsioonid ja teegid loonud on. Osa seltskondi, näiteks loodusteadlased, eelistavad head tööd, mõistes, et asju korralikult tehes kulub nende loomisele ka aega ning mõistes, et tundmatuses otsimine ei saa anda tähtajaks tulemusi ning et seetõttu tuleb tarkvara-arendus-töid, sarnaselt muudele arendustöödele, hoolikalt ette planeerida ning et tarkvara-arendus-töödega tuleb alustada varakult enne, kui nende tulemusi tarvis läheb. Äritarkvara on erinevatel kulturoloogilistel põhjustel pea-aegu alati rämps, mistõttu ASCII‘lt Unicode‘le ülemineku hädade ja raskuste poolt ilmekalt illustreeritud agiilseid meetodeid kasutades on tõenäosuslikult välja kujunenud olukord, kus enamasti vaid äri-tarkvaras kasutatav tehnoloogia ei ole nii läbi mõeldud, töökindel, kui loodusseaduste uurimisega seonduv tarkvara.

2015_02 paistab üldiseks trendiks olevat, et tarkvara sisaldavad tarbekaubad, lisaks mobiiltelefonidele ka
autod, muutuvad järjest enam äri-tarkvara-sarnasteks ebatöökindlateks toodeteks. Mõnel pool, sealhulgas ka ühes suures Eesti ettevõttes, mille nime jätan siin meelega välja ütlemata, ollakse veendunud, et tarkvara-arendajate kiirustamise käigus tekkivaid vigu ja tegemata-jätmisi saab kompenseerida testimis-meeskonna abil põhimõttel, et kui testijad ei avasta, siis järelikult on töökindluse tase aksepteeritav.

Minu isiklik eelistus 2015_02 seisuga on järgnev:

  • Uhiuue kiiruskriitilise koodi eelistan, tõenäoliselt, kirjutada võimalikult palju Ada‘s, mida ma 2015_02 seisuga veel ei oska. Sõltuvalt olukorrast kasutan Ada asemel C‘d või C++‘i. C/C++ on vajalik GPU-de kasutamisel.
  • Teadusarvutuste infrastruktuuri kasutamiseks pean “ära” õppima Python‘i.
  • Ehitussüsteemid, tarkvara-arendus-automaatika, eelistan teha Ruby-s.
  • Graafiliste kasutajaliideste osas jään JavaScript‘i juurde. JavaScript’iga suhtlemise vahelüliks on PHP, kuid PHP võib tööjärje edasi anda mõnes teises programmeerimiskeeles kirjutatud tarkvarale.
  • Fortran’is ma uut koodi kirjutada ei kavatse, kuid arvan, et tuleb mingil määral valmis olla vana, ajale hästi vastu pidanud, tipp-kvaliteediga, Fortran’i koodi korduv-kasutuseks.

PHP tarkvaratoimetiks kasutan 2015_02 seisuga Peterburis tegutseva JetBrains’i PhpStorm‘i, millel on Vim‘i klahvikombinatsioonide režiimi ning mis on ühtlasi ka JavaScript’i tarkvaratoimetiks. Python’i jaoks pakub JetBrains’i kollektiiv avatud tarkvara põhist tarkvaratoimetit. Ruby’t kodeerin terminaliaknas Vim’iga, kasutades koodi formaatimiseks parandatud versiooni Paul Lutus’e rbeautify.rb‘st.

Pakkusin rbeautify.rb’d tagasi ka Paul Lutus’ele, kuid, kui mu ähmane mälu nüüd mind “liiga palju”, ei peta, oli ta vastus, et üks põhjustest, miks avatud tarkvara on hea, seisneb just selles, et inimesed saavad harusid teha. Seega, täiesti tõsimeeli olin mingi aeg siiralt arvamusel, et minu publitseerutud rbeautify.rb vesioon on planeet Maa ainukene avalikult ära publitseeritud parandatud versioon planeet Maa parimast Ruby koodi formaatijast. :-D

Kuna ma 2015_02 seisuga pole C++’i tükk aega progrenud, siis C++’i toimeti vajab hetkel valimist. Minu kindel nõue on, et tarkvaratoimetil peab olema Vim’i klahvikombinatsioonide režiim, sest see Microsoft Word’ilik nokkimine võtaks minu korral võrreldes Vim’iga ropult aega. Kunagi minevikus kasutasin Microsoft Visual Studio’t ja Vim’i paralleelselt, minnes üle rohkem Vim’ile. C++ formaatimiseks kasutasin Vim’is Astyle‘i. Vim’i üks üüratu eelis tarkvaratoimetite ees seisneb nii C++ kui Ruby redigeerimisel selles, et Vim’is saab kasutada failidevahelisi, klahvikombinatsiooni alla salvestatud, järjehoidjaid. Võimalik, et ma teen jälle midagi lollisti, aga mu hetke, 2015_02_26, arvamus on, et see funktsionaalsus hoiab minu korral kõvasti aega kokku. Seega, tõenäoliselt kasutan C++ korral Vim’i. Ada tarkvaratoimeti küsimus vajab 2015_02 seisuga minu korral veel lahendamist ning seda suuresti seoses asjaoluga, et ma pole Ada’t veel põhjalikumalt õppima hakanudki.

16 arvamust “M.V. 2015_02 nägemus sellest, millistes programmeerimiskeeltes tasub end vormi ajada” kohta

  1. Nagu siinsest artiklistki järeldada võite, Micro$oft‘i .NET spetsiifiline tehnoloogia minu silmis põhjalikumat õppimist ei vääri, et mitte öelda, ma ei usalda seda kaabaklikku suurkorporatiivset monstrumit üldse ning soovitan kõigil, kel vähegi võimalik, vältida vaid Micro$oft’i poolt rahastatavate tehnoloogiate kasutamist, kuid mainin, et Micro$oft on .NET’i virtuaalmasina pannud ülesse Github’i MIT-litsensi alla ning kompilaatori litsensiks oli Apache litsens.

    Minu ennustus on, et kui Micro$oft’i uue indialasest peadirektori, Satya Nadella, juhtimisel hakkab toimuma mingi samasugune protsess, nagu tolles indialaste USA-sse migreerumise raamatus kirjas, a la et tark ja andekas ja särav isiksus hakkab säravalt, juriidiliselt korrektselt, mingi labase korruptsiooniga tegelema, siis on Micro$oft’i päevad küll loetud. Micro$oft’i seltskonna korporatiivkultuuri arvestades ennustan 2015_02_28 seisuga, võimalik, et eksides, et nad muutsid oma peamise tehnoloogia alus-tala, .NET platvormi, avatud tarkvaraks peamiselt selleks, et tehnoloogiat päästa, enne kui töötajaid koondav Micro$oft, mõneti sarnaselt Sun Microsystems’ile, otsad annab. Sun Microsystems’is muudeti krooni-juveelid, Java ja Solaris, enne Oracle kätte langemist avatud tarkvaraks. MySQL päästeti viisil, et tegu oli avatud tarkvaraga enne, kui kauba-märk/firma Oracle’le maha müüdi.

    • Vabandan India/indialaste ees, et Martin Vahi on pisut rassist. (“Neegrid meie liiduvabariigist välja!” võiks olla vananenud nähtus juba, sest on olemas koolitused ja CV edukäik.)

  2. Kui SQLite välja arvata, siis paistab, et SQL’i-põhiste andmebaaside ajajärk on läbi saanud, sest turule on ilmunud RethinkDB-nimeline avatud tarkvara põhine andmebaasimootor, mis lisaks hõlbsale, GUI-põhisele, soovi korral ka 100% skriptitavale, klastri-haldusele ning päringute automaatsele paralleliseerimisele pakub oma päringu-keele semantikaga API’t erinevates programmeerimiskeeltes (Ruby, Python, jne.), ilma, et tuleks päringukeele koodi sõnedest SQL-injection’i nimelise vea tegemist manuaalselt vältides ise kokku panna. Kui teatud väited tõele vastavad (ma pole 2015_03_02 seisuga jõudnud neid veel “kontrollida”), siis on SQL moraalselt vananenud, sest SQL’i abil saab andmebaasis vaid andmeid redigeerida ja käsu peale välja lugeda, kuid RethinkDB päringukeel sisaldab arvutimängude loomiseks sobivat päringu vormi, kus andmebaas saadab oma klientidele andmeid oma-algatuslikult iga kord, kui andmebaasi sisus on toimunud päringu parameetritele vastav muudatus.

  3. * Tarkvaraarendus on meeskonna töö, sest üks inimene ei suuda kõike üksi ära teha.
    * Tänapäeva ärimudeliks ei ole enam Bill Gatesi nutikas OSi- või/ja Exceli müük vaid pilvelaiendus külmiku ja kodumajani välja. Ja isegi pilvetransport/pilvesport ja pilvetoit. Pilvekonservid.
    * Avatud tarkvara (ka mitte-vabaga koos) ja Vaba Tarkvara (100% avatud lähtekoodiga) on üks osa, kuid avalik osa ja meeskond koosneb kogukonnast. Võimalus litsentseerida tooteid avatud litsentsiga. Annetusmudeliga.
    * Kinnine ärimudel sõltub otsesest ja kaudsetest tarbijatest s.t rahast. Enamjaolt kinnine litsents.
    Sõltub firma heakäigust ja meeskonnast, kes ei müü ennast ja ei varasta. Või müüvad firma maha ja teenivad omale.

    * Kompileerimismudel ja teooria, programmeerimistööriistad ja pluginad.
    Masinkood kui kahendkood ja kindlasti veel stabiilsem, sest uuem süsteem, ka uuemad augud.

    Eelistan ./configure ja make binaarimist. Lähtekoodi olemasolu.

    • Tänan vastuse eest, kuid oponeerin argumendiga, et aegread näitavad minevikku ja nende ekstrapoleerimine “joone jätkamise” stiilis ei pruugi anda õiget vastust. Mina üritasin lihtsa “joone jätkamise” asemel tarkvaratehnoloogia arengu aeg-reast leida parameetreid, MIKS aeg-read sellised on, nagu nad on. Loomulikult tasub alati igasugu teooriate tulemusi võrrelda mõõtmistulemustega eesmärgiga otsida teooria poolt antava tulemuse ja mõõtmistulemuse olulist erinevust ja mul on ka üks selline erinevus Teie teooria mittekehtivuse näitamiseks välja käia.

      Nimelt, kui Te oleksite meeletu Java guru ajal, mil Java polnud veel populaarne, siis aeg-ridade järgi oleksite Te pidanud Java nurka viskama, sõltumata sellest, et see omas nišis laine jalamil on ja Te Javaga tegelema hakates saaksite Java populaarsuse harjal olles oma CV’sse kõige vingema Java töökogemuse aastate arvu kirjutada, mis üldse põhimõtteliselt võimalik on. Hetkel arvan, et minu “teooria” võimaldab mingil määral tehnoloogia-laine jalamil õieti käituda, kuid Teie aeg-ridade “joone pikendamise” lähenemine annab Teile infot hilinemisega. Siinne artikkel käsitleb seda, kuidas tulevikuga toime tulla, mida olevikus teha, et tulevikus sobivalt ettevalmistunud olla. Kui üritada musta huumori kombel klišeede hulgast paralleeli otsida, siis saan Teie teooriat iseloomustada väljendiga, et kindralid valmistuvad ette ikka mineviku sõdadeks, mitte tulevikus toimuvaks.

      • Tegu ei ole aktsiaturuga, trendide kasv ja tõus on aastates, vahel isegi aastakümnetes.
        Niiöelda “jalamil” keele praktiseerimise alustamine võib tulevikus muidugi kunagi teistest paari aasta võrra suurema kogemuse tõttu ära tasuda, ent võib sama hästi ka aja raiskamiseks kujuneda – põhimõtteliselt vene rulett viie padruniga.
        Oma põhikeeles langustrendi märgates võib jälgida nivood hoidvaid või kasvava nõudlusega keeli ja hakata end nendega vaikselt kurssi viima.
        Lisaks veel juurde, et .NET-ist eemale hoidmise soovitus on küll noortele/alustavatele Eesti programmerijatele äärmiselt halb soovitus – turul on praegu .NET arendajate järele väga suur nõudlus. Avatud tarkvara põhimõtted võivad ju olla ilusad ja üllad, ent süüa need ei sünni.
        Praegu soovitan ise siis järgmisi keeli – Java või C#, kindlasti T-SQL, kui veebiga tegelemise soov siis kindlasti Javascript ja mingi kaasaegne veebi arendusraamistik.

        Ruby on küll kasvav trend, ent praegu suhteliselt mõttetu – tegu on tööandja turuga praegu, nemad valivad arendajaid, mitte sina tööandjaid – oodata paar aastat, vaadata mis sellest saanud on.
        PHP – langev trend, tunduvalt madalam töötasu, rämpskliendid (PHP-l on “odav” maine ja tellijad ootavad lahendusi poolmuidu) – hoidke eemale
        Python – meaningful whitespace – see on lihtsalt vale:)

        • Tänan vastuse eest.

          Arvan, et tarkvara-arenduses saab kasutada paralleeli kinnisvara-ehitus-töömeeste turuga, kus selliseid lihttöölisi, kes prahti veavad, saab küll odavalt ja kergelt, a la nende korral eksisteerib “tööandja turg”, kuid kui soovida midagi enamat kui prahi-vedu, siis tuleb kogenud meistrile ka väliselt üpris lihtsa liigutuse eest üpris palju maksta. Tööd hästi-tegeva oskus-tööjõu korral pole üheski valdkonnas tegu “tööandja turuga”. Väide, et suur-korporatsioonid ehk peamised C# ja Java kasutajad teevad kvaliteet-tööd, kõlab minu subjektiivsel hinnangul, minu elu-kogemuse järgi, küll valeks klassifitseeruvana. Kui kvaliteeti mitte pakkuda, siis on ilmselgelt aktuaalne küsimus, et milleks maksta meistrile, kui võib odavama raha eest saada mitu, ebakvaliteetse töö jaoks täiesti sobivat, töötajat. Jutt, et kvaliteet-tööjõu järgi eksisteerib puudus, on absoluutne vale, sest sobiva raha eest saab inimesi valida tuhandete hulgast.

          Tsiteerin Ray Salemi nimelist olendit artiklist pealkirjaga “Why Are There No Successful New FPGA Companies?”:

          In his book “The Innovator’s Dilemma” Clayton Christensen showed that the success rate for companies who tried to break into a market (disk drives in his study) by dint of a more powerful solution was zero. A big fat zero. 0%.

          The only way that company’s managed to displace a leader was to go after some market that didn’t interest the leader, and then grow from that market into the leader’s market while maintaining low margins that keep the leader out.

          The thing is, I haven’t seen any small alternative market for programmable devices that lends itself to low margins. This is what’s keeping the market leaders in their position. Unless someone is able to come up with some dramatically different business model (free silicon if you buy our software and consulting? I don’t think so.) then Altera and Xilinx will continue to rule the roost.

          Arvan, et see tsitaat illustreerib ideed, et vähem-kogenud inimesed ning üldjoontes kogenud inimesed, kes võtavad käsile midagi enda jaoks uut, saavad turule tulla viisil, et teenindavad turusegmenti, mis turul olevatele tugevatele tegijatele ei paku huvi. Näiteks, tõenäoliselt ei ole maailma parim ortopeed nõus töötama mõnes eesti väike-haigla traumapunktis, sest seal pole tema jaoks piisavalt palju piisavlalt ränkade vigastustega patsiente, mistõttu värskelt ülikoolist tulnud arstidel on, sõltumata oma väiksemast töökgemusest, tolles turusegmendis šansse. Tolle väike-haigla teeninduspiirkonna patsiendid on õnnelikud, et nad üldse arsti juurde pääsevad. Sama lugu tarkvara-arendusega ja üldse IT-toega. Wikide ja foorumite installimine ja seadistamine ei pruugi tipp-progrejatele eriti huvi pakkuda, kuid tava-kasutajate jaoks on ikkagi tegu väga asjaliku ja vajaliku teenusega. Selleks, et mõne väike-kontori sekretärile WiFi ruuter ära seadistada ja arvutid võrku panna, ei ole ingtingimata vaja suurte kogemustega infotehnoloogi. VPN’i ja muu turva-teemaga võib asi juba keeruliseks minna, aga lihtsamal ja igavamal juhul ei ole väike-kontori üles-seadmiseks eriti suuri IT-alaseid oskusi vaja, a la kutsekool/tehnikum on tõenäoliselt lihtsamat laadi asjade õpetamisel täiesti adekvaatne.

          Ühtlasi rõhutan, et kui Te ei soovi tarkvara-inimestena oma klientide juures ise neid WiFi ruutereid seadistada ja juhtmeid/kaableid seintesse vedada, siis peate kutsekoolide lõpetanutele VÄGA TÄNULIKUD OLEMA!!! Rääkides kaablite vedamisest, siis see ei ole üldse triviaalne ülesanne. Kuskil pangas, marmorplaatide all/vahel asju ajades tuleb kaabli vedamisel tunda siseviimistlustööde poolt. Tööstus-robootika-firmas tegeleb kaabeldusega elektrik, sest kaablite vedamine on oskuslik käsitöö, millega minu-sugune tarkvara-tegelane, kes võib küll otsustada mis kaableid vaja läheb ja mida need kaablid ühendama peavad, 2015_03 seisuga hakkama ei saa, sest tolle käsitöö õppimine eeldab ikkagi harjutamist, nüanssidega kurssi-viimist, umbes nagu meremeestel on igasugu köite sõlmimiseks terve trobikond sõlmetüüpe ja trikke.

          Mis puutub Ray Salemi ideesse, et mingi tehnoloogia osas turu-liidrid ei tule osade turusegmentide teenindamisega seoses tolle turusegmendi ebatasuvusega toime, siis mul on juba aastaid olnud mõttes 2 skeemi:

          skeem_1:
          Eestlaste jaoks ei ole mõtet “MP3-mängija mikroskeemi”, mingit toodet, millel on suur arenduskulu ja väike lõpphind, arendada, sest turg (~1,5 miljonit inimest) ei ole nii suur, et massi-effektiga oleks võimalik arendustööde maksumust, rääkimata projekti marginaalist, tagasi teenida. Kui kõigil eestlastel on juba olemas “käekell”, “MP3-mängija”, siis pole vaid eestlastest koosneval turul piisavalt palju inimesi, kellele neid asju müüa.

          skeem_2:
          Klassikalistes firmades tuleb lisaks päris tööd tegevatele inimestele ülal pidada vähemalt 1 kiht üldjuhte, koristajaid, üldjuhtide sekretäre, kontorit, firma PR-inimest, personali-osakonda, dividendide maksmise fondi, jne. Sellega on seletatav, miks klassikalised firmad oma kulustruktuuri tõttu EI KÜÜNDI teatud turge teenindama. Eesti mastaabis sobib illustratsiooniks tarkvara-firma ja vabakutselise tarkvara-arendaja võrdlus. Vabakutselised saavad suurema projekti korral omavahel koostööd teha, nii nagu korteri-remonte tegevad meistrid seda teevad. Tarkvara-firmal, erinevalt kodus progrevast vabakutselisest, tuleb lisaks progreja tööle kinni maksta kontori rent, sekretäri palk, direktori palk, firma-omanike kasum, kontori koristaja teenused. Sellega on seletatav, miks vabakutseline saab isegi orjalikult makse makstes kliendi jaoks väiksema hinnaga töötades rohkem teenida kui ta tarkvara-firmas direktorile alandlikult kulpi lüües teeniks.

          Tänan lugemast. :-)

          • Prahivedajate jutt on muidugi jama – vaata minu poolt lingitud graafikuid ja töötasusid. Kuidas lõpptulemuse kvaliteet üldse asjasse puutub? Ma ei rääkinud arendusfirmade lahenduse kvaliteedist, vaid kliendi kvaliteedist.

            Kas sa tõesti arvad, et kellegil on kasulikum ennast positsioneerida PHP turule, kui statistiliselt on antud regioonis antud perioodil pakkuda 1000 töökohta kesmiselt ca £350 päevatasuga, kuid Java arendajatele on pakkuda 4000 töökohta kesmisel £450 päevatasuga?
            Kindlasti leidub ka Java arendajaid kes teenivad vähem kui PHP arendajad ja vastupidi, ent need on erandid.
            Suurem valik tööandjate vahel on alati töövõtjale kasulikum, sama kehtib ka suurema keskmise palga kohta.

        • Microsofti non-free sql ja .NET soovitada?
          https://www.gnu.org/philosophy/malware-microsoft.html

          Lõpetasin Win kasutamise XP ja win7 starter ajal, mil see OS lihtsalt korralikult ei töödanud. Tulemüüriga vaatasin, kuidas viirus võrguprogrammi tahab nakatada ja win7 starter tegi pidevaid restart update’i.
          Läksin ubuntu peale ja hiljem trisquel peale, kuid seal on tarkvara seadistamised ja uuendused veidi vigased.
          Lõpuks debiani peal, kus on vähemalt minu jaoks kõik stabiilne.

          Mind huvitab vaba tarkvara, sest seda saab levitada/muuta ja ma näen vabalt avatud lähtekoodi kui tahan.
          Kui probleeme näen, siis saadan vaba kogukonda.

          Debiani ei anna üldse võrrelda apple ja microsoftiga, sest viimane on mittetulundüsühing ja akadeemikute ja asjaarmastajate põhine. Universaalne OS.
          Loomulikult leidub auke kõigis, kuid linux on tunduvalt avatuma lähtekoodiga ja Microsoft on eestlaste rahakoti röövimisbande nr.1 ja apple nr.2

          Pealegi on mul 11 aastat vana arvuti (P4 intel), mis saab töödata väikseima graafikaga ja praegu tundub, et on maailma kõige stabiilsem. Üle saja algkäivitamist kuus ja mitte ühtegi probleemi debiani peal ei ole. Kokkujooks on jäänud XP aegadesse! Microsoft= õuduste ja viiruste kuningriik!!

          • Microsoft küll mittetulundusühing pole:)
            .NET ja T-SQL on tööjõuturul väga konkurentsivõimelised. Isiklikult kasutatavate operatsioonisüsteemide eelistuse jutt on teemaväline.

Kommenteerimine on suletud