Ekipa iz Microsoftove GitHub divizije upravo je predstavila novu funkciju pod nazivom Copilot koja sama piše kod – kako programeri to ne bi morali da rade.
Istraživači u Microsoftu i drugim instituacijama godinama pokušavaju da nauče kompjutere da pišu kod. Ovaj koncept i dalje treba da zaživi jer programi koji pišu programe do sada nisu uspeli da postignu traženu svestranost. GitHub Copilot je vredan doprinos ovom trudu jer se oslanja na ogromnu količinu koda u različitim programskim jezicima, ali i gotovo beskrajnu Azure cloud kompjutersku snagu.
Kako tvrde iz Microsofta: „GitHub copilot je AI pair programer koji vam pomaže da brže i lakše napišete kod. GitHub Copilot sam dolazi do konteksta iz komentara, koda i pozicije kursora miša, i potom istog trenutka predlaže pojedinačne linije koda, ali i kompletne funkcije“. Kako programeri prihvataju ove promene ili ih odbijaju, model uči i vremenom postaje još složeniji.
Programiranje uključuje smišljanje ideje u vezi sa tim kako nešto treba uraditi, a potom i implementaciju te ideje, a Copilot je, sudeći po Microsoftu, dobar u drugom delu. Copilot podržava gotovo svaki programski jezik, ali je dizajniran kako bi najbolje radio uz JavaScript, Python i TypeScript.
„Ne želite da prolazite kroz kompletnu Twilio API dokumentaciju. Copilot već zna sve te stvari. Veoma je pouzdan u tome“, izjavio je Greg Brockamn, OpenAi ko-osnivač.
A Microsoftov chief technology officer, Kevin Scott je imao priliku da se i sam uveri u ovo iz prve ruke.
„Copilot može bukvalno da me poštedi ronjenja kroz more dokumentacije kako bih dobio alat da uradim nešto što znam da je moguće uraditi, a to je sjajno za produktivnost. Ne mogu ni da vam opišem koliko sam sati izgubio pokušavajući da pronađem pravi način da uradim relativno prozaičnu stvar samo jer sam morao da prolazim kroz kompleksnost ovih alata“, izjavio je.
Međutim, ma koliko se ovo čini kao sjajna ideja, poput outsourcinga posla koji vam je dao klijent nekom programeru iz Indije za 3 dolara dok vi uživate, postoje i oni koji smatraju da je Copilot najgora ideja u istoiji kompjuterskog programiranja – ikada.
Posebno Brian Lunduke, programer koji je odlučio da detaljno obrazloži svoje nezadovoljstvo Microsoftovim novim proizvodom na svom blogu.
Pogledajte šta ima da kaže:
Sa tehničke strane, Copilot je impresivno postignuće. Sama količina podataka koja mora da bude prikupljena, indeksirana i procesuirana (svaka linija javnog koda na GitHubu), to je zaista impresivno.
AI koji predviđa i kreira kod koji misli da će vam biti potreban je takođe nešto neverovatno impresivno.
Bez obzira na sve navedeno, Copilot je zapanjujuće loša ideja – na toliko nivoa – da je potpuno krajnje zbunjujuće zašto je uopšte stvoren.
I zato ću proći kroz neke od najvećih problema zbog kojih verujem da je Copilot nešto najgore što smo do sada stvorili.
Problem 1: Pronalaženje i popravljanje bagova
Hipotetička situacija: Odlučili ste da napravite novi softer koristeći Copilot kao jedan od svojih alata.
Hajde da pretpostavimo da će Copilot obaviti svoj posao zaista impresivno. Baš kao što je potrebno. Svako malo će ubacivati kod koji vam je potreban, baš onda kada ga želite. To je sjajno jer ste upravo skratili vreme potrebno za razvoj, i to drastično.
Sjajno zar ne!?
POGREŠNO.
Sada imate omanju planinu koda, koji niste vi napisali i koji je isprepletan sa kodom koji ste sami napisali.
Ko je napisao taj kod? Ko zna! Kopiran je iz nekog drugog projekta sa GitHuba.
Da li ima bagove? Sasvim sigurno! Većina kodova ih ima.
Da li će imati problema prilikom interakcije sa ostatkom vašeg koda? Vrlo verovatno? Teško je reći jer taj kod niste smai napisali.
Kada se bagovi eventualno pojave, biće znatno teže popraviti ih jer ćete morati da radite na kodu sa kojim niste nužno upoznati.
Ovo je surova realnost razvoja softvera. Uvek je lakše čitati, razumeti i rešiti probleme sa kodom koji poznajete (posebno ako ste ga sami napisali).
Samim tim, pronalaženje i rešavanje bagova će biti značajno teže i oduzimaće više vremena.
Problem 2: Programiranje nije unos podataka
Postoji veliko neshvatanje toga šta programiranje predstavlja programerima u timu koji je stvorio Copilot.
Pogledajmo samo ovaj tvit.
Developers should be as afraid of GitHub Copilot as mathematicians are of calculators.
— Kelsey Hightower (@kelseyhightower) July 7, 2021
Osnovna ideja ovde jeste da je Copilot samo prost alat namenjen obavljanju repetitvnih zadataka. Zadataka koje je moguće rešiti prostim alatom, ili uz pomoć ljudskog bića. Sa druge strane, digitron samo obavlja proste matematičke radnje.
Ovo je prilično nečuveno shvatanje programiranja.
Programiranje je fascinantna mešavina inženjerstva i umetnosti. Broj načina na koji različiti developeri pristupaju naizgled prostom problemu je gotovo bezgraničan - sa različitim prednostima i manama na brojne načine, uključujući tu čitljivost koda, veličinu, brzinu, robustnost, fleksibilnost... Samo da nabrojim nekoliko.
Reći da je Copilot za programiranje isto što i kalkulator za matematiku iskazuje duboko neshvatanje barem jedne od ovih stvari.
Problem 3: Težina koda
Ponovno korišćenje, reciklaža, koda iz nepoznatog izvora na GitHubu ne donosi lagan, memorijski i CPU efikasan kod.
Ovo je smešno očigledno.
Problem 4: Problemi sa licenciranjem
Sudeći po jednom korisniku Twittera, GitHub je potvrdio da se kod koji Copilot koristi povlači iz svih javnih GitHub projekata. Bez obzira na njihovu licencu.
„Sav javni GitHub kod je korišćen prilikom treninga. Nismo pravili razliku na osnovu tipa licence koju taj kod ima“.
Drugim rečima, ako koristite Copilot da vam dopunjava kod, ne postoji šansa da znate koje licence su sve uključene, pa čak ni koiko njih.
GPL? MIT? Apache? BSD? Verovatno. Drugi koji su vrlo verovatno nekompatibilni (na neki način sigurno)? Gotovo apsolutno.
Želite da isporučite svoj softver pod specifičnom licencom? Možda čak i kao zatvoreni kod?
Neka vam je sa srećom.
Da li se vaš kod koristi na isti način unutar nečijeg drugog projekta bez odgovarajuće licence ili atribucije? Možda, ko zna!
Legalna noćna mora koju Copilot može da stvori je epskih proporcija. A problem je u tome što je sve ovo bolno očigledno. Zaista nemam reči kako Copilot tim sve ovo nije shvatio i rešio na samom početku.
Sa druge strane, Guillermo Rauch, osnivač Vercela, platforme za frontend developere, je u svom tvitu citirao izjavu iz Copilot tech preview FAQ stranice sledeće: “GitHub Copilot je sastavljač koda a ne mehanizam za pretragu: velika većina koda koju predlaže je jedinstveno generisana i nikada ranije viđena”.
Guillermo je ispod ove izjave samo napisao – “Budućnost”.
Ovo se kosi sa strahovima programera da će Copilot generisati kod koji je identičan kodu koji je generisan pod open source licencom koja ne dozvoljava izvedene radove, koji će potom potpuno bez znanja iskoristiti drugi developer.
Copilot bi jednostavno trebalo obrisati
Neke ideje su prosto loše od samog početka. Copilot je jedna od tih ideja.
Stvoren je da kod bude sporiji, veći i bagovitiji.
Kako bi vremenom umanjio veštine programera.
I ne samo da će stvoriti tornado problema sa licenciranjem softvera... već će i pokazati dubok manjak poštovanja prema hiljadama i hiljadama programera.
Copilot je možda impresivno dostignuće, ali na kraju dana pravi više lošeg nego dobrog.
Da li je Copilot najgora stvar koja se desila programiranju? Ovo je prilično agresivna tvrdnja, ali, ako je bilo nešto gore, trenutno ne mogu da se setim šta bi to moglo da bude.
Bez obzira na sve, jedna stvar je sigurna...
Microsoft bi trebalo da obriše Copilot.
Danas.
Sve što je Brian Lunduke u svom tekstu iznad detaljno naveo naići će na odobravanje dobrog dela programera, pogotovo onih iskusnijih, ali biće sigurno i onih koji će Copilot prihvatiti raširenih ruku zbog određenih prednosti koje će im svakako pomoći pri obavljanju svog posla.
Ipak, bez obzira na strepnje jednog dela programera kao što je Brian Lunduke, i radosti druge, Copilot je svakako veliki korak ka svetu u kom će mnogima programiranje postati značajno lakše.
Ostaje samo da vidimo da li će Copilot povećati kvalitet gotovih proizvoda developera, ili će ga razvodniti usled lenjosti koju će mnogi svakako razviti znajući da pored sebe dragocenog asistenta koji možda nije kreativan, ali zna da izbaci na stotine linija koda kada je to potrebno.
9 komentara