Liigu edasi põhisisu juurde

Programmeerimine ja vaibkoodimine: kuidas tehisaru loodud rakenduses vigu üles leida?

Kirsike Kukk-Viiol
Täna, 27. aug

Tehisintellekt on teinud programmeerimise kättesaadavamaks kui kunagi varem. Enam ei jää tarkvaraarendajaks hakkamine aastatepikkuse õppimise ja kogemuste taha. Tehisaru ehk AI abil saab igaüks luua veebilehti, rakendusi ja automaatseid tööriistu lihtsalt vestlusaknas. Milliseid ohte see endas peidab, seda selgitab lähemalt Kirsike Kukk-Viiol Veebikoolist.

See on suur muudatus, et ideest toimiva lahenduseni võib jõuda juba mõne tunniga. Samas peitub selles ka oht. See, et rakendus esimesel katsel töötab, ei tähenda veel, et see on hästi tehtud. Nimelt suudab AI kiiresti luua nähtava tulemuse, kuid rakenduse sisemine loogika võib olla üsna habras. Esimese muudatuse, suurema andmemahu või uue kasutaja lisandumise järel võivad ilmneda probleemid, mida esialgu näha ei olnud.

Kõik näib esialgu ilus ja töötav

Tehisintellekti kasutamine ongi väga hea lahendus esimese töötava versiooni loomisel. Sa kirjeldad, mida soovid ning vaid mõne hetkega ilmub ekraanile nupp, sisestusvorm, tabel või isegi terve rakendus. Esmapilgul tundubki kõik toimivat täpselt nii, nagu lootsid.

Tegelikud probleemid tulevad välja aga alles siis, kui rakendust hakkavad kasutama päris inimesed.

Kasutaja võib vajutada nuppe teises järjekorras, jätta kohustusliku välja täitmata, sisestada ootamatu väärtuse või teha mitu tegevust korraga. Need on täiesti tavalised olukorrad, kuid just sellistes kohtades hakkavad läbimõtlemata lahendused lagunema.

Vaibkoodimise suurim risk ei seisne selles, et AI kirjutab alati halba koodi. Palju suurem oht on see, et masin loob keerulise lahenduse, mille nõrgad kohad ei paista esialgu kuidagi välja. 

Rakendus võib töötada, kuid selle loogika võib olla tarbetult keeruline või põhineda valedel eeldustel.

Millised on levinuimad probleemid?

Vaibkooditud rakendustes kohtab sageli järgmisi muresid:

  • rakendus töötab ainult ideaalolukorras,
  • andmete jaoks kasutatakse liiga lihtsat või ebasobivat lahendust,
  • veateated viitavad valele probleemile,
  • väikese muudatuse jaoks lisab AI palju uut keerukust,
  • rakendus muutub aeglaseks, kui kasutajate või andmete hulk kasvab.

Tänapäeva arendaja töö ei seisne enam ammu ainult koodi kirjutamises. Sama oluline on hoida süsteemi lihtsa, loogilise ja hallatavana. AI võib seda keerukust kasvatada üllatavalt kiiresti, kui keegi ei kontrolli, mida masin teeb ja miks seda teeb.

Miks tulevad vead välja alles hiljem?

Üks levinumaid eksiarvamusi on see, et kui rakendus töötab täna hästi, töötab see hästi ka homme.

Sageli testitakse uut lahendust väikese hulga andmete ja ühe kasutajaga. Sellistes tingimustes võib kõik tunduda kiire ja töökindel. Probleemid hakkavad ilmnema alles siis, kui andmeid koguneb rohkem või mitu inimest kasutab rakendust korraga.

Näiteks võib AI valida andmete salvestamiseks lahenduse, mis sobib väikese projekti jaoks, kuid ei ole mõeldud suuremale rakendusele. Piltlikult öeldes võib tehisaru kasutada andmebaasi nii, nagu töötaks lihtsa CSV-failiga. Väikese mahu juures ei pruugi see mingeid probleeme tekitada, suurema koormuse all muutub kõik aeglaseks või hakkab tõrkeid andma.

See ei tähenda, et iga väikese tööriista jaoks oleks vaja just keerulist arhitektuuri. Küll aga tasub juba alguses mõista, kus andmed asuvad, kuidas neid muudetakse ja mis juhtub siis, kui mitu kasutajat teevad sama tegevust ühel ajal.

Mida varem nendele küsimustele mõelda, seda vähem tuleb hiljem tegeleda vigade parandamisega.

Tehisaru ei leia alati omaenda vigu

Üks AI kõige petlikumaid omadusi on enesekindlus. Kui küsid, kas kõik on korras, saad üsna tihti väga veenva vastuse. Kui ütled, et midagi ei tööta, vabandab tehisintellekt, pakub paranduse ja kinnitab, et probleem on lahendatud.

Paraku ei tähenda enesekindel vastus alati seda, et leitud on see õige põhjus.

Nagu inimestel, on ka kunstmõistusel pimenurgad. Kui küsid liiga üldiselt, võib see hakata parandama sümptomeid, mitte tegelikku probleemi. Halvemal juhul kulub palju aega täiesti vale vea otsimisele.

Hea näide on failide töötlemine.

Faili ühest kohast teise liigutamine on enamasti kiire tegevus, sest operatsioonisüsteem muudab lihtsalt faili asukoha viidet. Faili kopeerimine tähendab aga, et kogu faili sisu kirjutatakse uuesti. Suurte failide puhul võib see olla märksa aeglasem.

Kui AI paneb rakenduse sama faili töötlemise käigus tegema mitu tarbetut koopiat, muutub rakendus aeglaseks isegi siis, kui ülejäänud kood on korras.

Kui küsid lihtsalt: „Miks mu rakendus on aeglane?”, võib tehisaru pakkuda kümneid võimalikke põhjuseid, ilma et jõuaks tegeliku probleemini. Kui küsid aga konkreetsemalt: „Kas faili liigutatakse või kopeeritakse?”, jõutakse sageli õige vastuseni palju kiiremini.

See ongi koht, kus programmeerimisest arusaamine annab suure eelise. Sa ei pea suutma kogu süsteemi ise kirjutada. Piisab sellest, et oskad kahtlustada õiget kohta ja esitada täpse küsimuse.

Mida konkreetsem on küsimus, seda suurem on tõenäosus, et tehisintellekt leiab ka tegeliku vea.

Ära piirdu käsuga "paranda see ära"

Üks levinumaid vigu AI kasutamisel on anda väga üldine käsk: "Paranda see ära".

Esmapilgul tundub see mugav. Tegelikult paneb taoline soov aga AI oletama, milles probleem võib olla. Sageli muudetakse siis korraga mitut asja, parandatakse küll üks viga, kuid tekitatakse asemele järgmine.

Nii võibki sattuda lõputusse parandamiste jadasse, kus iga uus muudatus lahendab ühe probleemi, kuid lõhub ära midagi muud.

Palju tõhusam on kõigepealt aru saada, kuidas rakendus töötab. Selle asemel, et kohe parandamist küsida, tuleks AI-l lasta selgitada, mis rakenduses toimub. Küsi nii kaua, kuni suudad töövoogu ise ette kujutada. Alles seejärel tuleb hakata muudatusi tegema.

Mida AI-lt küsida?

Küsi tehisintellektilt järgmisi küsimusi:

  • Kirjelda samm-sammult, mis juhtub pärast seda, kui kasutaja sellele nupule vajutab.
  • Kust need andmed tulevad ja kuhu need salvestatakse?
  • Millised vead võivad selles töövoos tekkida?
  • Mis juhtub siis, kui kasutaja jätab selle välja tühjaks?
  • Mis juhtub siis, kui kaks kasutajat teevad seda korraga?
  • Milline osa koodist käivitub faili üleslaadimisel?
  • Kas siin toimub faili kopeerimine või liigutamine?
  • Kas see muudatus mõjutab ainult soovitud funktsiooni või muudab ka midagi muud?

Selliste küsimustega suunad AI õigesse kohta. Selle asemel et kogu rakendust pimesi läbi uurida, saab tehisaru keskenduda konkreetsele probleemile.

Programmeerimine ei tähenda selles kontekstis iga koodirea läbivaatamist. Olulisem on mõista tervikpilti. Kas AI muudab õiget kohta? Kas muudatus on põhjendatud? Kas lahendus tundub loogiline või muutub süsteem hoopis keerulisemaks?

Koodi ei pea lugema nagu romaani

Esimest korda koodi nähes võib see tunduda täieliku segadusena. Erivärviline tekst, sulud, ingliskeelsed sõnad, veateated ja tundmatud mõisted mõjuvad esialgu hirmutavalt.

Tegelikkuses ei loe ka kogenud arendajad enamasti kogu koodi algusest lõpuni. Nad otsivad mustreid.

Kui rakendus ei tööta, otsitakse neid kohti, mis on konkreetse probleemiga seotud ja vaadatakse, kas loogika peab paika.

Sageli piisab juba sellest, kui märkad vastuolu. Näiteks võib andmebaasiühendus ebaõnnestuda, kuid kasutajale kuvatakse hoopis teade, et tema sisselogimise seanss aegus. Need kaks sündmust ei pruugi omavahel üldse seotud olla.

Sellisel juhul piisab küsimusest: "Miks logitakse kasutaja välja, kui tegelik probleem on andmebaasis?"

Selline küsimus aitab AI-l keskenduda õigele kohale ning viib lahenduseni palju kiiremini kui üldine käsk "otsi viga üles".

Kõige väärtuslikum oskus ei ole kõike teada. Väärtuslik on märgata, kui miski tundub ebaloogiline, ja küsida selle kohta täpsustavaid küsimusi.

Kui arendad veebirakendusi JavaScriptis, tasub kasutada ka MDN-i õppematerjale. Seal on põhimõisted ja näited selgitatud praktiliselt ning arusaadavalt lahti. Need aitavad mõista, miks AI kirjutatud kood töötab just nii, nagu see töötab.

Kolm programmeerimise ideed, mida tuleb mõista

Vaibkoodijana ei pea sa alustuseks pähe õppima kümneid programmeerimiskeeli ega keerulisi tehnilisi termineid. Piisab sellest, kui saad aru mõnest põhimõttest, mille peale on ehitatud peaaegu kõik rakendused.

Kui need kolm ideed muutuvad tuttavaks, hakkab ka AI kirjutatud kood palju loogilisem tunduma.

1. Tingimus (if-lause)

Tingimus tähendab lihtsat otsust.

Kui üks tingimus on täidetud, tehakse üks tegevus. Kui ei ole, tehakse midagi muud.

Näiteks:

  • kui kasutaja on sisse logitud, kuvatakse tema konto;

  • kui kasutaja ei ole sisse logitud, kuvatakse sisselogimisvorm.

Peaaegu iga rakendus koosneb sadadest või isegi tuhandetest sellistest väikestest otsustest.

2. Tsükkel

Tsükkel tähendab kordamist.

Selle asemel, et kirjutada sama tegevus kümme korda, teeb programm ühe tegevuse iga elemendi kohta järjest.

Näiteks võib süsteem võtta kõik tellimused, arvutada iga tellimuse summa ja kuvada tulemused tabelis. Sama loogika kehtib toodete, klientide, failide ja nimekirjade puhul.

3. Funktsioon

Funktsioon on üks kindel tegevus, millele on antud nimi.

Näiteks võivad funktsioonid olla

  • arvuta hind;
  • salvesta vorm;
  • saada e-kiri;
  • muuda tekst suure algustähega.

Selle asemel et sama koodi iga kord uuesti kirjutada, kutsub programm lihtsalt vajaliku funktsiooni välja.

Kui mõistad tingimusi, tsükleid ja funktsioone, ei paista kood enam juhusliku märgijadana. Sa hakkad nägema otsuseid, kordusi ja tegevusi, millest kogu rakendus koosneb.

Enamik programme ei ole midagi enamat kui hästi organiseeritud tingimused, tsüklid ja funktsioonid.

Andmebaasid ei ole nii keerulised, kui esmapilgul tundub

Paljude jaoks kõlab sõna andmebaas keeruliselt, kuigi selle põhimõte on üsna lihtne.

Heaks võrdluseks on Excel.

Sul on tabelid, read ja veerud. Iga rida kirjeldab üht objekti ning iga veerg sisaldab selle kohta kindlat infot. Päris andmebaasid on küll palju võimekamad kui Excel, kuid põhiidee on sama.

Kõige lihtsamal tasemel koosnevad andmed tavaliselt järgmistest tüüpidest:

  • Numbrid, näiteks hind, kogus või vanus.
  • Tekst, näiteks nimi, e-posti aadress või tootekirjeldus.
  • Nimekirjad, näiteks ostukorvi lisatud tooted.
  • Seotud andmekogud, kus mitu väärtust kuuluvad kokku.

Kui AI räägib tabelitest, kirjetest või seostest, ei räägi see enamasti millestki müstilisest. Tehisaru kirjeldab lihtsalt seda, kuidas andmed on omavahel organiseeritud.

Sellest arusaamine aitab palju paremini hinnata ka AI pakutud lahendusi. Kui tead, kus andmed paiknevad ja kuidas need omavahel seotud, on lihtsam märgata ka kohti, kus midagi võib valesti minna.

Andmebaas ei ole must kast. See on korrastatud viis andmete hoidmiseks ja nende vahel seoste loomiseks.

Õpi katsetades  

Paljud inimesed ütlevad esimese tehnilise probleemi juures: „Ma ei ole tehniline inimene.”

Enamasti ei ole see teadmiste puudumine, vaid mõtteblokk. Loogika ei teki definitsioone pähe õppides, vaid katsetades.

Kui vajutad nuppu, näed tulemust ja proovid seejärel midagi muuta, hakkad üsna kiiresti märkama mustreid. Just nii õpitakse ka programmeerimist.

Hea näide on visuaalsed loogikaülesanded.

Kujuta ette, et ekraanil on mõned kujundid ning nende all mitu nuppu. Iga nupp teeb kindla tegevuse: muudab kujundi suuremaks, pöörab järjekorra ümber või jagab ühe terviku väiksemateks osadeks.

Alguses vajutad lihtsalt nuppe ja vaatad, mis juhtub. Mõne aja pärast hakkad märkama seaduspärasusi.

Saad aru, et iga nupp täidab kindlat ülesannet. Sisuliselt on need samad funktsioonid, millest koosneb ka päris programm.

Hiljem, kui tuleb ette näiteks nimede töötlemine – ees- ja perekonnanime eraldamine, suure algustähe lisamine või teksti ühendamine –, tundub loogika juba tuttav. Oled sama mõttemudelit varem kasutanud, lihtsalt teises vormis.

Nii toimub ka päris arendamine.

Sa teed ühe muudatuse, vaatad tulemust, saad tagasisidet ja proovid uuesti. Kogemus ei teki sellest, et kõik on kohe selge. Kogemus tekib sellest, et oled näinud piisavalt palju erinevaid olukordi ja õppinud neist mustreid ära tundma.

Tehisaru ei asenda programmeerimisest arusaamist

Tehisintellekt muudab rakenduste loomise järjest lihtsamaks, kuid see ei tähenda, et programmeerimisest arusaamine muutuks vähem oluliseks. Mida paremini mõistad, kuidas rakendused töötavad, seda teadlikumalt oskad ka AI-d kasutada ning kindlamaid lahendusi ehitada.

Kui soovid neid teadmisi süsteemselt omandada, tutvu Veebikooli Programmeerimise õpiprogrammiga. See on mõeldud ettevõtjatele, spetsialistidele, vaibkoodijatele ja kõigile teistele, kes soovivad mõista programmeerimise loogikat ning kasutada AI-d teadlikumalt.

Kirsike Kukk-Viiol

Veebikool on veebipõhine õppeplatvorm, mis pakub praktilisi e-kursuseid ettevõtluse ja turunduse teemadel. Keskendutakse oskustele, mida saab kohe päriselus või äris rakendada.

Kasutajad kes lugesid seda artiklit lugesid ka neid

sisu programmeerimine kodulehe tegemine
12 soovitust: kuidas küsida ChatGPT-lt õigeid küsimusi?
Arendus kodulehe tegemine veebilehtede arendamine veebilehed
Millest kujuneb kodulehe tegemise hind?
Wordpress äri kodulehe tegemine
8 tehisintellekti moodulit WordPressile, mis panevad veebi ise tööle
Veebileht Turvalisus kodulehe haldamine küberturvalisus veebilehtede arendamine
7 ohumärki, kui ettevõtte digiturvalisus pole nii korras, kui arvad
Disain kodulehe tegemine kasutajakogemus
Mis värvi on hea veeb? Ekspert soovitab, kuidas luua ideaalne värvipalett kodulehele
Veebimajutus on Facebookis. Sina oled kah.
Saame sõpradeks? Meil on Sulle palju rääkida, küllap Sul meilegi. Teeme ära?
fox-head fox-head
Veebimajutus logo
Ka veebis tuleb targalt tegutseda. Eriti veebis!
Veebimajutuse 28 000 klienti rääkisid ja meie kuulasime - oleme teie vajaduste ning tagasiside põhjal loonud blogi, milleta ei saa hakkama ükski edukas e-ärimees. Eesti tippkirjutajad toovad Sinuni värskeimad nipid, uudised ja nõuanded. Ükski trend ei jää saladuseks ning väljakutse ületamatuks!
Klienditeenindus
Veebimajutus logo