keskiviikko 4. joulukuuta 2013

Javascript funktionaalisena kielenä?

Edellinen harjoitukseni sisälsi muutaman funktion jolla laskettiin se, miten eri strategioiden frekvenssit muuttuvat missäkin matemaattisessa/evolutiivisessa pelissä. Funktioiden lisäksi oli sitten piirrosohjelma, joka visualisoi frekvenssien muuttumista. Piirrosohjelma oli suht sama jokaiselle matemaattiselle pelille (kivi-paperi-sakset, vapaaehtoinen vangin dilemma, vapaaehtoinen julkishyödyke-peli), mutta funktiot olivat pelikohtaisia.

Luulenpa siksi että funktionaalinen lähestysmistapa on tällaiseen ongelmaan omiaan. Pitää tutustua ehkä

1. lambda-kalkyyliin

2. siihen miten javascriptillä onnistuu funktionaalinen ohjelmointi / lambda-kalkyyli. (Slideset samasta aiheesta.)

Javascriptiä halutaan käyttää, koska päämääränä on olla webbi-puristi. Chromemies on webbi-puristi.

Mutta tarvitaanko oikeasti täyttä lambda-kalkyyliä on sitten toinen juttu? Javasciptissähän voi kirjoittaa vaikkapa

var x = function(y) { return y + z; } missä z on joku muuttuja jolla on arvo.

ja sitten

var a = x( 3 );

tai

a = x( x );

Javascript ei tue natiivisti koko lambda-kalkyylia vaan sitä varten pitää ladata laajennus / tulkki.

lauantai 23. marraskuuta 2013

Chromebook-harrastus ja evoluutio-harrastus

Ostin vuosi sitten Googlen Chromebookin. Minua viehätti Chromebookissa yksinkertaisuus. Siinä oli vain se mitä tarvitaan, mutta se toimikin sitten hyvin. Chromebook ei ollut lusikka-haarukka. Chromebook tuki alunperin vain webissä browsaamista. Se oli tarkoitettu browsaamiseen siinä missä Kindle tai muut kirjanlukulaitteet on tarkoitettu eKirjan lukemiseen.

Mutta sen minkä Chromebook teki se sitten tekikin hyvin, halvalla ja helposti. Ei tarvinnut huolehtia virus-torjunnasta, varmuuskopioinnista, sovellusten lataamisesta ja installoimisesta, käyttöjärjestelmän uuden version lataamisesta tms. Koneen käynnistyminen kävi muutamassa sekunnissa.

Puhun imperfektissä vain, koska nykyään Chromebook tukee monia muitakin käyttötapoja kuin browsaamista. Helppokäyttöisyydestä ei kuitenkaan ole tingitty pätkääkään.

Olen itse ammatiltani lähinnä Windows-ohjelmoija. Teen työkseni .NET ja C#-koodia enkä ole paljoa harrastanut webbikoodailua. Nyt ajattelin kuitenkin aloittaa.

Koska olen 30 vuotta harrastanut evoluutiota, ajattelin aloittaa evoluutioon liittyvästä webbisovelluksesta. Se on vielä 28.11.2013 raakile mutta sen funktio onkin olla evoluutio-koe-alusta eikä viimeistelty webbisovellus. Hostasin webbisovelluksen Google drivessa! Ohjeet ovat tässä.

Olen ottanut hiukan mallia tästä Javaa käyttävästä webbipalvelusta. Java ei ole web-ohjelmointikieli. Siksi ajattelin kokeilla tehdä vastaavaa Javasciptillä.

#Chromebook