AI heeft in korte tijd flink wat stof doen opwaaien. Zeker ook in de wereld van software development. Tools zoals GitHub Copilot maken grote beloften: ze helpen je sneller, slimmer en met minder frustratie code schrijven. Maar hoe werkt dat nou echt in de praktijk?
Collega Rocco dook de afgelopen 30 dagen in de mogelijkheden van GitHub Copilot in AL en deelt zijn ervaringen. Wat zijn de voordelen, waar moet je op letten, en hoe kan een AI je workflow veranderen? Lees mee en ontdek hoe Copilot de manier van code schrijven verandert.
Wat heb je nodig:
1. GitHub account
2. Visual Studio Code
3. Bereidheid om samen te werken met deze AI
Installatie en eerste indruk
Na het installeren van de extensie GitHub Copilot in Visual Studio Code verschijnt er logo rechtsboven naast het zoekvenster. Klik naast dit logo, wat kennelijk een gezicht met een pilotenbril moet uitbeelden, om het Copilot menu te openen. Vergeet deze knop, want je hebt maar twee toetscombinaties nodig om met Copilot te werken. Sterker, Copilot gaat meteen voor je aan de slag tijdens het invoeren van je geliefde AL code. Belangrijk om aan te geven: Copilot doet voorstellen, je kan altijd kiezen om deze voorstellen te accepteren of te negeren.
Verschillen met andere AI’s
In tegenstelling tot de Copilot van Office-omgeving of ChatGPT, gebruikt GitHub Copilot in VS-Code je aanwezige of aangewezen objecten als referentie. Je kunt gerichte vragen stellen over je project en de daarin aanwezige maatwerkvelden.
Copilot tijdens programmeren
Zoals gezegd, doet Copilot continu voorstellen tijdens het typen van je AL-code. Zonder iets te vragen, completeert Copilot je regel code en doet zelfs hele voorstellen (meerdere regels code in grijs), die je eenvoudig met ‘Tab’ kunt accepteren. Als je een OnAction trigger toe wil voegen op je Page komt Copilot al met een lap code om je opgegeven report te runnen.
Ander praktisch voorbeeld is dat als je een label aan het toevoegen bent met placeholders, Copilot deze placeholders in het verplichte ‘Comment’ gedeelte invult. Na intypen ‘Comment’ komt Copilot bijvoorbeeld met ‘Comment = ‘%1 Document Type, %2 Document No.’. De veldnamen haalt Copilot op door te kijken waar het label wordt gebruikt en welke velden de placeholders daar vullen.
Ook handig: als je met je muis over een fout heen zweeft, verschijnt nu (ook) de optie ‘Fix using Copilot’.
Wil je een nieuwe procedure schrijven in je huidige object?, gebruik <Ctrl+i> om de ‘Inline chat’ te openen en vraag bijvoorbeeld ‘maak nieuwe procedure welke aangeeft of deze klant het afgelopen jaar meer dan 10.000,00 euro heeft besteld’. Probeer het eens en ben vooral verbaasd dat het zo snel werkt!
Toetscombinatie <Ctrl+Shift+i> opent rechts de ‘chat’ functie, meestal gebruikt voor algemenere vragen als: Wat is default waarde van FindSet, Welke suffixen moet ik gebruiken bij labels. Maar je kunt hier ook om complete voorstelcode vragen om een nieuw maatwerkveld toe te voegen aan tabel klant welke geplaatst moet worden achter het veld telefoonnummer op de klantkaart’.
Als je de scope waarbinnen Copilot moet werken wilt bepalen gebruik dan de ‘Working Set’. Deze staat boven het vraagvenster in de chat. De ‘Working Set’ kan je uitbreiden met ‘Add file’ maar je kunt er ook een selectie objecten uit je Explorer naar toe slepen. Je kunt ook vragen alleen je ‘active file’ te gebruiken. Overigens kan je gewoon in het Nederlands je vragen stellen, antwoorden zijn altijd in het Engels.
Tip: hoe uitgebreider je vraag, hoe beter het initiële antwoord. Vraag door en corrigeer Copilot. Copilot is soms een ‘pleaser’. Ik stelde de vraag of het mogelijk is in de launch.json op te geven welke record getoond moet worden na openen van het startupObjectId. Copilot kwam met niet bestaande (goed klinkende) parameter ‘startupObjectParameter’. Nadat te hebben medegedeeld dat dit niet werkt, kwam Copilot met een excuus.
Copilot leert dus echt van alles wat je terugkoppelt. Geef bijvoorbeeld aan dat je in de cloud werkt als AL-ontwikkelaar en geen OnPrem-procedures wilt gebruiken.
Krijg je een foutmelding op de voorgestelde code (vaak het geval, want Copilot is niet geschikt voor de geheel onervaren ontwikkelaar), vraag dan Copilot deze op te lossen met “ik krijg foutmelding bla bla” en Copilot doet een alternatief voorstel.
Verrassende voorstellen
Ik heb gemerkt dat Copilot soms met voorstellen komt waar ik in eerste instantie niet aan had gedacht. Zo kreeg ik van Copilot het voorstel om het zogenaamde ‘Dictionary’ (data type) te gebruiken in een ‘repeat until’ lus. Deze dictionary vullen met primary keys van wel/niet gebruikte records en na de ‘until’ de dictionary uit te lezen om er iets leuks mee te doen. Ik zou geneigd zijn geweest om een temporay-table hiervoor te gebruiken, maar Copilot kwam met deze snellere (?) maar zeker veiligere optie!
Nadelen
Traagheid bij uitvoeren van opdrachten met betrekking op meerder objecten. Bijvoorbeeld bij vragen zoals ‘Wijzig property XYZ van A naar B’. Je ziet dan, heel fraai om te zien, Copilot je objecten scannen en voorstellen doen. Andere extensies zoals [AZ AL Dev Tools] zijn een stuk sneller bij uitvoeren van dergelijke acties.
Conclusie
De eerste 30 dagen zijn gratis, daarna kost het $10 per maand. Is het deze prijs waard?
GitHub Copilot is een prima aanvulling bij de dagelijkse werkzaamheden. Hoe langer je het gebruikt en tijd neemt om door te vragen, des te beter de antwoorden worden.
GitHub Copilot is sinds kort gratis als je een GitHub account hebt. Ik zou deze gratis versie zeker uitproberen! Ikzelf ga de komende tijd kijken of deze beperkte gratis versie mij genoeg ondersteunt. $10 per maand zal mij niet tegenhouden om anders de volledige versie aan te schaffen.