Puhutaan kielillä! Hiotun hyvän koodin syntysanat suomeksi

Värikkäitä kirjaimia.

Millä kielillä ja teknologioilla Hiotun hyvä koodi syntyy ja mihin tarkoituksiin niitä käytetään? Kuten aina: riippuu siitä, mitä ollaan tekemässä. Jos olet hakeutumassa alalle ja erityisesti meille töihin tai harjoitteluun, on hyvä olla perehtynyt johonkin tässä jutussa mainituista kielistä ja alustoista.

Web-sovellusten backend

Olipa kerran .NET Framework, Microsoftin kehittämä ja omistama Windows-ympäristössä toimiva komponenttikirjasto, ja sen kumppanina C-kielen pohjalta hieman Javaa lainaten rakennettu C#-ohjelmointikieli. .NET Frameworkin kehittäminen alkoi kuitenkin jumittaa ja hidastua, mikä suljetussa lähdekoodissa aina on riskinä. Uudempaa aikaa edustaakin sen pohjalta syntynyt .NET, jota kehitetään avoimena lähdekoodina. Laaja kehittäjäyhteisö on taannut sille selkeän julkaisurytmin ja jatkuvan kehityksen, ja myös C#-kielestä syntyy jatkuvasti uusia versioita, joihin lainaillaan hyviä ominaisuuksia muista kielistä. Merkittävänä erona uusi .NET tukee useita käyttöjärjestelmiä (pois lukien eräät työpöytäsovellusten kehittämiseen tarkoitetut menetelmät).

.NET tarjoaa paljon valmiita paketteja ja kirjastoja kaikkeen mahdolliseen, esimerkiksi tietokantoihin ja lokitukseen. C#-kieltä ei perusteiden lisäksi juuri opeteta oppilaitoksissa, vaan se otetaan haltuun usein esimerkiksi Javan pohjalta.

.NETin sovellusympäristöt ja -kohteet ovat laajentuneet open sourceen siirtymisen jälkeen. Yksi uusimmista tulokkaista on web-selaimiin tarkoitettu Blazor, jonka avulla voi tuottaa frontendin käyttöliittymäkoodia C#-kielellä, kevyessä ajonaikaisessa ympäristössä. Hiotussa seurataan mielenkiinnolla tätä kehitystä, samoin kuin mobiilisovellusten rakentamiseen soveltuvaa .NET MAUI -alustaa. 

Konenäkö: C++

Erityisesti konenäköohjelmoinnissa ja siihen liittyvässä kuvankäsittelyssä tarvitaan toista ceetä, eli C++kieltä, koska se on suorituskyvyltään nopeampaa kuin tulkkauksen vaativa C#. Tilanne voi tosin muuttua tulevaisuudessa, kun C#-kielestäkin on mahdollista tehdä natiivikäännöksiä AOT-teknologialla. Konenäkösovelluksissa on näihin päiviin asti toteutettu jonkin verran asioita myös matalan tason assembly-kielellä erityisen aikakriittisiin tarkoituksiin, mutta tämän tarve on vähentynyt merkittävästi kääntäjien kehityksen ja C++-laajennusten myötä. Eräs tällainen optimoijaa helpottava laajennus on Halide, joka generoi assemblya ja optimoi sen ajonaikaisesti huomioiden sekä rinnakkaistamisen, vektoroinnin että välimuistin hallinnankin. Kehitys kehittyy, käsityö vähentyy.

Selainohjelmointi

Selainohjelmointia on tehty perinteisesti JavaScriptillä, mutta viime vuosina Hiotulla sen on korvannut Typescript, jossa on monia C#-kieltä muistuttavia piirteitä. Selaimet eivät osaa käyttää TypeScriptiä sellaisenaan, vaan lähdekoodi transpiloidaan JavaScriptiksi selaimissa ajamista varten. TypeScriptille ja JavaScriptille on tarjolla runsaasti valmiita paketteja käyttöliittymäkehitykseen. TypeScriptin kaverina kulkee usein käyttöliittymäkirjasto React.js.

Neuroverkot

Neuroverkkoja Hiotussa opetetaan ja testataan Pythonilla; muita vakavasti otettavia vaihtoehtoja ei oikeastaan ole. Pythonilla opetettua mallia hyödynnetään tuotantokäytössä C++-koodilla, jota yleensä kutsutaan C#:n kautta. Yleensä neuroverkkojen alimman tason laskenta tapahtuu grafiikkasuorittimella, mutta GPU:n käsittely tapahtuu valmiiden kirjastojen kautta.

NET-alustalle on myös olemassa oma koneoppimisalusta ML.net, joka mahdollistaa neuroverkkojen opettamisen ja käyttämisen täysin C# käyttäen. Tulokset ja käytettävyys eivät kuitenkaan ole toistaiseksi olleet Hiotun standardeille riittävän hyviä, joten Pythonilla mennään. Hiotun neuroverkkotiimi seuraa neuroverkkojen kehitystä tiiviisti, mm. Papers With Code -sivuston avulla: mitä uutta on tekeillä ja tarjolla?

Sulautetut ympäristöt

Hiotulla embedded-maailmaa ei juurikaan tehdä, mutta toisinaan sillekin on tarvetta. Esimerkkinä voidaan mainita radiotekniikkaa hyödyntävä mittalaite, jonka mittaamat signaalit analysoidaan mikrokontrollerilla ennen PC:lle lähettämistä. DSP:lle ja mikrokontrollerille ohjelmisto kirjoitetaan yleensä C-kielellä ja assemblyllä.

Pitääkö olla guru-ninja-koodivelho-yksisarvinen?

Uusille työntekijöille tai harjoittelijoille kannustukseksi: kaikissa yllä mainituissa tekniikoissa ei meille tullakseen tarvitse olla guru. Erityisesti .NETistä löytyy paljon koulutusmateriaalia, ja uusien asioiden parissa aloitetaan pieninä palasina. Koodin kirjoittamiseen saa apuja sekä ihmisiltä että tekoälyltä.

Varsinaisten koodauskielten lisäksi HTML-merkintäkielen ja SQL-tietokantakielen osaamisesta on kovasti hyötyä, koska niitä hyödynnetään liki kaikissa projekteissa. Mitä ihmiskieliin tulee, suomesta, englannista ja oulusta on eniten apua, vaikka todistetusti myös turun murteella projekteja on viety maaliin loistavin tuloksin.

Kuva Gerd Altmann Pixabaystä