Nyt lauantain iltapäivemmällä voisin pari heittoa pistää Jani Alander tuohon sinun esittämääsi koodi-postaukseen.
Obfuskointi on milenekinntoinen aihealue, itse en ole obfuskoinut koskaan mitään koodiani, mutta voisi kuvitella, että erityisesti jos kaupallista lisä-arvoa jollekin taholle valmistetusta koodista kyse, eikä kyse ole avoimen lähdekoodin ratkaisusta, niin varmaan aika yleisessä käytössä ohjelmistoyrityksissä?
AMK:n ohjelmointikursseilla millään, tai Turun yliopistonkaan niissä ohjelmointi ja algoritmi-kursseilla, joihin olen ottanut osaa, yliopisto-tekniikan maisteri opinnot ovat vielä kesken elämäntilanteeni vuoksi, niin kukaan ohjaaja, lehtori tai ohjelmointi-kurssin opettaja ei ole puhunut mitään tuosta ohjelman lähdekoodin obfuskoinnista edes sivumennen.
Olisiko sinulla jotain hyvää kirjalähdettä, minkä välityksellä voisi perehtyä tuohon obfuskointiin taustoihin, ja käytännön sovelluksiin teollisuuskäytössä, vaikka mikään elämäni aikana valmistamani lähdekoodi ole ollut sen arvoinen, että olisi jotain peiteltävää, tai haluaisin salata jotain. Ylipäätään mitä syvemmälle tietokoneharrastuksessa olen mennyt AMK-opintojeni jälkeenkin, olen alati yhä enemmän etääntynyt suljetuista ympäristöistä tai niihin liittyvistä ratkaisuista. Kannatan avoimuutta, ja vastavuoroista toimintaa ja mielelläni jaan toisille, mitä omin itselleni. Tämä pätee elämänfilosofiassani voisi kai vaikutteena ainakin toimii lähes kaikkeen, tai miksei kaikkeen toimintaani. Vaikuttaa jotenkin siltä, että suljetut lähdekoodit ja ohjelmistot ja ympäristöt ovat niin 90-lukua, ysäriä, ja yritysmaailmassakin kasvava trendi avoimuus ja avoimen open-source -koodin kehittäminen ja sen hyödyntäminen.
Mainitsit itsekin Jani, että paljon muuttujia tuossa sinun auringonlaskuaikaa mittaavassa ohjelmaharjoituksessa. Itsekin käytän yleensä paljon välimuuttujia tavallisesti, ja tulostan niitä välillä testatakseni jonkin muuttujan arvoa ihan ajaen ohjelman, vaikka Debuggeri on ihan hyödyllinen työkalu, Pythonissakin on ja mitä itse Javaa eniten koodaan harrastemielellä jotain pientä, niin Javassakin on ihan hyvä debuggeri ohjelmoidessani Eclipse IDE:llä. Mitä tulee tuohon debuggerin ohjelmointiin itseensä, niin liittynee samaan aiheeseen, mitä keskustelu kääntäjien toiminnasta. Debuggeri on käsittääkseni ohjelmointikielen tulkki, ja tulkki poikkeaa kääntäjästä siinä, että tulkki tulkitsee yhden koodirivin kerrallaan konekieliseksi ilman, että suorittaisi sitä, kun taas tosiaan kääntäjä käy koko ohjelman läpi ja kääntää sen ajettavaan muotoon, jotta valmiin ohjelman suorittaminen olisi vaivattomampaa jälkikäteenkin. Tulkinta täytyy tehdä ohjelmalle joka kerta uudelleen, mutta käännös ainoastaan kerran.
Debuggerissa, kun asetetaan ne breakpointit koodiin, niin aloituspisteestä lopetuskoodiriviin niin saa määriteltyä, minkä kohta koodista tulkitaan tarkasteltavaksi muuttujien arvojen yms. osalta. Tulkin algoritmi on yksinkertaisempi, mitä kääntäjän, kääntäjässä on useampia vaiheita, joskin molemmat algoritmeistä lienee rekursiivisia.
Noissa korkeakoulujen ohjelmointiharjoituksissa ja kursseilla ainakaan Turun korkeakouluissa Turun AMK:ssa ja Turun Yliopistossa ei vaadita virhetilanteiden huomiomista, tai syötetiedon oikeellisuuden tarkistusta, tai tiedon validointia. AMK:n olio-ohjelmoinnin jatkokurssilla enemmän vaadittiin, minkä ymmärtää, kun siellä on jonkinlainen laajempi idea työelämälähtöisyydestä, mitä yliopistossa, niin ohjelmistokehitys-työpaikoissa voi kulua useita miestyöviikkoja pelkästään virheellisten syöttöjen tarkistus--koodeihin, koska ohjelma toimitetaan asiakkaalle, jonka ei tarvitse ymmärtää mitään teknologiasta tai ohjelman anatomiasta ja käyttäjät voivat olla juuri niin "tyhmiä" kuin haluavat. En nyt tuolla tarkoita, että kukaan ihminen olisi tyhmä, mutta otan viitekehykseksi jonkin esimerkiksi Googlen hakukoneen avoimen tekstikentän, mihin teoriassa voi kuka tahansa sitä käyttävä kirjoittaa periaatteessa minkälaisen hakusana-merkkijonon hyvänsä, ja sitä puolta on mahdoton rajoittaa mitenkään, mutta Googlen ohjelmistokehittäjät pitävät siitä huolen, kun hakulomake käy jonkinlaisen prosessiohjelman läpi, jossa määritelty Googlen ideoimat sääntöehdot ja toki sitten vielä valkoiset ja mustat listat käytössä, mutta puhtaasti hakumerkkijonon merkkien tarkistukseen. Näin ei kukaan red-hat pääse anarkiaa harrastamaan Googlen järjestelmissä, kun ei kaikki 15-vuotaiden skriptikakaroiden haut mene läpi.