Ugrás a fő tartalomra

GitHub Copilot alapok




 A szoftver fejlesztés során az implementáció tehát több lépésben, és sokszor párhuzamosan zajlik, szükséges, hogy az egyes programállapotok, jól követhetőek legyenek, ezt a feladatot a verziókövető rendszer ek ( revision control system ) látják el pl. CVS , Apache Subversion SVN ), Mercurial Git, GitHub


Fejlesztés folyamat fő jellemzői:

egy közös tárolóban ( repository ) tartják kódokat

ezt a fejlesztők lemásolják egy helyi munkakönyvtárba, és amelyben dolgoznak ( working copy

a módosításokat visszatöltik a központi tárolóba ( commit

a munkakönyvtárakat az első létrehozás ( checkout ) után folyamatosan frissíteni kell ( update


Az AI-alapú fejlesztői élmény elvárásai

Használja az Ön által megadott kontextust, és szintetizálja a kódot

Konvertálja a megjegyzéseket kóddá

Automatikus kitöltés az ismétlődő kódokhoz

Automatikus javaslat tesztek

Alternatívák megjelenítése, választási lehetőség


GitHub Copilot

Az eszköz mély tanulási modelleket és természetes nyelvi feldolgozási technológiákat használ, hogy hatékony és pontos kódkiegészítési funkciókat biztosítson a fejlesztőknek, ezáltal javítva a fejlesztés hatékonyságát és a kód minőségét. 

Javíthatja a fejlesztés hatékonyságát, csökkentheti a kódolási hibákat és javíthatja a kód minőségét. Fedezze fel  a GitHubot egy valós programozási környezetben való alkalmazásával

 A kód automatikus kiegészítése kulcsfontosságú segítséget nyújt a fejlesztőknek, lehetővé téve számukra a hatékonyabb kódírást, a gépelési hibák csökkentését, valamint a kódstruktúrával és a funkcióhasználattal kapcsolatos valós idejű javaslatok fogadását. A hagyományos automatikus kódkiegészítési eszközöknek azonban vannak korlátai, például statikus sablonokra és szabályalapú módszerekre korlátozódnak, így nem képesek alkalmazkodni a különböző kódolási gyakorlatokhoz és dinamikus fejlesztési környezetekhez. 


A GitHub Copilot többféle fejlesztői környezetet és programozási nyelvet támogat, de én itt csak a Visual Studio Code (VS Code) környezet és Python programozási nyelv tapasztalataimmal foglalkozom.


A meglévő kódsegítő eszközök előnyei

1.    A kódolás sebességének javítása: A kód automatikus kiegészítési technológiája és eszközei gyorsan generálhatnak kódrészleteket, minimalizálva a fejlesztők által igényelt billentyűzetbevitel mennyiségét, és ezáltal felgyorsítva a kódolási folyamatot.

2.    A kódminőség javítása: Az automatikus kiegészítési eszközök nyelvtani szabályokon és ajánlott eljárásokon alapuló kódjavaslatokat nyújthatnak, segítve a fejlesztőket a specifikációk betartásában és a gyakori hibák csökkentésében.

3.    Az ismétlődő munka csökkentése: A kódtöredékek és sablonok kihasználásával a fejlesztők megkerülhetik a hasonló kódszegmensek duplikálásának szükségességét, ezáltal növelve a munka hatékonyságát.

4.    Tanulási és oktatási segédeszközök: Az automatikus kiegészítési eszközök kiegészítő forrásként szolgálhatnak a programozásoktatáshoz, kódpéldákat és útmutatást nyújtva a kezdőknek, elősegítve a programozási készségek elsajátítását és fejlesztését.


A meglévő kódsegítő eszközök korlátai főleg kontextuális korlátok: A jelenlegi automatikus kiegészítési technológiák túlnyomórészt statikus nyelvtani szabályokra és sablonokra támaszkodnak, és korlátozott megértéssel rendelkeznek a bonyolult kontextusokról és szemantikáról. Következésképpen küzdhetnek a fejlesztők szándékainak pontos előrejelzésével.


A GitHub Copilot háttere és implementációs elve

  A GitHub Copilot egy forradalmi eszköz, amelyet a GitHub és az OpenAI közösen fejlesztett ki. A GitHub, a nyílt forráskódú és a privát szoftverprojektek híres tárhelyplatformja, több mint 100 millió fejlesztőből, több mint 4 millió szervezetből álló hatalmas felhasználói bázissal büszkélkedhet, és több mint 330 millió kódtárat üzemeltet.

2022 júniusában a GitHub kiadta a Copilotot az egyéni ügyfeleknek, és belefoglalta az ingyenes Student Packbe. A 2021 novembere óta nyilvánosan elérhető Codex fizetős szolgáltatás, amelyhez az OpenAI API-ját hívó program írásával lehet hozzáférni. Ez a hatalmas ökoszisztéma hozzáférést biztosít a GitHub Copilot számára a forráskódadatok kiterjedt és változatos gyűjteményéhez.


A mesterséges intelligencia terén elért úttörő fejlesztéseiről ismert OpenAI nagy sikert ért el a ChatGPT 4.0 kiadásával. A ChatGPT olyan erős közvetítő a nyelvi modellen, mint az LLAMA. Az LLAMA a statisztikai nyelvi modellek használatára támaszkodik . Az AI-technológia terén szerzett szakértelmüket kihasználva az OpenAI együttműködik a GitHubbal, és kihasználja a platformon elérhető rengeteg forráskód-adatot. A mély tanulási modellek, például az ismétlődő neurális hálózatok (RNN-ek) vagy transzformátorok a GitHub Copilot alapjául szolgálnak. Ezek a modellek képesek megtanulni a kód bonyolultságát, beleértve annak szintaktikai és szemantikai szerkezetét, valamint a fejlesztők által alkalmazott közös kódolási gyakorlatokat.


A kódfejlesztés kontextusában a kódolási követelmények kódmegjegyzésekkel fejezhetők ki és dokumentálhatók az integrált fejlesztési környezetben (IDE). Figyelemre méltó, hogy a GitHub Copilot képes elemezni ezeket a kódmegjegyzéseket, és kikövetkeztetni a mögöttes kódolási követelményeket, majd automatizálni a megfelelő kódrészletek generálását. Ez az intelligens képesség bemutatja a természetes nyelvi megértés és a gépi tanulási technikák kihasználásában rejlő lehetőségeket az emberi szándék és a kód megvalósítása közötti szakadék áthidalására. Ha a generált kód hibás, a felhasználónak tovább kell lépnie a hibakeresési módba



 Fejlesztési folyamat copilottal:

1 Határozza meg a függvény kívánt viselkedését.

2 Írjon egy promptot, amely a lehető legpontosabban leírja a funkciót.

3 Engedélyezze a Copilot számára a kód generálását.

4 Olvassa el a kódot, hogy ésszerűnek tűnik-e.

5 Tesztelje a kódot, és ellenőrizze, hogy helyes-e:

a Ha a kód több teszt után helyes, lépjen tovább. b Ha a kód helytelen,  folytassa a 2. lépéssel, és szerkessze a promptot.



A Copilot segíthet nekünk: 

- A kód magyarázata :

Amikor a Copilot létrehozza nekünk a Python-kódot, meg kell határoznunk, hogy a kód azt teszi-e, amit szeretnénk. Ismét, ahogy korábban mondtuk, a Copilot hibákat fog elkövetni. Bár nem vagyunk érdekeltek abban, hogy megtanítsuk a Python működésének minden árnyalatát (ez a programozás régi modellje), megtanítjuk, hogyan kell olvasni a Python kódot, hogy átfogó megértést kapjunk arról, hogy mit csinál. A Copilot funkcióját is használni fogjuk, amely angolul magyarázza el a kódot. Amikor befejezed ezt a könyvet és a magyarázatainkat, még mindig rendelkezésre áll a Copilot, hogy segítsen megérteni a következő göcsörtös kódot, amit ad. 

A fejlesztők annyi magyarázatot kérhetnek, amennyire szükségük van ahhoz, hogy teljes mértékben megértsék a kód működését.

Sajnos figyelmeztetnünk kell, hogy ezek a magyarázatok akár tévesek lehetnek, és hogy több magyarázatot kell kérnie a Copilottól, hogy korlátozza egyetlen hibás magyarázatra való támaszkodását. 


Hibára utal, ha ilyen megjegyzést ad vissza copilot : "A kódod itt". 

Ez a nyílt forráskódú ellenőrizetlen (félig befejezett, fejlesztés alatt álló) kódok/kódbázis tanítási folyamatban történő felhasználására vezethető részben vissza.


- A kód érthetőbbé tétele :

 Ugyanazon feladat elvégzéséhez többféleképpen is írhat kódot. Egyesek könnyebben érthetők, mint mások. A Copilot rendelkezik egy eszközzel, amely átszervezheti a kódot, hogy megkönnyítse a munkát. Például a könnyebben olvasható kód gyakran könnyebben javítható vagy javítható, ha szükséges. 


- Hibák kijavítása : 

 A hiba egy program írásakor elkövetett hiba, amely azt eredményezheti, hogy a program rossz dolgot csinál. Néha a Python-kód szinte működik, vagy szinte mindig működik, de nem egy adott körülmények között. Ha hallgattad a programozók beszélgetését, akkor talán hallottad azt a gyakori történetet, hogy egy programozó órákat töltött csak azért, hogy végül eltávolítson egy nem megfelelő szimbólumot, amely miatt a program meghibásodott.

A megjegyzéseket a programozók arra használják, hogy ember által olvasható összefoglalót adjanak arról, hogy mit tett a kód, hogy segítsen más szoftvermérnököknek a kód olvasásában. Mára a célja kibővült, hogy a Copilotot is ösztönözze. 


A Ctrl–Enter billentyűkombinációval ellenőrizze, hogy a Copilot ad-e olyan javaslatokat, amelyek inkább kódok, mint megjegyzések


Ha nem elégedett a Copilot által kezdetben javasolt kóddal, több javaslatot is átválthat :

az Alt + [ és Alt + ] billentyűkombinációval // Windows és Linux rendszeren.



Egy nagy probléma megoldását és kisebb feladatokra osztását problémabontásnak nevezzük, amely a szoftvertervezés egyik legfontosabb készsége. 


Copilot felé a fejlesztő kommunikáció szintjei:

 #   : megjegyzéseket írtunk, hogy megmondjuk a Copilotnak, mit tegyen

 ''' : docstringeket fogunk használni a függvények írásához hogy megmondjuk a Copilotnak, mit tegyen


 Függvény definíció :

A docstringben el kell magyaráznunk, hogy az egyes paraméterek mire valók úgy, hogy a nevüket egy mondatban használjuk. Azt is bele kell foglalnunk, hogy mit kell tennie a funkciónak


 Függvény törzs beszúrás:

Tab billentyűt (néha egyszer a behúzáshoz, majd ismét a Copilothoz), meg kell várnunk, amíg a kód megjelenik, majd meg kell nyomnunk az Enter billentyűt a kód elfogadásához, majd ismét meg kell nyomnunk a Tab billentyűt további kódért, és meg kell ismételnünk a folyamatot. (piros terület)




VS code felület/képernyő felosztása


A.) Tevékenység sáv. A bal szélen található, lehetővé teszi a nézetek közötti váltást,
B.) Oldalsáv. Különböző nézeteket tartalmaz, például az Intézőt, hogy segítsen a projekten való munka során.
C.) Szerkesztők. A fő terület a fájlok szerkesztéséhez. Tetszőleges számú szerkesztőt nyithat meg egymás mellett függőlegesen és vízszintesen.
D.) Panel. Alapértelmezés szerint kimenetet, hibakeresési információkat, hibákat és figyelmeztetéseket, valamint egy integrált terminált tartalmaz. A panel balra vagy jobbra is mozgatható.
E.) Állapotsor. Információk a megnyitott projektről és a szerkesztett fájlokról.

Egy másodlagos oldalsáv is elérhető az elsődleges oldalsávval szembeni nézetek megjelenítéséhez. A Ctrl+Alt+B billentyűkombinációval lehet megjeleníteni.

A VS Code minden egyes indításakor ugyanabban az állapotban nyílik meg, mint amikor legutóbb bezárta. A mappa, az elrendezés és a megnyitott fájlok megmaradnak. 



VS code IntelliSense kódkiegészítés (alap működés) 

Az adott programnyelvhez tartozó függvények, osztályok névkiegészítését végzi.  Ezen felül a kódban definiált változók neveire és osztályaira is a gépelést 
követően felajánlja a lehetséges értékeket. Ezen felül megadja függvények esetén a paraméterek neveit. 
Ha használunk kommenteket a saját változókra vagy Függvényekre azok is megjelennek



Pozitív vélemények

A GitHub Copilot egyik előnye, hogy időt és energiát takarít meg a fejlesztőknek. A valós idejű kódjavaslatok biztosításával csökkenti a kód manuális írásának szükségességét, különösen az ismétlődő vagy sablonkódszegmensek esetében. Ez különösen hasznos azoknak a fejlesztőknek, akik még nem ismerik a programozási nyelvet vagy keretrendszert, hogy segítsenek nekik megtanulni és megérteni a kódmintákat.

Emellett a GitHub Copilot megkönnyíti a fejlesztők közötti együttműködést és tudásmegosztást. Kódrészletjavaslatokat nyújt a meglévő kódtárak és ajánlott eljárások alapján, lehetővé téve a fejlesztők számára, hogy kihasználják a kódolási közösség kollektív tudását és tapasztalatait. Ez segít növelni a kód újra felhasználhatóságát, minőségét és hatékonyságát a fejlesztési folyamatban. 

A GitHub Copilot megkönnyíti a programozási oktatást azáltal, hogy segíti a kezdőket a gyorsabb és pontosabb kódírásban, felgyorsítva a tanulási folyamatot. Segít megérteni a közös kódolási mintákat és a legjobb gyakorlatokat, javítva a kódolási készségeket és stílust. Segíti a kezdőket a gyakori szintaktikai és logikai hibák elkerülésében, és a Github Copilottal való interakció révén különféle módszereket és algoritmusokat fedezhetnek fel problémamegoldó képességeik javítása érdekében

AI asszisztens által javasolt kód szinte mindig szintaktikailag helyes

AI asszisztensek valóban jók a kód magyarázatában 

A GitHub Copilot fontos jellemzője, hogy képes tanulni a fejlesztő kódbázisából



Negatívumok

Mivel ez egy gépi tanuláson alapuló eszköz, minőségét és pontosságát a betanítási adatok befolyásolják. Bizonyos esetekben előfordulhat, hogy az általa nyújtott kódjavaslatok nem optimálisak, a fejlesztő kódszintjétől függően, ami manuális módosításokat igényel a fejlesztőktől.

Előfordulhat továbbá, hogy a GitHub Copilot nem alkalmas minden programozási feladatra vagy tartományra. Hatékonyabb az explicit mintákat és közös kódstruktúrákat tartalmazó feladatoknál. Összetett vagy területspecifikus forgatókönyvek esetén továbbra is szükség van az emberi szakértelem bevonására és a kézi kódolásra.


Bár GitHub Copilot kódjavaslatokat hozhat létre, elengedhetetlen a létrehozott kód minőségének és helyességének biztosítása. A kutatók dolgozhatnak azon, hogy javítsák a modell képességét a potenciális hibák, kódfelülvizsgálatok és biztonsági rések észlelésére, ezáltal megbízhatóbb és biztonságosabb kódajánlásokat nyújtva.


Alapvető használat


1. Soron belüli javaslatok
     Kezdje el írni a kódot (vagy kódot kapcsolódó tételek, például megjegyzések vagy tesztek)
           Másodpilóta-javaslat fogadása szürke szöveggel (több javaslat is lehet)
                      Válassza a Másodpilóta javaslatának elfogadását, vagy folytassa a gépelést

                Kitöltések letiltása (másodpilóta állapot menü)

2. Bármilyen kérdésben/parancsban kérjen segítséget a Copilottól (interaktív)
         A másodpilóta potenciális vagy kapcsolódó követést biztosít kérdéseket vagy parancsokat
             A Copilot megőrzi a felhasználók beszélgetéseinek előzményeit
            Ügynökök és perjel parancsok
                   A hatókör és a szándék megjelölésével relevánsabb válaszokat kaphat


Copilot gyorsgombok (VS code):


     Inline kódjavaslat elfogadása       —> Tab
     Soron belüli kódjavaslat elvetése —> Esc
     Következő javaslat megjelenítése —> Alt + ] 
     Előző javaslat megjelenítése         —> Alt + [ 
     Indítójavaslat                                —> Alt + \ 
     Nyisson meg 10 javaslatot egy külön ablaktáblában —> Ctrl + Enter


Copilot megvalósítás elvei (elvárások)

Mindenütt jelen van a fejlesztők által használt összes eszközben, és minden olyan feladatba integrálva van, amelyet a fejlesztők végeznek. Javaslatokat kínál, bárhol ír, és betekintést nyújt bárhová, ahol olvas. Mindez radikálisan használható élménnyel. 
Személyre szabva az egyén, a projekt, a csapat, a szervezet és a közösség kontextusához és tudásához. „Második agy” felkínálása a fejlesztők számára, amely megérti az Ön szándékait, előzményeit, és segít az információk jelentésre fordításában (kód, dokumentumok stb.)

Alapértelmezés szerint társalgó, így a természetes nyelv bármit elérhet. Informális és iteratív felületet kínál, amely lehetővé teszi a fejlesztők számára, hogy hangos gondolkodással, majd a felmerülő meglátásokra reagálva gördülékenyebben alkossanak. 
Biztonságos, megbízható és megbízható, így ügyfeleink nem csak a technológiára és a termékre fogadhatnak, hanem a GitHubra, mint partnerre és a felelős AI-gyakorlatok és célok megvalósítására.


Figyelem, téveszmények elkerülése
A képzési adatok hatással vannak a javaslatokra 
GitHub Copilot != Fordító 
Az AI nem tud olvasni a gondolataidban


Egyszerű Prompt Engineering jellemzők
Egyszerre egy dolog – az egyedüli felelősség 
A felszólítás konkrét legyen
Várjon rövid válaszokat (inkább tagoljuk fel a bonyult kérdést)
A kód megjegyzései nem lehetnek túl hosszúak, ellenkező esetben a generált válaszok pontossága csökken


További irányvonalak
AI-alapú tagoló címkék a kiosztása
Automatikusan javasoljon program bekezdéseket a fejlesztők felé a programkód változásai alapján 
Szükség esetén automatikusan figyelmeztessen és teszteket javasoljon


VS code telepítése windows környezetben


● A telepítő letölthető a https://code.visualstudio.com/ oldalról
● A letöltött VSCodeUserSetup-x64-x.xx.xxx.exe elindításával a program a szerződés elfogadása után gyorsan telepíthető ( a fájl neve a verziószámot és a platformot is tartalmazza ezért ez a későbbiekben eltérhet)
● A telepítés végeztével a szerkesztő elindul egy üdvözlő képernyővel amin egy funkció bemutató is elérhető (angol nyelven) Get Started with VS Code vagy kezdhetjük a kódszerkesztést a Start alatt elhelyezkedő Linkekkel is.



Kiegészítők telepítése, VS Code Marketplace 


A bővítményekkel kiegészítheti az eleve bő lehetőségeit a szerkesztőnek. A kiegészítők között kereshet szöveg alapon, az eredmények szűrhetőek kategóriánként
A keresési eredmények között a kiegészítőre kattintva egy leíró oldal jelenik meg.
A bővítmény az Install gombra kattintva telepíthető. Ha nincs rá  szükség akkor az uninstallal eltávolítható









Megjegyzések