GitHub Copilot -tekoälymoduulin käyttö ohjelmoinnin tukena
Nieminen, Heta (2024-04-22)
GitHub Copilot -tekoälymoduulin käyttö ohjelmoinnin tukena
Nieminen, Heta
(22.04.2024)
Julkaisu on tekijänoikeussäännösten alainen. Teosta voi lukea ja tulostaa henkilökohtaista käyttöä varten. Käyttö kaupallisiin tarkoituksiin on kielletty.
suljettu
Julkaisun pysyvä osoite on:
https://urn.fi/URN:NBN:fi-fe2024042321067
https://urn.fi/URN:NBN:fi-fe2024042321067
Tiivistelmä
Tässä tutkielmassa analysoin GitHub Copilotin hyötyjä, potentiaalia ja riskejä. GitHub Copilot on tekoälypohjainen ohjelmointiavustin, jonka suosio ja käyttömäärät ovat voimakkaassa kasvussa. Tuloksia voitiin analysoida muutamien Yhdysvalloissa tehtyjen empiiristen tutkimusten perusteella. Tarkoituksena on selvittää, onko Copilotista enemmän hyötyä kuin haittaa ohjelmoinnin apuvälineenä.
Tutkimus jakautui neljään osaan. Johdannon jälkeen ensimmäisessä osassa käydään läpi tekoälyn- ja ohjelmoinnin perusteita. Toisessa osassa analysoidaan julkaistujen tutkimusten tuloksia sekä GitHub Copilotin toimintamallia. Kolmannessa osassa perehdytään omaan kokemukseeni Copilotista ohjelmoinnin apuvälineenä. Viimeisessä osassa analysoidaan saatuja tuloksia kokonaisuutena.
Näiden tutkimusten pohjalta saatiin suuntaa antava kuva Copilotin pätevyydestä, tietoturvariskeistä ja hyödyistä. Copilotilla oli taipumus tuottaa virheellistä ja tietoturvariskejä sisältävää koodia hiukan alle puolessa vasteista. Kuitenkin pätevyydessä se pystyi hyvin kilpailemaan nuorempia ohjelmoijia vastaan. Copilot apuvälineenä nopeuttaa ja tehostaa ohjelmoijan arkea, mutta se ei korvaa sitä. Copilotin käyttöön liittyy merkittäviä riskejä, erityisesti jos käyttäjä ei kykene tunnistamaan koodin mahdollisesti sisältämiä tietoturva-aukkoja.
Tutkielman viimeisessä osiossa ennen yhteenvetoa käsittelen omaa empiiristä tutkimustani aiheesta. Oman tutkimukseni perusteella havaitsin Copilotin hyvät koodivasteet omiin skenaarioihini. Pientä vaihtelevuutta eri (luonnollisten) kielien väillä oli myös havaittavisssa. Tämä tutkielma tarjoaa suuntaa antavan kuvan siitä, miten Copilot voi ja voisi oikeasti hyödyttää ohjelmoijia ottaen kuitenkin huomioon mahdolliset riskit. In this thesis, I analyze the benefits, potential, and risks of GitHub Copilot. GitHub Copilot is an AI-based programming assistant experiencing strong growth in popularity and usage rates. The results were analyzed based on several empirical studies conducted in the United States. The aim is to determine whether Copilot provides more benefits than drawbacks as a programming aid.
The study is divided into four parts. Following the introduction, the first part covers the basics of AI and programming. The second part analyzes the results of published studies and the operating model of GitHub Copilot. The third part delves into my own experience with Copilot as a programming tool. The final part analyzes the findings as a whole.
Based on these studies, a preliminary assessment was made regarding Copilot’s competence, security risks, and benefits. Copilot tended to produce erroneous code containing security risks in just under half of the responses. However, in terms of competence, it was able to compete well against younger programmers. While Copilot as a tool speeds up and enhances a programmer’s workflow, it does not replace it. There are significant risks associated with using Copilot, especially if the user cannot identify potential security vulnerabilities in the code.
In the final section of the thesis, before the conclusion, I discuss my own empirical research on the topic. Based on my own research, I observed good code responses from Copilot in my scenarios. There was also some variability noticed across different (natural) languages. This thesis provides a preliminary insight into how Copilot can actually benefit programmers while considering potential risks.
Tutkimus jakautui neljään osaan. Johdannon jälkeen ensimmäisessä osassa käydään läpi tekoälyn- ja ohjelmoinnin perusteita. Toisessa osassa analysoidaan julkaistujen tutkimusten tuloksia sekä GitHub Copilotin toimintamallia. Kolmannessa osassa perehdytään omaan kokemukseeni Copilotista ohjelmoinnin apuvälineenä. Viimeisessä osassa analysoidaan saatuja tuloksia kokonaisuutena.
Näiden tutkimusten pohjalta saatiin suuntaa antava kuva Copilotin pätevyydestä, tietoturvariskeistä ja hyödyistä. Copilotilla oli taipumus tuottaa virheellistä ja tietoturvariskejä sisältävää koodia hiukan alle puolessa vasteista. Kuitenkin pätevyydessä se pystyi hyvin kilpailemaan nuorempia ohjelmoijia vastaan. Copilot apuvälineenä nopeuttaa ja tehostaa ohjelmoijan arkea, mutta se ei korvaa sitä. Copilotin käyttöön liittyy merkittäviä riskejä, erityisesti jos käyttäjä ei kykene tunnistamaan koodin mahdollisesti sisältämiä tietoturva-aukkoja.
Tutkielman viimeisessä osiossa ennen yhteenvetoa käsittelen omaa empiiristä tutkimustani aiheesta. Oman tutkimukseni perusteella havaitsin Copilotin hyvät koodivasteet omiin skenaarioihini. Pientä vaihtelevuutta eri (luonnollisten) kielien väillä oli myös havaittavisssa. Tämä tutkielma tarjoaa suuntaa antavan kuvan siitä, miten Copilot voi ja voisi oikeasti hyödyttää ohjelmoijia ottaen kuitenkin huomioon mahdolliset riskit.
The study is divided into four parts. Following the introduction, the first part covers the basics of AI and programming. The second part analyzes the results of published studies and the operating model of GitHub Copilot. The third part delves into my own experience with Copilot as a programming tool. The final part analyzes the findings as a whole.
Based on these studies, a preliminary assessment was made regarding Copilot’s competence, security risks, and benefits. Copilot tended to produce erroneous code containing security risks in just under half of the responses. However, in terms of competence, it was able to compete well against younger programmers. While Copilot as a tool speeds up and enhances a programmer’s workflow, it does not replace it. There are significant risks associated with using Copilot, especially if the user cannot identify potential security vulnerabilities in the code.
In the final section of the thesis, before the conclusion, I discuss my own empirical research on the topic. Based on my own research, I observed good code responses from Copilot in my scenarios. There was also some variability noticed across different (natural) languages. This thesis provides a preliminary insight into how Copilot can actually benefit programmers while considering potential risks.