Github Copilot

GitHub Copilot – AI pomoćnik koji obećava

U vreme kada se novi AI alati za developere proizvode kao na fabričkoj traci, teško je proceniti koji od njih zaista može da pomogne u našem svakodnevnom radu. Verovatno ste već dobro upoznati ili ste koristili neki od alata poput GitHub Copilot, ChatGPT, AlphaCode, Tabnine, WPCode i sl.

GitHub Copilot je bez sumnje jedan od onih AI alata koji zaslužuje da vam ga predstavimo i upoznamo vas sa njegovim funkcionalnostima.

U pitanju je komercijalni alat, čija se upotreba naplaćuje. Srećom u pitanju je razumna cena već od 10 USD mesečno za pojedinačnu licencu, pa ukoliko vam je programiranje profesija, zaista neće biti problem da se odlučite da ga koristite.Tu je i probni period od 30 dana, da slobodno testirate njegove mogućnosti i odlučite da li je baš to pravi alat za vas.

Ali hajde da prvo vidimo šta je to GitHub Copilot.

Šta je GitHub Copilot?

GitHub Copilot je nastao iz saradnje GitHub-a i OpenAI-a, a prvi put je predstavljen 29.juna 2021. U pitanju je AI alat koji predlaže/daje sugestije za pisanje koda i odgovara na vaša pitanja vezano za pisanje koda.

Dostupan je kao ekstenzija za sledeće kod-editore: Visual Studio Code, Visual Studio, Vim, Neovim i JetBrains, kao i za Azure Data Studio (ranije poznatiji kao SQL Operations Studio), tako da ga lako možete integrisati sa nekim od pomenutih alata i raditi direktno u njemu.

Pokreće ga OpenAI Codex, koji je zapravo modifikovana, produkciona verzija Generative Pre-trained Transformer 3 (GPT-3), jezičkog modela koji koristi duboko učenje (deep learning) da bi generisao tekst sličan ljudskom.

OpenAI Codex je napredni model veštačke inteligencije koji je razvila kompanija OpenAI. Ovaj model je zasnovan na istoj arhitekturi kao i GPT serija, ali je posebno prilagođen za generisanje koda i obavljanje programerskih zadataka. Glavna karakteristika Codex-a je njegova sposobnost da generiše kod u različitim jezicima, uključujući Python, JavaScript, Java, C++, HTML, CSS i mnoge druge.

Codex model je dodatno obučen na gigabajtima izvornog koda i na desetinama programskih jezika, kao i na milionima javnih GitHub repozitorijuma. To GitHub Copilot alatu daje impozantnu bazu koda iz koje može predložiti neko rešenje za vaš kod.

U ovom tekstu ćemo objasniti kako da instalirate ovaj alat kao Visual Studio Code ekstenziju i predstaviti vam neke od njegovih funkcionalnosti.

Zašto da koristite GitHub Copilot?

– Da brže pišete kod

Sažet odgovor je da biste pre svega skratili pisanje koda, pogotovo onih delova koji se ponavljaju ili koji imaju već predvidivu strukturu.

Na primer, recimo da želite da napišete neki HTML kod koji treba da sadrži već neke opšteprihvaćene elemente. Recimo header, koji će u većini slučajeva sadržati poseban tag meni, koji će opet ispod sebe sadržati neuređenu listu sa posebnim elementima/linkovima.

To je struktura koja je manje-više uobičajena za prikazivanje menija u headeru svakog sajta.

<!DOCTYPE html>
<html>
<head>
<title>Moja stranica</title>
</head>
<body>
<header>
<nav>
<ul>
<li><a href="#naslovna">Naslovna</a></li>
<li><a href="#o-nama">O nama</a></li>
<li><a href="#nase-usluge">Naše usluge</a></li>
<li><a href="#kontakt">Kontakt</a></li>
</ul>
</nav>
</header>
</body>
</html>

