GitHub Copilotin tuottama ohjelmakoodi on kerännyt viime aikoina kritiikkiä. Sovelluskehittäjät ovat huomanneet, että tekoälyllä tuotettu koodi ei olekaan aina ihan täydellistä. Tämä ei varmastikaan tule yllätyksenä niille, jotka ovat käyttäneet tekoälyä jo vuosien ajan sovelluskehityksen tukena.

Jutun juju on siinä, että nykypäivän tekoäly ei ota vastuuta tuottamastaan ohjelmakoodista. Se auttaa ihmisiä tuottamaan toimivaa koodia, mutta se ei siivoa jälkiä, kun jotain menee pieleen. Ihmisten vastuulle jää huomata koodissa piilevät virheet ja korjata ne. Korjaaminen on sitä hankalampaa, mitä myöhemmässä vaiheessa virheet havaitsee.

Tekoälyn tuottaman koodin hyödyntäminen on aika samanlaista puuhaa kuin koodin kopioiminen Stack Overflow'sta. Kaikki menee hyvin, jos koodin toiminnan ymmärtää ennen sen ottamista käyttöön. Kopioiminen säästää aikaa, kun kehittäjän ei tarvitse itse tuottaa kaikkea tyhjästä. Monesti turhat ajatusvirheetkin jäävät tekemättä, kun joku on miettinyt asian jo kertaalleen.

Koodin kopioiminen sokkona taas johtaa helposti siihen, että kukaan tiimin jäsenistä ei ymmärrä, mitä koodin on oikeastaan tarkoitus tehdä. Koodista tulee musta laatikko, johon kukaan ei uskalla koskea. Lopulta toiminnallisuus täytyy jossain vaiheessa koodata kokonaan uudelleen sellaiseksi, että siitä saa jotain selvää.

Tekoäly on parhaimmillaan rutiiniluonteisissa tehtävissä. Se on hyvä lisäämään vaikkapa uusia tietokenttiä sellaisiin tietorakenteisiin, joissa on jo ennestään muita kenttiä. Ohjelmoijan tarvitsee vain käydä läpi kaikki ne kohdat, joissa tietorakennetta on käytetty, ja tekoäly osaa ehdottaa uuden kentän lisäämistä oikeisiin paikkoihin.

Toisaalta tekoäly on myös hyvä tuottamaan vakiomuotoisia ratkaisuja sellaisiin ongelmiin, jotka on ratkaistu jo aiemmin useaan kertaan. Se osaa esimerkiksi kirjoittaa tietokantakyselyt automaattisesti valmiiksi pelkän funktionimen perusteella. Jos funktion nimessä puhutaan tietueen poistamisesta, tekoäly osaa tehdä sille sopivan DELETE-kyselyn, ja niin edelleen.

Ratkaisut saattavat kuitenkin mennä helposti vähän pieleen tilanteesta riippuen. Tekoäly saattaa esimerkiksi tuottaa DELETE-kyselyn sijasta UPDATE-­kyselyn, joka asettaa ”deleted”-kentän arvoksi ”true”. Koodaajan pitää olla tarkkana, että koodi tekee oikean asian ja painaa heti Undo-nappia, jos ehdotettu ratkaisu meni pieleen. Jälkikäteen tällaisten mokien etsiminen voi olla todella hankalaa, jos niihin ei kiinnitä huomiota koko ajan.

Ehkä vaarallisin tapa käyttää tekoälyä apuna koodaamisessa on antaa sen kirjoittaa kokonaisia algoritmeja tyhjästä. Algoritmi voi olla esimerkiksi funktio, joka etsii kuukauden ensimmäisen maanantain päivämäärän. GitHub Copilot tarjoaa tällaisiin ongelmiin vaihtelevan tasoisia valmiita ratkaisuja, joiden toimivuus saattaa riippua käyttäjän kotimaasta, karkauspäivistä, kesäajasta ja muusta sellaisesta. Ratkaisu toimii tänä vuonna mutta ei enää seuraavana.

Hiljalleen koodaajalle syntyy tuntuma siihen, millaiset tekoälyn tekemät ehdotukset saattavat olla pahasti pielessä ja millaiset ovat todennäköisemmin oikein. Yksinkertaisetkin ehdotukset pitää muistaa tarkastaa. Yleensä siihen riittää aika pintapuolinen koodin selaaminen läpi. Jos käytössä on tyypitetty ohjelmointikieli ja Visual Studio Code tai vastaava IDE, editori yleensä valittaa selkeistä virheistä.

Rutiinihommissa käy usein niinkin, että tekoäly tuottaa luotettavampia ratkaisuja kuin koodaaja itse. Kun koodia leikkaa ja liimaa ympäriinsä, niin ajatuksissaan saattaa helposti unohtaa tehdä jonkin pienen toistuvan muutoksen joka paikkaan. Kielimalliin pohjautuva tekoäly taas on hyvä tekemään joka kerta saman muutoksen samalla tavalla.

Viime kädessä kysymys on kuitenkin siitä, että ihmisen täytyy kantaa vastuu tekoälyn tuottamasta koodista. Tekoäly on loppujen lopuksi vain älykäs näppäimistö, joka tuottaa koodia hieman ihmistä tehokkaammin. Tekoälyä on turha syyttää virheistä, ja vaikka se osaakin ehkä auttaa niiden korjaamisessa, ihmisen on kuitenkin tätä korjaamista ensin tajuttava pyytää.

QOSHE - Tekoäly ei omista koodia - Kenneth Falck
menu_open
Columnists Actual . Favourites . Archive
We use cookies to provide some features and experiences in QOSHE

More information  .  Close
Aa Aa Aa
- A +

Tekoäly ei omista koodia

21 14
18.03.2024

GitHub Copilotin tuottama ohjelmakoodi on kerännyt viime aikoina kritiikkiä. Sovelluskehittäjät ovat huomanneet, että tekoälyllä tuotettu koodi ei olekaan aina ihan täydellistä. Tämä ei varmastikaan tule yllätyksenä niille, jotka ovat käyttäneet tekoälyä jo vuosien ajan sovelluskehityksen tukena.

Jutun juju on siinä, että nykypäivän tekoäly ei ota vastuuta tuottamastaan ohjelmakoodista. Se auttaa ihmisiä tuottamaan toimivaa koodia, mutta se ei siivoa jälkiä, kun jotain menee pieleen. Ihmisten vastuulle jää huomata koodissa piilevät virheet ja korjata ne. Korjaaminen on sitä hankalampaa, mitä myöhemmässä vaiheessa virheet havaitsee.

Tekoälyn tuottaman koodin hyödyntäminen on aika samanlaista puuhaa kuin koodin kopioiminen Stack Overflow'sta. Kaikki menee hyvin, jos koodin toiminnan ymmärtää ennen sen ottamista käyttöön. Kopioiminen säästää aikaa, kun kehittäjän ei tarvitse itse tuottaa kaikkea tyhjästä. Monesti turhat ajatusvirheetkin jäävät tekemättä, kun joku on miettinyt asian jo........

© Tivi


Get it on Google Play