Kultainen koodi

.NET-osaajan ajatuksia paremmasta koodailusta

Archive for the category “itsensä kehittäminen”

Code Wars, mahdollisuus oppia

Tutustuin codewarsiin työkaverini suosituksesta yhtenä syksyisenä päivänä. Hän löysi koodiharjoitussivuston, jossa editoria ja testejä voi ajaa selaimen kautta. Toisin kuin exersim.io tai vastaavissa palveluissa, codewarsilla harjoitteleminen onnistuu ilman kehitysympäristöä.

Harjoitusten tekeminen codewarsissa käy helposti. Harjoitusta kutsutaan nimellä kata.

codewars_kata

Kata eli harjoitus codewars.com:ssa.

 

Harjoituksen tehtävänanto selviää ruudun vasemmalta puolelta. Koodi kirjoitetaan oikeassa yläkulmassa näkyvään koodinäkymään. Kirjoitettu koodi ajetaan ”paikallisia” testejä vastaan Run Examples -painikkeella. Ne löytyvät Example Tests -otsikon alta. Näitä testejä voi myös muokata omien mieltymysten mukaan.

Lopullinen testi ratkaisulle tehdään ajamalla koodi Attempt-painikkeella. Ratkaisun toimivuus testataan yksikkötesteillä, joita ei näytetä käyttäjälle. Vain testien tulos näytetään. Toisinaan testien nimestä voi päätellä mikä testi epäonnistui. Järjestelmä sallii myös satunnaistettujen testien ajamisen, jolloin tehtävän luojan ei tarvitse kirjoittaa kaikkia testitapauksia käsin.

Ratkaistuasi tehtävän, saat vaikeusasteen mukaan tietyn määrän pisteitä. Helpoimmat testit saa ratkaistua muutamassa minuutissa, vaikeampien ratkaiseminen kestää tunteja.

Ratkaistuasi tehtävän, näet muiden vastaukset ja näistä oppii. Vastauksista voi merkata omasta mielestä parhaan ja nokkelan vastauksen. Vastauksista näkee kuinka paljon ohjelmoijien ongelmanratkaisukyky ja API-tuntemus vaihtelee.

codewars_stats

Stats-sivu kertoo mistä olet saanut pisteitä.

 

Olen kerännyt suurimman osan pisteistäni tekemällä harjoituksia. Pisteiden hankkimiseen käytetyt kielet näkyvät oikeasta laidasta ja prosenttiosuus kertoo kuinka paljon pisteitä on kerätty ennen seuraavaa tasoa.

Pisteet päivittyvät muutaman tunnin välein, kun palvelin ajaa ajastetusti pisteiden päivistyskriptit. Itsekin ihmettelin aluksi miksi pisteet päivittyvät viiveellä.

Jos teet vain harjoituksia, pisteillä ei ole merkitystä. Halutessasi voit kirjoittaa harjoituksia muiden ratkaistavaksi tai kääntää niitä kieleltä toiselle. Tällöin korkeampi pistemäärä sallii kevyemmän validointiprosessin ennen kuin kirjoittamasi harjoitus julkaistaan.

Yhteisöllisyyttä yritetään lisätä klaanien avulla. Käyttäjän tiedoissa voi antaa itselleen klaanin. Se on vain merkkijono. Kaikki jotka kirjoittavat saman merkkijonon, tulevat samaan klaaniin.

codewars_klaanit

Klaanit

 

Klaanijärjestelmä ei ehkä ole täydellinen, koska vaihdettuani klaanin, näen edelleen kaikki vanhan klaanini jäsenet.

Codewars on ehdottomasti paras palvelu ohjelmointiharjoitusten tekemiseen. Sen avulla voi ylläpitää kielen osaamista tai opetella uutta kieltä. Toki harjoitusten avulla oppii erityisesti kielen käyttöä, ei niihin liittyvien frameworkkien käyttöä.