Kao što vidite, ova struktura sadrži <header&gt; element unutar kojeg je <nav&gt; element. <nav&gt; element sadrži neuređenu listu (<ul>) sa stavkama liste (<li>). Svaka stavka liste sadrži link (<a>) koji vodi do određenog dela stranice ili određene stranice.

Ovaj kod je toliko uobičajen u web developmentu da možete slobodno tražiti GitHub Copilot-u da na osnovu opisa koji smo dali generiše taj kod i slobodno ga koristiti u vašem projektu.

Naravno, ovo je najprostiji i ujedno jedan od mnogih primera koda za koji možete bez problema koristiti GitHub Copilot.

– Da unapredite kvalitet koda

Ovo je tema oko koje još uvek postoji rasprava među developerima. Naime, iskusniji developeri smatraju da GitHub Copilot, ali i drugi AI alati za asistenciju u programiranju, uglavnom proizvode tačan i dobar kod, ali da taj kod ne mora u svakoj situaciji da bude najbolje moguće rešenje. Nakon dužeg vremena korišćenje ovog alata i mi možemo da se složimo sa navedenim mišljenjem.

Iako GitHub Copilot često može da ponudi i više rešenja za jedan problem, ne može se apriori svaki od tih ponuđenih predloga smatrati dobrim rešenjem.

GitHub Copilot ne može da vidi ceo vaš kod u svim fajlovima koje koristite u svom projektu, odnosno ne može da pročita sadržaj fajlova unutar vašeg editora. Samim tim on ne može da ima uvid u ceo kod vaše aplikacije/projekta, a to znači da ne može da ima uvid u vaš kod u meri u kojoj bi osigurao da njegov predlog bude apsolutno smatran za kvalitetan kod.

Da ne bude zabune, GitHub Copilot će uglavnom dati tačan kod za određene funkcionalnosti koje želite da postignete u svojoj aplikaciji, ali taj kod ne mora biti najbolje rešenje za vaš problem.

Recimo, mi smo tokom testiranja u nekim primerima dobili JavaScript kod koji je za deklarisanje promenljive koristio ključnu reč var, što je odavno napuštena praksa (osim ukoliko želite da iskoristite neke prednosti ovog načina deklarisanja promenljive).

Čak i sam GitHub u GitHub Docs navodi sledeće:

…When GitHub Copilot produces suggestions based on this training data, those suggestions may also contain undesirable patterns.
You are responsible for ensuring the security and quality of your code. We recommend you take the same precautions when using code generated by GitHub Copilot that you would when using any code you didn’t write yourself…

Dakle, GitHub Copilot će uglavnom kreirati tačan i dobar kod, ali uvek i obavezno morate proveriti kako se taj kod uklapa u ostatak vašeg koda i da li taj deo koda može potencijalno da napravi kasnije problem u nekoj funkcionalnosti aplikacije.

– Da smanjite sintaksne greške tokom pisanja koda

Ovo je prilično dobar razlog za korišćenje GitHub Copilot alata. Činjenica je da kod koji generiše GitHub Copilot ne sadrži sintaksne greške. Ovo u mnogim slučajevima može da vam uštedi vreme koje biste utrošili u debagovanju koda zbog neke takve greške.

Verovatno nema developera koji nije iskusio potragu za bagom za koji se na kraju ispostavi da je posedica izostavljene zagrade ili tačke i zareza.

Ne samo da kod koji GitHub Copilot generiše ne sadrži takve greške, već i pomaže da ih sami ne napravite tokom kucanja, dajući predloge za ispravku u realnom vremenu.

– Da povećate produktivnost

Ovo je možda i najvažniji razlog za korišćenje GitHub Copilota. Sa svim prethodno navedenim benefitima, pomoći će vam da brže i tačnije pišete svoj kod i samim tim budete produktivniji.

I ne samo to: GitHub Copilot olakšava pisanje koda, tako dok vi pišete kod, on odmah, u realnom vremenu, daje predlog o nastavku koda koji pišete. Zato i spada u takozvane AI code completion alate, odnosno AI alate za dovršavanje koda.

