Uvodnik: ChatGPT i programiranje
Među brojnim primenama nove generacije veštačke inteligencije sve češće se pominje i programiranje – hoće li ChatGPT i njegovi naslednici moći da zamene programere, najpre na elementarnom nivou, a kasnije i potpuno? U prvi mah mi se činilo da se radi o praznim pričama, ali kada sam probao, shvatio sam da je ChatGPT bolji programer nego pisac. A prilično je dobar pisac…
Nedavno mi je zatrebala neka davna e-mail poruka, radi nastavka konsultantskog posla. Poruku sam slao još krajem devedesetih, preko SezamaPro, mnogo pre nego što sam prešao na Outlook. Bila je zatrpana među 48 gigabajta Sezam PAD-ova, i baš sam se namučio da je lociram. Pade mi na pamet da bih mogao da napišem program koji parsira te PAD-ove, izdvaja e-mail poruke i pretvara ih u EML fajlove, koje onda mogu da uvezem u, recimo, MailStore i tako dobijem portabl arhivu stare pošte, koja omogućava da efikasno pregledam i pretražujem tu (pra)istoriju. A kad se već upuštam u hobi-projekat (možete da ga pratite na dejanristanovic.com/sezampadparse), zašto ne bih naučio i neki novi programski jezik, ko zna kada će mi on biti potreban. Izabrao sam Python.
Odavno nisam učio novi programski jezik, pa sam se pitao kako početi. Nekad bih uzeo knjigu, ali knjige su tako spore… Za divno čudo, najbolji svetski univerziteti, među njima i naš ETF (Odsek za softversko inženjerstvo) su stavili kompletne nastavne materijale na Internet. Predavanja, slajdovi, zadaci… sve je nadohvat ruke. Dakle, mogu to da pokupim ne plaćajući školarinu, da naučim Python i još ne moram da polažem ispit. Savršeno. Što bi rekao Steve Wozniak, tamo gde najpametniji ljudi na svetu rade, vrata su otključana.
Python je zanimljiv jezik, bejzik nove generacije. Beskrajno je glupo što se promenljive ne deklarišu i što se blokovi koda obeležavaju samo uvlačenjem, parametri se čudno prenose u funkcije, pitam se zašto umesto klasične for-next petlje ima one gluposti sa range… Ali dobro.
Lepo je što za sve što vam padne na pamet imate biblioteke koje završavaju posao. Treba mi da raspakujem arhivu? Ima. Da konvertujem kodni raspored? Ima. Da snimim tekst kao EML? Mora biti da ima, ali nešto ne uspevam da pronađem varijantu koja mi odgovara. A nije da nisam tražio. I nije da ne umem da tražim.
Obratio sam se ChatGPT-u i to je bila čarolija. Trenutno mi je napisao potrebnu funkciju. Pa sam ga onda gnjavio da joj doda uključivanje dodatnog fajla u EML, da korektno kodira naša slova, da snimi fajl na drugu lokaciju… Dobio sam perfektnu funkciju, potpuno prilagođenu mojim potrebama. Posle sam se „razmazio“ pa sam ga pitao i zašto se kod učitavanja TEXTPAD-a pogrešno mapiraju YU slova kodirana po rasporedu Računari, kako da promenim vektor za enkodiranje…
Na kraju ovog eksperimenta, zaključio sam da stvari koje znam da uradim treba da radim sam, mnogo mi je lakše da napišem program nego da njemu objašnjavam šta mi treba i da posle diskutujem sa „pomoćnikom“ o stvarima koje mi ne odgovaraju, testiram rešenje i pitam se da li sam nešto propustio. Sa druge strane, ako nešto ne znam, mnogo je lakše da njega pitam nego da tragam po Internetu i da isprobavam razne sumnjive varijante. Sorry Google!
Sve u svemu, mislim da postoje dve mogućnosti. Jedna je veoma povoljna za brojnu programersku populaciju, druga je veoma nepovoljna, a između njih je vrlo tanka linija. U povoljnoj varijanti, programeri su dobili saradnika iz snova. Juniora koji je pročitao sva uputstva, prošao kroz sve sajtove i koji će im uštedeti sate traganja i probanja. Najzad, programiranje je danas postalo „slaganje kockica“, potreban vam je neko da te kockice pronađe. U drugoj varijanti junior će napredovati, naučiti da efikasnije komunicira sa naručiocem posla i učiniti seniora nepotrebnim. Koja od tih varijanti je naša budućnost? Ne znam. Možda i ne želim da znam.