Suosittelen kokeilemaan codewarsia, sen avulla voit löytää palon vanhaan rakkaaseen kieleen tai kehittää osaamistasi nykyisen kielen kanssa.

 

 

 

Clojuren opiskeluun vaihtoehtoja

Clojuren ja ClojureScriptin opiskeluun löytyy useita työkaluja, jotka toimivat hyvin. Alkuun voi ottaa maistiaiset kokeilemalla jotain selaimessa pyörivää REPLiä. Sen avulla voi suorittaa suoraan clojurekoodia.

Koodaajan iloksi clojurelle löytyy useita eri kehitysympäristöjä:

Counterclockwise on ilmainen Eclipsen päälle tehty ympäristö.

JetBrains kehitti IntelliJ:n päälle kokonaan oman tuotteen clojurelle. Sen nimi on Cursive. Se näkyi ClojuTRE:n demoissa suosituimpana työkaluna.

Emacsiin saa clojuren pyörimään mainiosti. Käytän sitä itse töissä, koska kokeneemmat kehittäjät osaavat näyttää sillä miten hommat tehdään.

Visual Studioon löytyy vsClojure-lisäosa, jolla pääsee vauhtiin.

Jos haluat opiskella clojurea, voit joko lukea siitä kirjasta, suosittelen Clojure for the brave and true -opusta. Se on kirjoitettu kieli poskessa ja se sisältää hyviä linkkejä lisäopiskelua varten. Aloitin itse sitä kautta.2016-07-19-11-57-22

Ehkä matalin kynnys tulee kuitenkin pyöräyttämällä läpi yksinkertainen hands-on harjoite. Sellainen löytyy try clojuresta. Sen päristely kestää vain 5 minuuttia. Suosittelen lämpimästi. Siinä kerrotaan suoraan mitä pitää kirjoittaa, joten se onnistuu helposti. Toisaalta siinä ei sukelleta kovinkaan syvälle clojuren mahdollisuuksiin.

Omaa osaamista voi vahvistaa ratkomalla koodisokeriongelmia 4Clojuren sivuilla. Kannattaa luoda käyttäjätunnus, niin edistyminen tallentuu. Ratkaisujen löytäminen vaatii rajapintojen tuntemista, tuskastuttavaa ja lopulta palkitsevaa. Apuna voi tietenkin käyttää Cheatsheet-sivua tai vaikka lueskella aiemmin mainittua kirjaa. Hyviä esimerkkejä löytyy myös clojuredocsista, siellä on rajapinnan lisäksi näppäriä esimerkkejä. Stackoverflowsta ei vielä löydy vastauksia, joten kannattaa panetua muuhun materiaaliin.

Exercism.io & clojure on suosikkini itseopiskelua varten. Se tosin vaatii oman koneen ja ympäristön, jossa ratkaista tehtäviä. Exercism antaa kuitenkin vapaat kädet ongelmien ratkaisuun. Ongelman voi ratkaista kauniilla koodilla tai kirjoittamalla apufunktioita ja karmean pitkän hässäkän, kuten itse teen ensimmäisellä iteraatiolla. Löydettyäni ratkaisun yritän jalostaa mörkömöhkäleestäni kaunista koodia.

Valitse oma polkusi clojureen! Opiskele niin paljon kuin on tarpeen tai syöksy kielen syvyyksiin oivaltamaan. Nauti.

ClojuTRE 2016 aloittelijan silmin

Kävin kuuntelemassa upeita luentoja ClojuTRE:ssa, siellä kerrottiin uusimmista tuulista ja erilaisista kielen sovelluksista.

Huomasin hypänneeni clojuren kelkkaan juuri oikeaan aikaan, koska kielen debuggaukseen, ajonopeuteen ym. liittyvät ongelmat on selätetty aivan hiljattain.

Palataan alkuun.

ClojuTRE tarjosi tietoa kolmella rintamalla: clojuren yhteys muihin kieliin ja clojuren historia, erilaisia sovelluksia miten clojurea voi käyttää oikeissa projekteissa ja kielen kehittymiseen liittyvät projektit tai laajennukset.

