Monialustaisten ohjelmien tekeminen C++-kielellä - Nurmi, Lauri (fi=Turun yliopisto|en=University of Turku|, 2013)
Käyttöjärjestelmiä ja prosessoriarkkitehtuureita on olemassa useita erilaisia. Näiden kahden yhdistelmää yhdessä käyttöjärjestelmän tarjoamien kirjastojen kanssa kutsutaan tässä diplomityössä alustaksi. Tietylle alustalle tarkoitettuja konekielisiä natiiviohjelmia voidaan yleensä suorittaa vain kyseistä alustaa käyttävissä tietokoneissa. Natiiviohjelmien tekemiseen käytetään tavallisesti C- ja C++-ohjelmointikieliä. Monesti ohjelmia on voitava käyttää useammalla kuin yhdellä alustalla. Koska kehitystyö vie aikaa ja resursseja, on toivottavaa, että ohjelma toimisi uudella alustalla joko ilman muutoksia tai mahdollisimman paljon olemassa olevaa lähdekoodia hyödyntäen. Tässä diplomityössä esitellään erilaisia monialustaisten ohjelmien toteutustapoja. Myöhemmin arvioidaan niiden soveltuvuutta kaupallisen kameravalvontaohjelmiston toteutukseen. Keskeisimmät esiteltävät toteutustavat ovat natiiviohjelmat, tulkattavat kielet, virtualisointi sekä web-selain, joka on osittainen toteutustapa monialustaisille ohjelmille. Tämä diplomityö käsittelee monialustaisten ohjelmien kehitystä erityisesti C++-kielellä, joka on yksi maailman eniten käytetyistä ohjelmointikielistä, ja myös tarkasteltavana olevan kameravalvontaohjelmiston nykyinen toteutuskieli. Kielen syntaksin ja C++-standardikirjaston määrittelevä C++-standardi on alusta-agnostinen. Tästä johtuen C++-lähdekoodi voi olla täysin alustariippumatonta vaikka konekielelle käännetyt ohjelmat ovatkin sidottuja tiettyyn alustaan. Useimmat käytännön C++-ohjelmat käyttävät standardikirjaston lisäksi alustan tarjoamia lisäkirjastoja. Toteutusratkaisuiden arvioinnin ja vertailun perusteella voidaan todeta, että C++-kielellä tehty natiiviohjelma on monialustaisen kameravalvontaohjelmiston toteutukseen hyvin soveltuva ratkaisu, mutta myös muiden esiteltyjen tapojen käyttöä kannattaa harkita joissakin ohjelmiston osissa käytettäväksi. Nykyisen natiivitoteutuksen monialustaista kehitystä voitaisiin mahdollisesti tehostaa vaihtamalla käytettävä ohjelmistokehys toiseen sekä tekemällä käännösympäristöstä monialustaisempi ja automatisoidumpi. Johtopäätökset ovat sovellettavissa myös muihin samankaltaisiin ohjelmistoihin.