Osaatko määritellä?

18. huhtikuuta 2023 kirjoittaja
Aki Anttila
| Ei vielä kommentteja

Kymmenisen vuotta sitten alettiin puhua verkkolaitteiden ohjelmoinnista laajemmin. Tuolloin ajattelin, että CLI on pian kuollut ja kaikki sen opetteluun käytetty aika ja vaiva on hukkaan heitettyä. Pakko myöntää, että olin väärässä - taas. Edellinen kerta oli, kun kirjoittelin muistaakseni 1996 tai 1997 Tietokone-lehteen kolumnin, jossa ennustin IPv6:n olevan valtavirtaa muutaman vuoden kuluessa. Kuten IPv6, ei verkko-ohjelmointikaan ottanut tulta allensa siinä määrin, kuin se olisi voinut tehdä. Tokihan edistyneemmät asiantuntijat ovat skriptanneet kautta aikojen, mutta laajempaa valtavirtaa siitä ei ole tullut. Hardcore IP/CLI-henkilö ei ole ohjelmoinnista kiinnostunut noin yleisellä tasolla. Mutta tarvitseeko edes olla?

Viimeisen kuukauden maailmalla on kohkattu melko paljon Chat-GPT-tekoälystä. Sen povataan muuttavan kokonaan työn tekemistä. Uusin GPT-4 näyttäisi osaavan melkoisia asioita - se läpäisee erilaisia koulutestejä liehuvin lipuin, koodailee pelejä, kirjoittaa runoja ja rakentaa web-sivuja paperilapulle piirretyn luonnoksen pohjalta. Tietotekniikka-asiantuntijoiden ja erityisesti verkko-ohjelmoinnin näkökulmasta sen mielenkiintoisimpiin ominaisuuksiin kuuluu kuitenkin mahdollisuus tehdä koodia kuvauksen, eli määrityksen perusteella.

Perinteisessä ohjelmistonkehityksessä koodin tekeminen tapahtuu tyypillisesti projekteissa. Olipa se sitten perinteinen vesiputousmalli tai sitten modernimpi ketterä kehittäminen. Kummassakin erittäin tärkeä askel tapahtuu alkuvaiheessa eli siinä kohtaa, kun tilaajalta kysytään, mitä oikeastaan halutaan tehtäväksi. Kun moninaisten määrittelyiden kautta on saatu aikaiseksi yhtenäinen näkemys lopputuloksesta ja sinne pääsemisen askeleista, voidaan ruveta koodaamaan. Toki kussakin projektimallissa vähän omalla prosessilla, mutta tavoitteena kummassakin on toimiva ohjelmisto, joka on tilaajan toiveiden ja tarpeiden näköinen. Määrittelyn vaikeuksista ja lopputuloksista on netti pullollaan meemejä, kuten alla oleva sarjakuva:

Miten määritys sitten liittyy GPT-tekoälyyn, verkko-ohjelmointiin ja sinuun? Siten, että saadaksesi GPT:n tekemään haluamaasi koodia, tulee sinun pystyä kertomaan kohtuullisen yksityiskohtaisesti, mitä oikeastaan haluat tehdä. Otetaan vaikkapa niinkin yksinkertainen asia kuin hallintakäyttöjärjestelmän kautta ajettava Python-skripti, jonka tarkoituksena on kaivaa show-komennosta kiinnostavat asiat ja tehdä niistä listaus. Helppo määrittely olisi; "Hei GPT, tee Python-skripti, joka ajaa kytkimissä komennon show vlan ja listaa sen jälkeen, mitkä portit on konfiguroitu mihinkin VLANiin." Mutta onko tämä oikein?

Ensinnäkin voi olla, että saman laitevalmistajan laitteissa on eri sukupolvissa vähän erilainen show-komennon tuloste. Eli sen osalta pitäisi vähintäänkin osata kertoa, mikä laitesukupolvi ja/tai käyttöjärjestelmäversio on kyseessä. Sitten on hallintakäyttöjärjestelmä. Koodia tehdessään GPT olettaa jotain, esimerkiksi, että käytössä on tietty Python-versio ja tietynlainen ympäristö. Ja koska hallintakäyttöjärjestelmä voi olla hyvinkin vanha, voi olla, että GPT:n tekemä koodi ei ole siinä toimiva. Ainakaan suoralta kädeltä. On toki totta, että todellinen verkko-ohjelmointi perustuu esimerkiksi Netconf/JSON-yhdistelmään ja siinä kaikki asiat ovat määrämuotoisia. Mutta näitä tukevia laitteita ei vielä ole joka paikka pullollaan, joten usein joudutaan vielä turvautumaan vanhoihin toimintamalleihin.

Ja sitten on toki "listaa sen jälkeen". Listaa miten? Kaikki tiedot putkeen ilman välimerkkejä? Pilkuilla erotettuna? Välilyönnillä erotettuna? Jokainen tieto omalla rivillään? Jos koodia tekisi itse, tämän tyyppiset asiat tulisivat suoraan selkärangasta. Mutta (ainakaan toistaiseksi) GPT ei ole ajatustenlukija, joten kaikki, mitä haluat siltä, tulee sille erikseen kertoa. Ja sama tulee pätemään kaikkiin muihinkin älykkäisiin koodigeneraattoreihin.

Mitä tämä sitten tarkoittaa tietoliikenneammattilaiselle? Edelleenkin tarvitaan osaajia, jotka tuntevat erilaiset CLI:t, käyttöjärjestelmäversiot, hallintajärjestelmät ja eri laitevalmistajat. Mutta siltikin toiminnan tehostamiseen voidaan ajatella koodin tekemistä tekoälyn avulla. Jolloin eteen tulee määrittelytarve. Mitä paremmin, kompaktimmin ja tehokkaammin ammattilainen osaa tehdä halutun koodinpätkän määrityksen, sen valmiimpaa koodi on ajettavaksi saman tien. Kaikki siis määrittelyn perusteet -kurssille pikapuolin!

Kirjoittaja on Reformo Networksin teknologiajohtaja.


Aki Anttila 18. huhtikuuta 2023
Jaa tämä kirjoitus
Arkistoi
Kirjaudu sisään jättääksesi kommentin