Pariohjelmointia tekoälyn kanssa

Pariohjelmointi on ketterän sovelluskehityksen tekniikka, jossa kaksi ohjelmoijaa tekee työtä yhdessä samalla tietokoneella. Toinen toimii kuskina eli kirjoittaa koodia ja toinen toimii apukuskina katselmoiden koodia ja yrittäen keksiä kehitysehdotuksia ja ratkaisuja. Ajatuksena tässä on vapauttaa kuski vain tekemään vaadittu työ eli ajamaan toteutusta eteenpäin. (Williams 2001.)

Tekoälyn kehittyessä useat kehitystyökalut ovat saaneet apuvälineitä, kuten esimerkiksi Visual Studio Code -työkalun lisäosa Visual Studio IntelliCode. Lisäosa toi tekoälyyn pohjautuvan ehdotusmoottorin, joka tarjosi kehittäjälle aakkostetun listan sijaan sopivia funktioita ja metodeja käytettäväksi riippuen siitä, minkä tyyppistä koodia oltiin kirjoittamassa. Data tälle älylle tuli GitHubin laadukkaista avoimen lähdekoodin projekteista. (Visual Studio IntelliCode 2018.)

GitHub on tuonut nyt rajoitettuun testikäyttöön tekoälyratkaisun, jonka tarkoitus on toimia pariohjelmoinnin apukuskina. GitHub Copilot (eli apukuski) käyttää datana myös GitHubissa olevia laadukkaita avoimen lähdekoodin projekteja, mutta ehdotusmoottori tuokin funktioiden nimien sijasta kokonaisia koodilohkoja ehdotuksena kyseiseen ongelmaan. Kuskina toimiva koodaaja käytännössä määrittelee kommenteilla ja funktioiden nimillä ratkaistavan asian ja apukuski yrittää löytää siihen sopivan ratkaisun. GitHub Copilot hyödyntää OpenAI yrityksen luomaa yleiskäyttöistä Codex-mallia, joka osaa muuntaa luonnollisen kielen koodipohjaiseksi (Zaremba & Brockman 2021).

kuvakaappaus värikkäästä koodipätkästä mustalla taustalla
Kuva 1. Copilotin ehdottama kutsu NLP-rajapintaan (GitHub Copilot 2021)

Ohjelmistokehittäjien hyödyntämät sovelluskehykset ovat siirtyneet vuosien mittaan matalan tason ohjelmointikielistä korkeiden abstraktioiden puolelle, jolloin valittu ajoalusta hoitaa ison roolin sovelluksien rutiininomaisesta toiminnasta. Hyvinä esimerkkeinä tässä ovat roskienkeruu eli muistinhallinta ja siivous sekä saman koodin toimivuus sovelluskehyksen avulla useissa eri ajoalustoissa kuten Linux, Windows tai erilaiset mobiilialustat.

Ratkaisu koodaripulaan?

Tämä luo mielenkiintoisia näkymiä tulevaisuuteen ja automaatioon. Tällä hetkellä automatisoidaan ohjelmistorobotiikan avulla pois sääntöpohjaisia ja suurivolyymisiä rutiinitöitä (Pursiainen 2020), kuten laskujen tiliöintiä, matkalaskujen hyväksymistä tai jopa tarjouspohjien muodostamista. Tulevaisuuden sovelluskehittäjät eivät siis välttämättä ole koodareita, jotka kirjoittavat integraatioita tai optimoivat algoritmeja saavuttaakseen halutun lopputuloksen, vaan paljon laajempi kirjo eri osa-alueiden erikoisosaajia, jotka kirjoittavatkin määrittelyjä ja muita ylätason kuvauksia sovelluksen toiminnasta (Gottschlich ym. 2018). Tekoäly hoitaa loput tietoturvallisesti, tehokkaasti ja aina noudattaen parhaita käytäntöjä.

Samoin kuin ohjelmistorobotiikassa parhaillaan, ihmisiltä yritetään ottaa pois tylsähköt rutiinityöt, jotka eivät skaalaudu helposti. Tämä on selkeä askel kohti tulevaisuutta, jossa ihminen vain määrittelee sovelluksen, jonka tekoäly toteuttaa. (Gottschlich ym. 2018.)

Kirjoittajat

Jyrki Heinonen on LAB-ammattikorkeakoulun opiskelija digitaaliset ratkaisut YAMK-koulutuksessa. Hänellä on useiden vuosien työkokemus ohjelmistokehityksestä ja pilvipalveluista. Heinonen on kirjoittanut opinnäytetyönsä ”AIOps: Pilvipalveluiden monitorointi tekoälyn avulla” pilvipalveluiden tekoälyoperoinnista ja sovelluskehityksen automatisointi on tärkeä osa sitä.

Minna Asplund, TkL, toimii LAB-ammattikorkeakoulussa lehtorina sekä koordinaattorina insinööri (ylempi AMK) digitaaliset ratkaisut ja IoT:stä tekoälyyn -koulutuksissa.

Lähteet

Gottschlich, J., Solar-Lezama, A., Tatbul, N., Carbin, M., Rinard, M., Barzilay, R., Amarasinghe, S., Tenenbaum, J. & Mattson, T. 2018.  The Three Pillars of Machine Programming. Teoksessa: Gottschlich, J & Cheung, A. (eds.) MAPL 2018: Proceedings of the 2nd ACM SIGPLAN International Workshop on Machine Learning and Programming Languages. PLDI ’18: ACM SIGPLAN Conference on Programming Language Design and Implementation. Philadelphia PA USA, June 18 2018. 69–80. New York, United States: Association for Computing Machinery. [Viitattu 9.12.2021]. Saatavissa: https://doi.org/10.1145/3211346.3211355

Pursiainen, T. 2020. Hyperautomaation lyhyt historia. [Viitattu 9.12.2021]. Saatavissa: https://www.cgi.com/fi/fi/blogi/hyperautomaation-lyhyt-historia

Visual Studio IntelliCode. 2018. Visual Studio Marketplace. [Viitattu 9.12.2021]. Saatavissa: https://marketplace.visualstudio.com/items?itemName=VisualStudioExptTeam.vscodeintellicode

Williams, L. 2001. Integrating pair programming into a software development process. Teoksessa: Ramsey, D., Bourque, P. & Dupuis, R. (eds.) Proceedings 14th Conference on Software Engineering Education and Training. ‘In search of a software engineering profession’ (Cat. No.PR01059). Conference on Software Engineering Education & Training (CSEE&T). February 19–21 2001 Charlotte, North Carolina. 27–36. [Viitattu 9.12.2021]. Saatavissa: https://doi.org/10.1109/CSEE.2001.913816

Zaremba, W., Brockman, G. 2021. OpenAI Codex. [Viitattu 9.12.2021]. Saatavissa: https://openai.com/blog/openai-codex/

Linkit

Linkki 1. Heinonen, J. 2021. AIOps: Pilvipalveluiden monitorointi tekoälyn avulla. YAMK-opinnäytetyö. LAB-ammattikorkeakoulu. Lahti. [Viitattu 9.12.2021]. Saatavissa: https://urn.fi/URN:NBN:fi:amk-2021120924639

Kuvat

Kuva 1. GitHub Copilot. 2021. Copilotin ehdottama kutsu NLP-rajapintaan. GitHub. [Viitattu 9.12.2021] Saatavissa: https://copilot.github.com/

Jätä kommentti

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *