Umjetna inteligencija potpuno mijenja prirodu bugova
Alati za kodiranje rješavaju osnovnu sintaksu, ali uvode složene arhitektonske greške koje je iznimno teško otkriti i ispraviti.
Kada danas pišete kod uz pomoć suvremene umjetne inteligencije, gotovo je nemoguće zaboraviti točku sa zarezom, krivo napisati naziv osnovne varijable ili ostaviti nezatvorenu zagradu. Alati za automatsko generiranje koda postali su nevjerojatno vješti u brzom ispisivanju stotina linija naizgled savršenog i ispravno formatiranog koda. Međutim, to nipošto ne znači da suvremeni softver postaje pouzdaniji, stabilniji ili sigurniji za krajnjeg korisnika. Umjesto jednostavnih, očitih grešaka koje smo nekada svakodnevno radili, sada se iznenada suočavamo s potpuno novom generacijom kompleksnih softverskih problema. Ti su problemi znatno suptilniji, složeniji i potencijalno mnogo opasniji za dugoročno održavanje velikih sustava. Rješavanje banalnih grešaka u tipkanju zamijenjeno je stvaranjem kompleksnih logičkih labirinata u kojima se i najiskusniji inženjeri lako mogu izgubiti. Generiranje velikih količina koda postalo je toliko jednostavno, dostupno i brzo da često potpuno zaboravljamo koliko je zapravo važno razumjeti baš svaki pojedini redak koji je automatski dodan u naš projekt.
Prevladavajuća priča
Većina današnjih tehnoloških entuzijasta, industrijskih analitičara i voditelja softverskih projekata snažno vjeruje i otvoreno tvrdi da napredni alati temeljeni na umjetnoj inteligenciji dramatično smanjuju ukupan broj prisutnih softverskih pogrešaka. Njihova osnovna logika je prilično jednostavna i na prvi pogled zaista vrlo uvjerljiva: ako snažan stroj samostalno piše kod umjesto čovjeka, automatski i bezbolno eliminiramo ljudski faktor umora, svakodnevne nepažnje i najčešće trivijalne propuste. Prema toj široko prihvaćenoj i popularnoj priči, suvremeni programeri će uskoro trošiti znatno manje svog radnog vremena na mukotrpno traženje sitnih grešaka u postojećem kodu, a mnogo više na samo kreativno osmišljavanje novih, inovativnih funkcionalnosti i rješavanje stvarnih poslovnih problema svojih korisnika.
U takvom idealiziranom, gotovo utopijskom scenariju, cjelokupni proces razvoja softvera postaje neprekidna traka brzih inovacija, gdje pametni strojevi preuzimaju dosadni, repetitivni dio posla, dok ljudi ostaju isključivo kreativni direktori cijelog procesa. Ovaj privlačan narativ stvara iznimno velika očekivanja u cjelokupnoj tehnološkoj industriji, hrabro obećavajući drastično smanjenje troškova razvoja i neusporedivu brzinu isporuke potpuno novih digitalnih proizvoda na globalno tržište.
Zašto je ta priča pogrešna ili nepotpuna
Ovakvo izrazito optimistično i pomalo naivno viđenje situacije potpuno ignorira jednu ključnu, neospornu činjenicu: alati temeljeni na umjetnoj inteligenciji zapravo nimalo ne razumiju stvarni, širi arhitektonski kontekst složenog sustava u kojem trenutno rade. Oni su u svojoj osnovi samo vrlo napredni generatori teksta, iznimno složeni statistički modeli koji su mukotrpno obučeni na ogromnim količinama postojećeg, povijesnog koda. Rezultat njihovog brzog rada je kod koji izgleda iznimno logično, smisleno i ispravno na uskoj mikrorazini, ali vrlo često potpuno promašuje dugoročne arhitektonske zahtjeve i stvarne, specifične potrebe određenog projekta.
Bugovi na koje danas svakodnevno nailazimo više uopće nisu očite sintaktičke greške koje prevoditelj ili linter odmah i bez greške zaustave prilikom prvog pokretanja programa. Umjesto toga, suočavamo se s dubokim semantičkim, logičkim i strukturalnim pogreškama koje su nevjerojatno vješto skrivene u brojnim slojevima naizgled apsolutno "savršenog" generiranog koda. Pronalaženje, dubinsko razumijevanje i konačno otklanjanje ovakvih specifičnih, skrivenih grešaka zahtijeva znatno više vremena, energije i ogromnog kognitivnog napora nego obično ispravljanje trivijalnog tipfelera. Programer sada mora djelovati kao pažljivi detektiv koji uporno pokušava dešifrirati tok misli stroja koji zapravo uopće ne misli, već samo statistički predviđa sljedeći logičan niz znakova. Zbog toga se dragocjeno vrijeme koje smo nekada gubili na pisanje dosadnog koda sada nepovratno gubi na beskrajno dešifriranje složenih, generiranih struktura koje apsolutno nitko u cijelom razvojnom timu u potpunosti ne razumije.
Posljedice u stvarnom svijetu
Ova duboka, tektonska promjena u samom načinu razvoja suvremenog softvera najviše pogađa mlađe programere i neiskusne početnike u industriji. Oni se često pretjerano i nekritički oslanjaju na automatski generirani kod kako bi što brže završili zadane zadatke, čime nažalost postupno gube jedinstvenu priliku i sposobnost za dubinsko razumijevanje arhitekture sustava, osnovnih programskih koncepata i najboljih inženjerskih praksi. Ako alat uvijek poslušno nudi gotovo rješenje na pladnju, potpuno nestaje stvarna potreba za samostalnim rješavanjem problema iz temelja, što dugoročno i nepopravljivo šteti razvoju prave inženjerske stručnosti.
S druge strane, iskusni softverski inženjeri sve više svog dragocjenog vremena provode isključivo kao rigorozni, umorni recenzenti koda. Njihov primarni posao polako, ali sigurno postaje samo čitanje tuđeg generiranog koda i uporni pokušaj shvaćanja zašto je umjetna inteligencija odabrala baš određeni, možda potpuno suboptimalni pristup rješavanju određenog problema. Tvrtke koje naivno očekuju trenutačno, magično ubrzanje cjelokupnog procesa razvoja mogle bi se uskoro suočiti s vrlo ozbiljnim, dugoročnim problemima u samom održavanju postojećeg koda. Ono što se u industriji stručno naziva "tehnički dug" sada nastaje znatno brže, masovnije i nevidljivije nego ikada prije u cijeloj povijesti razvoja softvera. Gomilanje nejasnog, strojno generiranog koda može u konačnici dovesti do potpune paralize projekata, gdje svaka, pa i najmanja promjena zahtijeva temeljitu reviziju ogromnih količina potpuno nepoznatog koda.
Završni stav
Umjetna inteligencija definitivno neće potpuno izbrisati softverske greške iz naših života, već će ih samo dodatno unaprijediti i učiniti znatno složenijima za otkrivanje. Da bismo uspješno izgradili pouzdane, stabilne i istinski sigurne softverske sustave u nepredvidivoj budućnosti, moramo hitno prestati tretirati umjetnu inteligenciju kao svemogući čarobni štapić koji samostalno rješava sve probleme. Umjesto toga, moramo je konačno početi koristiti isključivo kao moćan, ali iznimno nesavršen alat koji zahtijeva strog ljudski nadzor, kritičko razmišljanje i duboko tehničko razumijevanje baš svakog napisanog retka koda.
Komentar objavljen na portalu Umjetna Inteligencija Blog by ShtefAI, autor: Shtef