Tietämykseni laajeni kerralla aivan uusiin sfääreihin seurattuani esityksiä.

Klipse tarjoaa REPL:n eli reaaliaikaisen ohjelmointiympäristön mille tahansa web-sivulle, joka voi pyörittää komponentteja tai JavaScriptiä. Sen avulla uuden kielen oppiminen muuttuu paljon helpommaksi, kun opiskelijan ei tarvitse erikseen pystyttää kehitysympäristöä. Ideoita voi kokeilla heti.

Native mobile apps ja clojure of things järisyttivät maailmaani. Siis näin voi tehdä alustariippumattomia sovelluksia clojurella tai ohjata IoT-laitetta (RaspberryPi). Aivan fantastista kamaa. Juuri tämän kaltaiset esimerkit elävästä elämästä saavat uskomaan tämän kielen mahdollisuuksiin. Huimaa.

The Story of Owl Lisp avasi lispien maailmaa tavalla, jota en uskonut mahdolliseksi. Kaiken lisäksi Aki Helin sai yleisön nauramaan upealla esityksellään. Kaiken takana on yksinkertainen lambda-matematiikka eli funktiot. Yksinkertaisuudessaan ja yksinkertaisuudesta kasvaessaan monimutkaisuudessaan kaunista.

ClojureScriptin viisi viimeisintä vuotta ja viisi seuraavaa puuhkäisivät pöydän puhtaaksi. David Nolen tiivisti erinomaisesti, yhteistö sai tämän kaiken aikaan. Liity yhteisöön ja anna vähän. Nappaa helppoja juttuja, joilla parannetaan clojure (scriptiä). Oikein voimaannuttava puhe mieheltä, joka on auttanut clojurescriptin syntymisessä. Hän rakastaa LISPiä.

Päähäni jäi paljon innostusta. Sain suuren määrän tietoa, josta osaa pystyn käyttämään edukseni paremmin kuin toista. Löysin paikkoja, joista voi aloittaa, kun tahtoo saada asioita tapahtumaan. Siemeniä, alkuja minulle. Muille projekteja, jotka luovat uskoa clojureen.

Clojureen ihastuminen

Astuin clojure-maailmaan, tehtyäni töitä yli kymmenen vuolla .NET-työkaluilla. Suurimman osan tuosta ajasta kirjoitin C#:lla ja hieman yli vuoden Visual Basicilla. Clojure on LISP-perheeseen kuuluva kieli. Ensin se nyrjäyttää aivot ja sitten sillä koodaaminen tuntuu mahtavalta.2016-07-13-09-53-17

Uusimmassa projektissa kieli- ja tekniikkavalintoina on ClojureScript frontissa muutamien lisäpalikoiden kera, serverillä Clojure ja tietokantana CouchDB. Olen harjoitellut ja koodannut clojurea vasta kuukauden, joten kielen vaihtoon liittyy paljon uutuuden viehätystä.

Miltä clojure näyttää?

(map inc [1 2 3])
;; => [2 3 4]

Oheessa koodi, jossa lisätään inc-funktiolla annetun vektorin alkioiden arvoja yhdellä. Map-funktio kutsuu inc funktiota jokaiselle alkiolle erikseen, jolloin funktion tulos on [2 3 4].

Käytin tovin aikaa todetakseni, ettei tässä ilmaisessa wordpress.com:ssa voi asentaa plugineja, joilla voisi tyylikkäästi näyttää miten clojure toimii. Klipse:n voisi upottaa blogiin, jos saisi ajaa JavaScriptiä tai asentaa plugarin.

Käy klipsen sivuilla testaamassa clojurea, niin saat maistiaisen kielestä.

Suojattu: Vuoden sisäinen retro

Tämä sisältö on suojattu salasanalla. Syötä salasanasi näyttääksesi sisällön:

Post Navigation