Github Copilot

Github Copilot

13 - 06 - 2024
10 min

Dotazník

Máte rádi ankety, dotazníky? Udělejte si náš interní dotazník:

  • Věděli jste, že podle výzkumu IBM napíše průměrný vývojář za den 12 řádek kódu? Myslíte, že jich napíšete více? – 1 bod
  • Bolí vás bříška prstů z neustále „datlování do klávesnice“? – 2 body
  • Nebaví vás psát neustále často se opakující kód, jako například unit testy, ale chcete ho dodat? – 2 body
  • Občas narazíte na jednoduchý úkol, který už snad každý napsal, ale zrovna Vy ne a bolí Vás hlava jen na něj pomyslet? – 2 body
  • Jste na projektu nový a pomalu vstřebáváte coding-style? – 1 bod

Pokud máte z dotazníku alespoň 3 body – zkuste jedinečný, báječný a místy až magický Github Copilot (nebo jiný AI asistent – například ten od, v Česku sídlících, Jetbrains, který zde popíši já). Určitě budou oblasti, kde by vám mohl pomoci.

Copilot/Jetbrains AI Assistant je generativní umělá inteligence – podobně jako známá Chat GPT – liší se však trénovacími daty. Chat GPT je obecná trénovananá například na diskuzích na Redditu, Copilot je trénovaný na kódu uloženém v Githubu – a že ho tam je.

Code completition

Copilot, integrovaný do vašeho IDE, není stříbrná kulka softwarového vývoje, není Sherlockem Holmesem, který vyřeší každou vaši hádanku – je spíš Dr. Watsonem, který vás postrčí vždy maličko kupředu, když už nevíte kudy kam nebo se vám jen nechce přemýšlet.

Tu dodá několik znaků, ale občas se předvede a nakóduje za vás celou metodu – zde příklad metody pro vygenerování PNG obrázku pro účely unit testu.

Intelisense na steroidech, chce se říci, že? :) Ale tím to rozhodně nekončí, Copilot svým způsobem rozumí textu a můžete s ním ve vašem oblíbeném IDE chatovat. Například jste napsali novou funkci a chcete jí otestovat… ale kdo rád píše unit testy, že?

Write unit tests

Kdo je píše rád, že? Ale moc to bez nich nejde – takže by se pomocník hodil ;) Jednoduchý dialog, kde si vyberete testovací framework, zaškrtnete, že chcete použít AI

…a voilá

Stejně jako v ostatních případech, kdy pomocí AI generujete kód, vždy je třeba ho zkontrolovat a ověřit, že funguje.

Explain code

Největší výhody AI vidíme pro začínající programátory – seniornější vývojáři většinou nemají problém rozumět existujícímu kódu, ale pro juniora je možnost nechat si vysvětlit vybranou část kódu (Explain Code) velmi užitečná.

Stydliví programátoři (což je většina ;) často mají problém zeptat se zkušenějších kolegů, co daný kód vlastně dělá, popřípadě tráví příliš mnoho času, než ho bez pomoci pochopí. AI jim tak může pomoci - bez stresující interakce s jinými lidmi ;)

Copilot pochopitelně není zadarmo, ale vyjde měsíčně na pár minut práce juniorního programátora – přibrat takového “vysvětlovače” do týmu tak není vůbec nákladná záležitost.

Suggest refactoring

Zde už se zlehka pouštíme na tenký led a dostáváme se do AI funkcí, které mohou být ve špatných rukou ke škodě vaší codebase.

AI asistent může navrhnout refactoring dané části kódu – je třeba mít na paměti, že AI asistenti používají statistické jazykové modely. Zednodušeně, se pomocí matematiky snaží “uhádnout” jaké další slovo (resp. token) vygenerovat do výstupu. To znamená, že vygenerovaný kód většinou jde zkompilovat, avšak jeho správnost není garantována už z podstaty funkce AI asistenta. Převzetím “jeho” kódu a nahrazení původního by pak mělo být považováno a ošetřeno jako jakákoliv jiná (manuální) změna. Pokud máte funkčí unit testy, pomocí kterých můžete ověřit, že kód funguje i po refactoringu – je to jenom dobře ;)

Write Documentation

Pro mě jedna ze spornější funkce AI asistentů. Kód funkcí by měl být čitelný a srozumitelný – samopopisný, stejně tak signatura těchto funkcí. Pokud chcete, můžete si nechat vygenerovat dokumentaci od asistenta. Problém je, že ten se vám snaží zalíbit a generuje dokumentaci opravdu bohatě, často jenom rozvede názvy metod a jejich parametrů ;) Vaše codebase pak tím úměrně narůstá a v případě, že je váš kód srozumitelný i bez dokumentace, tak generujete duplikátní informaci – scrolováním přes komentáře pak na přehlednosti kódu nepřidáte ;)

Find problems in code

Pokud pochybujete o svém kódu, můžete požádat AI asistenta, ať se pokusí v něm najít problémy. Pokud jste hnidopich, můžete udělat to samé nad cizím kódem ;)

Je pravda, že vývojáři zhusta pod časovým tlakem polevují v ostražitosti a zapomínají ošetřovat hraniční situace – právě pro tyto případy vidím “find problems in code”, jako jednu z lepších vlastností AI asistentů.

Copilot chat

Asi poslední z hlavních dovedností AI asistentů je chat, známý například z Chat GPT. Jednoduše otevřete prompt a můžete se ptát, na co chcete, ale je třeba mít na paměti, že jazykové modely AI asistentů pro programátory nejsou trénované na obecných datech – na rozdíl od Chat GPT, takže o všem se s vámi bavit nebudou ;)

S programátorskou otázkou už si ale poradí bez problémů.

AI ano či ne?

Doporučuji každému, aby AI ve svém IDE vyzkoušel. Pro seniorní vývojáře jeho hodnota není taková, ale těm, co s programováním začínají, popřípadě si chtějí rozšířit obzory – s chutí do toho a půl je hotovo! ;)

Většina asistentů obsahuje bezplatnou trial verzi, takže prvotní vyzkoušení – máte zadarmo!

Já osobně používám AI asistenta od Jetbrains, po prvotním nadšení si však nyní vystačím s funkcemi “Find Problems in Code”, “Code completition” a “Write Unit Tests”.

Jiří Ludvík, xitee Tech Lead

Další článek ze stejného odvětví