Naravno, kod koji GitHub Copilot predlaže u tom trenutku ne mora obavezno da odgovara vašoj ideji, ali vrlo često možete da ga iskoristite, pogotovo kada se radi o kodu koji logićno sledi nakon vašeg koda.

Recimo, želite da napravite hero slajder sa slikama koje će se smenjivati na svake 4 sekunde. Vaš kod ćete započeti tako što napisati kod kao na slici ispod:

Sve vreme dok kucate kod, GitHub Copilot će vam davati predlog za nastavak koda. I ne samo za nastavak, već će probati da nasluti šta zapravo želite da uradite i ponudiće vam ne samo da nastavite, već i da završite kompletan kod za određenu funkcionalnost.

Taj predloženi tekst vam se prikazuje u vidu tzv. ghost teksta (teksta koji je bleđi od originalnog teksta i zapravo nije još uneta verzija teksta, već samo prikaz kako bi nastavak vašeg koda mogao da izgleda. Klikom na tab taj ghost tekst (predloženi kod) će biti unet i primenjen u vašem kodu.

U ovom slučaju mi smo prihvatili predloženi tekst, jer odgovara onome što smo želeli.
Takođe, nakon što prihvatite određeni kod, GitHub Copilot će vam ponuditi novi predlog za nastavak koda.

U našem slučaju i ovaj predlog je odgovarao, jer smo želeli da se slike menjaju na svake 4 sekunde pa smo prihvatili i taj predlog.

Na kraju smo dobili funkcionalan kod koji možemo da zadržimo ili izmenimo u delovima u kojima želimo da nešto promenimo (recimo, umesto 4 sekunde možda ćete želeti da stavite 7 sekundi, pa ćete onda umesto vrednosti 4000 (milisekundi) uneti vrednost 7000 (milisekundi)).

Tako smo umesto 5 minuta pisanja ovih par linija koda (pod uslovom da već imate iskustva sa pravljenjem sličnih funkcionalnosti), ceo kod ste uz pomoć GitHub Copilot-a napisali za manje od minuta.

I ne samo to. Kako ste verovatno primetili na ovom primeru, GitHub Copilot odmah i unosi komentare u kod, što definitivno doprinosi pisanju razumljivog koda.

Znamo da su komentari u kodu važni i da pomažu da drugi programeri lakše čitaju vaš kod.

Takođe, pomažu i da sami posle nekog vremena lakše prođete kroz sopstveni kod, jer činjenica je da posle nekog vremena nećete ni sami biti sigurni šta ste želeli da postignete tim kodom. Zato su komentari tu da olakšaju razumevanje i ponovno čitanje vašeg ili tuđeg koda.

Kako da instalirate GitHub Copilot ekstenziju

Sada kada smo se ukratko upoznali sa GitHub Copilot-om, da objasnimo i kako da ga instalirate kao ekstenziju unutar vašeg Visual Studio Code editora.

Instalacija GitHub Copilot ekstenzije

Kao što smo na početku pomenuli, GitHub Copilot može da se integriše sa nekim od popularnih kod editora. Mi ćemo u ovom tekstu objasniti kako da ga integrišete sa Visual Studio Code editorom.

Kao što verovatno znate, u pitaju je besplatan kod editor razvijen od strane Microsoft-a, koji je svoju popularnost stekao bogatim funkcionalnostima, mogućnošću proširenja sa dodatnim funkcionalnostima pomoću ekstenzija, kao i podrškom za veliki broj programskih jezika.

Milioni developera širom sveta koriste upravo ovaj editor za pisanje koda i obavljanje svojih svakodnevnih zadataka.

Pretpostavićemo da na svom računaru već imate instaliran Visual Studio Code. Ukoliko ga nemate, posetite zvaničan sajt Visual Studio Code-a i preuzmite ga. Instalacija je vrlo jednostavna i u samo nekoliko koraka imaćete instaliran ovaj editor na svom računaru.

Naš predlog je da pre instalacije ekstenzije za Visual Studio Code, prethodno kreirate svoj GitHub nalog. Ako već imate nalog, onda otvorite svoj Visual Studio Code editor i kliknite na ikonicu Extensions.

Otvoriće vam se prozor sa ekstenzijama koje ste već instalirali u svom Visual Studio Code editoru. Ako do sada niste instalirali ekstenzije, u ovom prozoru ćete videti neke predložene ekstenzije.

U polje za pretragu ekstenzija ukucajte GitHub Copilot i prikazaće vam se lista ekstenzija. Na vrhu će biti GitHub Copilot. Kliknite na dugme Install sa desne strane ekstenzije, da biste je instalirali.

Dalje će vas Visual Studio Code voditi kroz proces instalacije ekstenzije, tokom kojeg ćete biti preusmereni na GitHub Copilot web sajt da povežete ekstenziju sa svojim GitHub Copilot nalogom.

Biće potrebno da se autentifikujete svojim GitHub nalogom, tako da ako nemate GitHub nalog, potrebno je da se prethodno registrujete.

GitHub Copilot vam inače omogućava probni period od 30 dana, ali će svakako biti potrebno da unesete svoje podatke za plaćanje, kako bi se nakon 30 dana automatski izvršila naplata.

Kako smo već pomenuli, GitHub Copilot nudi nekoliko planova za pretplatu. Najjeftiniji i sasvim dovoljan za većinu korisnika košta 10 USD mesečno, ukoliko se odlučite za mesečno plaćanje.

Kada odaberete željeni plan, završite registraciju. Tokom procesa registracije bićete vam zatraženo da autorizujete GitHub unutar Visual Studio Code-a.
Tokom procesa instalacije Visual Studio Code će instalirati GitHub Copilot i GitHub Copilot Chat. U principu radi se o istom alatu, ali sa nešto drugačijim fukcionalnostima i drugačijim okruženjem u kojem radi.

GitHub Copilot daje sugestije za nastavak/završetak koda disrektno u vašem kodu, istovremeno dok kucate svoj kod. Takođe, on vam kreira kod na vaš upit, ukoliko mu to zatražite, i to direktno u fajlu u kojem radite. Kasnije ćemo videti konkretan primer kako to funkcioniše.

GitHub Copilot Chat, kako mu i ime sugeriše, služi da sa njim imate neku vrstu chat-a, odnosno da mu postavite pitanje koje želite, a da vam on generiše odgovor. Možete ga pitati dok ste u nekom fajlu unutar editora da vam objasni neki deo koda ili da neku sugestiju vezano za taj kod i on će to uraditi. Napisaće vam objašnjenje i isporučiti neki primer koda ukoliko je to potrebno. Ovaj chat se obavlja u zasebnom interfejsu unutar Visual Studio Code editora.

Dobra stvar je što i GitHub Copilot i GitHub Copilot Chat, između velikog broja druih jezika, razumeju i srpski jezik, pa sve što tražite možete slobodno tražiti na srpskom i oni će vam sve odgovore dati na srpskom jeziku.

GitHub Copilot na delu

Odgovori na pitanja

Kod AI alata za pomoć prilikom pisanja koda, uvek se postavlja pitanje koliko su oni pouzdani i do koje mere se možete osloniti na njihovu pomoć. Kao što i samo ime ovog alata kaže, on je tu da vam bude pomoćnik, a ne da radi posao umesto vas. I GitHub Copilot radi upravo to, ništa više ni manje od toga. Možda nekada nećete biti zadovoljni datim odgovorom ili isporučenim kodom, ali ova vrsta alata je još u razvoju i verujemo da će u budućnosti davati bolje predloge i kod.

Do tada da vidimo šta sve to GitHub Copilot trenutno može i u kojim situacijama i na koji način možete da ga koristite.

Hajde da počnemo od neke jednostavnije primene. Recimo da želite da ga pitate da vam objasni neki konkretan pojam u programiranju. Na primer: Za šta se koristi prototip u JavaScript-u?

Pitanje postavljate tako što napišete // q: pa zatim upišete pitanje. Kao na primeru ispod.

Kada napišete pitanje, kliknite na enter i GitHub Copilot će odmah generisati odgovor

Ukoliko želite detaljniji odgovor koji će podrazumevati i eventualno primer koda koji biste želeli da vidite u sklopu odgovora, onda je bolje da za to koristite GitHub Copilot Chat. Njega ćete naći sa leve strane Visual Studio Code interfejsa, kao posebnu chat ikonicu

Klikom na ovu ikonicu otvoriće vam se poseban prozor u koji možete da upišete svoje pitanje. Recimo da želite da postavite isto pitanje kao malopre, ali da od GitHub Copilot-a tražite da vam napiše i primer korišćenja prototipa.

Na primer: Za šta se koristi prototip u JavaScript-u? Daj mi i primer prototipa u kodu.

Pitanje kucate u polje koje se nalazi u dnu sa leve strane Visual Studio Code interfejsa.

Klikom na enter GitHub Copilot Chat će generisati odgovor

Kao što vidite Chat može da generiše detaljne odgovore uz generisanje primera koda, dok ako isto takvo pitanje postavite GitHub Copilot-u unutar fajla u kojem radite (kao na ranijem primeru), nećete dobiti tako detaljan odgovor, a ni primer koda.

Ok, ovo su bila samo jednostavna pitanja, bez primene na sadržaj našeg koda.

Hajde da sada vidimo kako se GitHub Copilot snalazi u situaciji kada je potrebno da nam u samom kodu generiše nastavak, bez da smo mu eksplicitno tražili šta da uradi.

Dakle, ovde ćemo testirati kako radi njegova autocompletion funkcionalnost (ili automatsko dovršavanje/nastavljanje koda).

Automatsko dovršavanje koda

Kao što verovatno već znate, automatsko dovršavanje koda je funkcionalnost koja daje predloge za nastavak koda koji ste uneli u vaš kod editor, u ovom slučaju u Visual Studio Code editor.

Da bi GitHub Copilot mogao da daje predlog za nastavak, on mora da pročita kod koji koristite, a onda na osnovu podataka iz ogromne baze koda, da predlog koji bi kod najviše odgovarao kao nastavak vašeg originalnog koda.

Da vidimo to na jednom primeru gde želimo da napravimo funkciju koja će da služi za dohvatanje podataka korisnika sa udaljenog servera.

Krenuli smo sa pisanjem sledećeg koda:

async function fecujPodatkeKorisnika(korisnickiId)

Kada smo prešli na try { GitHub Coplilot je u ghost tekstu ponudio nastavak koda:

Kako smo već pomenuli, ne možemo apriori verovati GitHub Copilotu da će generisati kod koji odgovara našim potrebama.

Zato smo proverili šta je predložio i evo rasčlanjenog pojašnjenja njegovog predloga koda:

  • Funkcija fecujPodatkeKorisnika prima korisnickiId kao argument, koji je ID korisnika čije podatke želimo da dobijemo.
  • U bloku try, funkcija koristi fetch funkciju da bi napravila HTTP zahtev ka navedenom URL-u.
  • Zatim, koristi await kako bi sačekala odgovor (response) od servera.
  • Kada se odgovor primi, funkcija koristi response.json() metodu kako bi parsirala JSON podatke iz odgovora.
  • Ovi parsirani podaci se smeštaju u promenljivu data.
  • Na kraju vraća podatke korisnika pomoću return data.

Pošto smo uradili analizu koda i da li on odgovara našim potvrdama, kliknuli smo tab da bismo prihvatili predlog.

Na taj naćin je predloženi kod automatski ubačen u editor i postao je nastavak prethodnog koda koji smo sami napisali.

Čim smo prihvatili sugerisani kod, GitHub Copilot je nastavio sa predlozima.

Sada nam je ponudio logičan nastavak za naš problem:

Ponuđen kod podrazumeva da želimo da u slučaju greške unutar try bloka uhvatimo tu grešku pomoću funkcije catch, a zatim je i prikažemo u konzoli pomoću console.log(error).

Nama je ovo i trebalo jer smo svakako želeli da ispratimo u slučaju da dođe do greške prilikom parsiranja JSON podataka sa udaljenog servera. U pitanju je dobra praksa kod ovakvog tipa zahteva.

Pošto nam je kod odgovarao, prihvatili smo predlog pritiskom na tab taster i predloženi kod je postao deo našeg koda.

Ono što je važno da napomenemo jeste da GitHub Coplot nekada nudi i više predloga, kroz koje možete proći klikom na strelicu Next koja se pojavi u mini toolbar-u iznad predloženog koda.

Ti predlozi nekada budu manje-više isti, samo drugačije formatirani, a nekada se radi o nešto drugačijem kod. Bitno je da pre prihvatanja nekog predloga prođete kroz sve predloge i proverite koji najbolje odgovara vašem kodu.

Pisanje koda na zahtev

GitHub Copilot i GitHub Copilot Chat mogu da isporuče kod na zahtev. To znači da možete da im opišete šta vam je potrebno, a oni će pokušati da isporuče kod koji bi mogao da odgovara vašem zahtevu.

Kao što smo videli, ove zahteve unosite na jedan način u GitHub Copilot, a na nešto drugačiji GitHub Copilot Chat. Isto tako, rezultat neće sadržati identične podatke, a GitHub Copilot Chat će uvek dati detaljniji odgovor.

Kada želite da vam GitHub Copilot napiše neki kod na zahtev, to radite tako što upit pišete direktno u fajlu u kojem želite da vam generiše predlog. Taj zahtev započinjete tako što na mestu gde želite da generiše zahtev, pritisnete kombinaciju tastera Ctrl+i. Otvoriće vam se prompt u koji sada možete da unsete tekst zahteva.

Na primer, želimo da nam GitHub Copilot kreira predlog regex-a koji će da proverava da li je telefonski broj unet u ispravnom formatu. Tražili smo da se radi provera da li kod ispunjava sledeće kriterijume:

da počinje sa +381, da zatim sledi razmak, pa broj 6 sa jednom cifrom koja sledi (od 0-9), sa ponovnim razmakom, pa zatim sa tri cifre (od 0-9), novim razmakom i na kraju sa još 4 cifre (od 0-9).

Kada ste uneli tekst zahteva pritisnite taster Enter da biste dobili rezultat.

GitHub Copilot će vam dati predlog koda, nekada i više njih. Kao i na prethodnom primeru možete proći kroz nekoliko predloga, ako ih ima.

Kada se uverite da neki od predloga odgovara onome što ste želeli kliknite na dugme Accept.

Ukoliko vam ne odgovara, možete kliknuti na dugme Decline, pa pokušati da drugačije formulišete zahtev.

Imajte u vidu da kao i kod drugih AI alata, od načina na koji postavite pitanja, uključujući i dovoljno podataka koje date alatu, zavisi kvalitet dobijenog odgovora.

U našem slučaju dobijeni kod odogovara onome što smo očekivali. GitHub Copilot je čak napravio i funkciju koja proverava broj u odnosu na regex kod, što je naravno još bolje.

Dakle, i ovaj put smo dobili kod koji je potpuno funkcionalan i u našem slučaju je u potpunosti odgovarao nameni.

Naravno, posle napisanog regex-a trebalo bi i testirati da li ovaj kod radi ispravno proveru. To je upravo ono što smo želeli da proverimo i ujedno vidimo da li GitHub Copilot može da nam pomogne u tome.

Krenuli smo da pišemo unit test za ovaj konkretan kod. Počeli smo sa kreiranjem funkcije regexTest kao na slici ispod.

Čim smo krenuli sa pisanjem i prešli u drugi red, GitHub Copilot je razumeo šta želimo i odmah dao predlog za nastavak koda.

Ovaj predlog neće u svakoj situaciji odgovarati onome što želite, ali će uglavnom bar približno odgovarati vašim namerama. Naravno, vi uvek možete tražiti da vam generiše kod sa nekom konkretnom funkcionalnošću i on će tako i uraditi.

Za potrebe ovog testa smo prihvatili predloženi kod, iako nije u potpunosti odgovarao našoj nameri.

Ono što je važno da primetite, jeste da će GitHub Copilot pokušati da vam predloži deo po deo koda. To znači da je u našem slučaju prvo predložio blok koda koji sadrži console.log(validatePhoneNumberWithSpacesAndCountryCode …

Kada smo prihvatili taj blok koda i nismo sami započeli da pišemo ništa već samo pritisli space, on je to protumačio da ne želimo više nikakvu izmenu i onda na kraju dodao kod sa pozivanjem funkcije regexTest().

To je naravno logičan završetak celog ovog koda za testiranje, jer bez pozivanja funkcije regexTest() ona ne bi ni bila izvršena, a samim tim ni test ne bi mogao da bude pokrenut.

Na kraju smo i proverili u browseru da li pomenuti kod radi kako je očekivano i dobili smo očekivani rezultat.

Predlaganje više rešenja za dovršavanje koda

Kako smo već pomenuli GitHub Copilot može da ponudi više predloga za generisanje/dovršavanje nekog koda.

Recimo da želite da vam napravi funkciju koja prihvata neku reč kao argument, a zatim slova te reči izbacuje u nasimičnom redosledu. Možda pravite neku svoju verziju scramble igre i želite da ovaj kod radi upravo funkcionalnost nasumičnog prikazivanja slova.

Hajde da vidimo kako će rešenje da nam da GitHub Copilot.

Prvo smo kao komentar uneli naš zahtev i tačno objasnili šta želimo.

GitHub Copilot je odmah dao predlog početka koda.

Nakon što smo kliknuli na space, on je u ghost tekstu generisao i ostatak predloga.

Kako smo već u nekoliko navrata pomenuli, pre prihvatanja koda prvo proverite da li vam je kod logičan i pre svega da li odgovara onome što ste hteli da postignete.

Zato da vidimo šta koji element koda radi:

  • word.split(''): Metoda split('') se koristi za razbijanje reči na pojedinačna slova i stvaranje niza slova. Na primer, ako je word 'JavaScript', ovo će rezultirati nizom ['J', 'a', 'v', 'a', 'S', 'c', 'r', 'i', 'p', 't'].
  • .sort(() =&gt; Math.random() - 0.5): Ova linija sortira niz slova. Međutim, sortiranje nije standardno. Koristi se funkcija Math.random() - 0.5 koja generiše nasumične brojeve između -0.5 i 0.5 i na taj način menja redosled elemenata u nizu. To znači da se slova niza ređaju u nasumičnom redosledu.
  • .join(''): Nakon što su slova niza sortirana u nasumičnom redosledu, metoda join('') ih spaja nazad u jednu reč, bez razmaka između slova.
  • console.log(shuffledWord): Na kraju, funkcija konačno ispisuje reč koja je dobijena nakon što su slova izmešana u nasumičnom redosledu

S obzirom da je kod tačan, prihvatili smo ga klikom na tab i on je postao sastavni deo prethodno generisanog koda.

Sada smo mogli i da testiramo kako ovaj kod radi. Pokrenuli smo live server i otvorili kod u konzoli browsera.

Kao što vidite slova u originalnoj reči JavaScript su nasumično izmešana.

Da bismo proverili da li ovaj kod svaki put generiše drugačiji redosled slova, još nekoliko puta smo uradili reload browsera kako bi se kod ponovo izvršio.

Kao što smo i očekivali svaki put je kod generisao drugačiji rezultat, odnosno svaki put je raspored slova bio nasumično drugačiji.

To znači da je GitHub Copilot dao potpuno primenjiv kod koji besprekorno radi.

Hajde sada da se vratimo na početak teme ovog poglavlja. To je činjenica da možete birati između više predloga koje vam GitHub Copilot ponudi.

Da se vratimo na početak našeg zahteva koji glasi:

// Napravi mi funkciju koja prihvata neku reč kao argument, a zatim slova te reči izbacuje u nasumičnom redosledu i prikaži rezultat u konzoli.

Mi smo odmah prihvatili kod koji je GitHub Copilot predložio, međutim nismo morali odmah da prihvatimo prvi predlog. GitHub Copilot često generiše više predloga, a do njih možete doći klikom na strelicu next koja se nalazi unutar toolbar-a iznad predloženog koda.

U ovom primeru vidimo da nam je ponudio 3 moguća rešenja.

Međutim, pored klika na strelicu, za odabir dodatnih predloga/mogućih rešenja, možete pritisnuti kombinaciju tastera Ctrl+Enter i sa desne strane će vam se otvoriti dodatni prozor unutar Visual Studio Code-a, sa novim predlozima (GitHub Copilot Suggestions).

Ovde ćete često pronaći više predloga koji su prikazani jedno ispod drugog u odvojenim celinama.

Naš predlog je da pregledate svaki od njih i pronađete onaj koji vam najviše odgovara. Dobra praksa nalaže da kod treba da bude što kraći i da pritom radi ono što se od njega očekuje. Naravno, to nije uvek moguće postići, pa odaberite ono rešenje koje se vama učini najprihvatljivije.

To bi ujedno bilo sve vezano za GitHub Copilot što smo smatrali bitnim da vam predstavimo.

Naravno, ima još mnogo toga što ovaj AI alat može da uradi za vas, ali je ovo nešto osnovno što treba da znate.

I samo još jedna bitna napomena, pre nego što završimo ovaj tekst:

Ne očekujte da GitHub Copilot programira umesto vas. To jednostavno nije moguće, niti je njegova namena da bude zamena za vas. Vi kao programer imate znanje i iskustvo da najbolje možete da procenite šta je u vašem kodu prihvatljivo, a šta nije.

Vi ste ti koji treba da pišete svoj kod, a GitHub Copilot je tu da vam pomogne da taj posao uradite brže i zahvaljujući tome budete produktivniji. To je jedina namena ovog AI alata.

Ako ste početnik u programiranju, možete doći u iskušenje da počnete da se previše oslanjate na GitHub Copilot. To potencijalno može da vas odvede na pogrešan put i da vas udalji od pravilnog učenja i prihvatanja dobrih praksi tokom pisanja koda. Ovaj alat neće unaprediti vaše veštine, on je samo tu da ubrza vaš posao, onda kada već i sami imate dovoljno veština da znate šta radite. Dakle, ako ste početnik, nastavite pre svega sa učenjem i samostalnim radom na svojim projektima, a GitHub Copilot koristite samo u onoj meri u kojoj je on dobar za vaš dalji razvoj kao programera.

Na samom kraju nas zanima da li ste vi već koristili GitHub Copilot ili neki drugi AI alat za dovršavanje koda u svom svakodnevnom poslu.

Kakva su vaša iskustva sa AI alatima?

Pišite nam u komentarima.

2 komentara. Ostavi novi

Fantasticna stvar, pogotovo za one koji tek ulaze u IT industriju. Pod uslovom da koriste alat da bi istinski nesto naucili a ne da bi dobijali kod na gotovo, moze imati bezbroj prednosti

Одговори
Nenad Mihajlović
април 15, 2024 8:18 pm

Tako je, Dragana. Slažemo se 100%.

Одговори

Оставите одговор

Ваша адреса е-поште неће бити објављена. Неопходна поља су означена *