Home > Digitale technologieën > AI en big data > AI: codegeneratoren, een revolutie voor ontwikkelaars

AI: codegeneratoren, een revolutie voor ontwikkelaars

Gepubliceerd op 7 februari 2024
Deel deze pagina :

Ontwikkeling is een van de gebieden die het meest wordt beïnvloed door de vooruitgang in AI. Het fenomeen heeft niet gewacht op ChatGPT. Hoe kan AI het ontwerpen, programmeren en optimaliseren van software en websites vergemakkelijken? Wat zijn de beste AI-code assistenten? Wat zijn hun beperkingen?

Illustratie artikel IA de code

“AI zal binnen vijf jaar 80 % aan code schrijven”, werd in 2022 op profetische en enigszins provocerende wijze bevestigd door Thomas Dohmke, de baas van GitHub, het platform dat door meer dan 100 miljoen ontwikkelaars wordt gebruikt.

Generatieve AI’s zoals ChatGPT, Copilot of Gemini (voorheen Google Bard) hebben de democratisering van kunstmatige intelligentie gemarkeerd. Gebaseerd op grote taalmodellen (LLM)worden deze AI’s niet alleen gebruikt om tekst of afbeeldingen te maken. Ze kunnen ook code genereren, er commentaar op geven, optimalisaties voorstellen of op zoek gaan naar bugs, waardoor ontwikkelaars kostbare tijd besparen.

Gelanceerd in 2021, GitHub-copiloot, de populairste AI voor codegeneratie, telt al in oktober 2023 meer dan 1 miljoen betalende gebruikers in meer dan 37.000 organisaties !

Er is niets meer nodig om het jaar 2024 te wijden aan AI gespecialiseerd in codering. Genoeg om het debat dat door de trend is ontstaan nieuw leven in te blazen low-code/geen-code over het verdwijnen van het beroep van ontwikkelaar, of op zijn minst de onvermijdelijke evolutie ervan.

Het duurde slechts 16 minuten om dit spel te maken!

Dankzij de AI van FRVR, het duurde slechts 8 minuten om de code voor het Space Aliens-spel te maken en nog eens 8 minuten voor het ontwerp.

Code, de ideale gegevens om AI te voeden

Code is een van de favoriete gebieden van AI. En dit, ruim vóór de komst van ChatGPT in november 2022. Laten we de IBM Watson Code-assistent uit 2015, DeepCode uit 2016 aanhalen om beveiligingsproblemen in een programma te vinden, of Microsoft IntelliCode uit 2017 om de automatische codeaanvulling van IntelliSense te verbeteren, die tien jaar eerder in Visual Studio verscheen.

Het is niet verrassend dat deze AI’s gebaseerd zijn op grote taalmodellen (LLM’s) die zijn getraind op grote op tekst gebaseerde datasets. En om machine learning-algoritmen aan te drijven, hebben deze AI’s gestructureerde gegevens nodig. De code wordt dan een ideale kandidaat: in tekstformaat, gestructureerd, in grote hoeveelheden beschikbaar, in open source, in enorme repositories zoals GitHub of SourceForge.  

En dus, GitHub Copilot is getraind op de 54 miljoen opslagplaatsen van GitHub, inclusief een dataset van 159 GB aan Python-code.

Waar worden code-AI's voor gebruikt?

Het gebruik van kunstmatige intelligentie is voor veel ontwikkelaars dan ook gemeengoed geworden. Vooral omdat deze tools binnen hun bereik liggen. Ze zijn te vinden in de vorm vanuitbreidingen in de meest voorkomende ontwikkelomgevingen (IDE's), zoals Visual Studio Code, Eclipse of gespecialiseerde software van JetBrains (IntelliJ, PhpStorm, PyCharm, WebStorm…).

Tot op heden bestaan er enkele honderden ontwikkelingshulpmiddelen, die een breed scala aan toepassingen bestrijken. Hun aantal neemt voortdurend toe. Elke week verschijnen er nieuwe op AI gebaseerde tools die voldoen aan de vraag van ontwikkelaars naar efficiëntere en effectievere oplossingen. 

De Er zijn veel toepassingen van AI voor ontwikkeling :

Het genereren van code en het oplossen van bugs vertegenwoordigen de helft van het gebruik van Tabnine-gebruikers

Automatische codegeneratie

Dit is veruit de meest gebruikte functie door ontwikkelaars. De AI maakt code aan op basis van een verzoek (een prompt), een beschrijving in natuurlijke taal van wat we willen, of op basis van de code die al is ingevoerd door deze automatisch aan te vullen. Deze laatste autocomplete-functie is een verbetering ten opzichte van de autocomplete-systemen die al lang bestaan in IDE's. Maar in plaats van alleen maar het volgende woord te raden, genereert de AI een of meer regels code op basis van waarschijnlijkheidsstatistieken.

De AI doet alleen suggesties. De ontwikkelaar kan zijn verzoek iteratief verfijnen om het gewenste resultaat te verkrijgen.   

De tijdsbesparing is enorm. Ontwikkelaars kunnen sneller coderen (55 % sneller volgens GitHub-statistieken), met meer precisie en met een beter begrip van de code.

Met GitHub Copilot kunt u in één seconde een knopcomponent maken. Je hoeft het alleen maar te vragen!

Bugdetectie en correctie

Een code-AI wordt ook gebruikt om code te debuggen, om deze te valideren aan de hand van de syntaxis van een bepaalde taal, maar ook om fouten op te sporen die moeilijk te vinden zijn in complexe code. Zo analyseert de AI de aangeleverde code en detecteert mogelijke fouten, zoals:

  • syntaxisfouten : een puntkomma ontbreekt aan het einde van een instructie in Java of JavaScript, een ontbrekende afsluitende tag in PHP, een extra accolade in CSS, enz.
  • runtime-fouten: gebruik van een niet-geïnitialiseerde of verwijderde variabele (NullPointer), proberen toegang te krijgen tot een object dat niet langer toegankelijk is in het geheugen (PointerException), stapel te groot aanroepen (StackOverflow)…
  • logische fouten : delen door nul, rekenkundige overloop, niet-bestaande functieaanroep…
  • invoer-uitvoerfouten : lees- of schrijffouten op een opslagmedium, poging een bestand te openen dat niet bestaat, enz.
  • opmaakfouten : onverwacht formaat door een tekenreeks, onjuist gegevenstype…

Optimalisatie en herschrijven van code

AI's zijn in staat de kwaliteit van de code, de uitvoeringssnelheid en de leesbaarheid te verbeteren. Zij stellen voor dat er wijzigingen moeten worden aangebracht: refactoring code (vereenvoudiging van de structuur, de code modulair en herbruikbaar maken, toepassing van SOLID-principes, enz.), vermindering van onnodige lussen, parallellisatie van taken, optimalisatie van datastructuren en input-outputs, enz.   

AI's snuffelen code ruikt, slechte softwareontwerppraktijken die ervoor kunnen zorgen dat code moeilijker te debuggen is en het risico op bugs vergroten. Zo worden codeduplicaties, niet-expliciete namen van variabelen of overmatige koppelingen (klassen en modules die te onderling afhankelijk zijn) binnen enkele seconden opgespoord.

Verder is deIA formatteert de code volgens de conventies en best practices van een bepaalde taal terwijl u opmerkingen en documentatie toevoegt. De leesbaarheid van de code, het begrip en de onderhoudbaarheid ervan worden vergemakkelijkt, waardoor ontwikkelaars het project snel kunnen hervatten, zelfs degenen die er niet aan hebben deelgenomen.

Codeanalyse en uitleg

Om code beter te begrijpen, kan een ontwikkelaar via een chatinterface een AI in natuurlijke taal bevragen. Sommige AI is ook in staat codevisualisaties te genereren om ontwikkelaars te helpen de structuur van de code, de logica ervan en de relaties tussen de verschillende onderdelen waaruit de code bestaat, beter te begrijpen.

Het massale gebruik van AI om code uit te leggen heeft geleid tot een daling van het publiek van Stack Overflow, het beroemde vraag-en-antwoord forum dat door miljoenen ontwikkelaars wordt geraadpleegd, waardoor in oktober 2023 28 %'s uit het personeel zijn verwijderd.

Codedocumentatie

Het voltooien van de code vereist het schrijven van de documentatie, een vervelende en vaak over het hoofd geziene stap. Te vaak worden ontwikkelaars gedwongen om steeds sneller werkende code te leveren, waardoor de documentatie op een laag pitje blijft staan.

Kunstmatige intelligentie kan dat allemaal veranderen. Door de code te analyseren kan het onmiddellijk volledige, geformatteerde documentatie produceren, die helderheid en leesbaarheid garandeert. Dit revolutionaire proces vermindert de technische schuld aanzienlijk en stelt ontwikkelaars in staat zich te concentreren op hun kerntaak: code maken.

Detectie van beveiligingsinbreuken

Je zou kunnen denken dat AI’s net zo nuttig zijn voor het repareren van code als voor het detecteren van beveiligingskwetsbaarheden. Het is het geval. AI houdt van Checkmarx CheckAI, BurpGPT, DeepCode, Codetie, GitHub-copiloot detecteren kwetsbaarheden en doen aanbevelingen om ze te verhelpen, soms met slechts één klik. Ze detecteren bekende kwetsbaarheden, anti-beveiligingspatronen zoals SQL-injecties of XSS. Sommige AI's kunnen de gegevensstroom in de broncode analyseren om potentiële in- en uitgangen voor aanvallen te identificeren.


We moeten echter waakzaam blijven en niet uitsluitend op AI vertrouwen. Het uitvoeren van handmatige statische en dynamische tests blijft absoluut noodzakelijk.

Codacy analyseert de code en geeft de benodigde oplossingen weer in uw Git-repository.

Geautomatiseerde testgeneratie

Dankzij zijn mogelijkheden is AI daartoe in staat automatische tests uitvoeren. Dit brengt veel voordelen met zich mee, zoals tijdwinst, verbetering van de codedekking (het identificeren van delen van code die niet handmatig zijn getest), betere bugdetectie en het verlagen van de kosten die gepaard gaan met handmatig testen.

Tools voor het genereren van tests omvatten DeepCode wie gebruikt demachinaal leren om eenheids- en integratietests te genereren.

Deze technologie is echter nog niet perfect. Het bespaart tijd, maar moet toch worden aangevuld met handmatig testen, met name om niet-functionele aspecten van een app of site te testen, zoals bruikbaarheid of prestaties. We kunnen AI nog niet beschouwen als een vervanging voor handmatig testen.

Converteren van de ene taal naar de andere

De meeste code-AI's zijn bedreven in verschillende programmeertalen en kunnen code van de ene taal naar de andere vertalen. De operatie is niet eenvoudig, omdat het overstappen van de ene taal naar de andere het converteren van syntaxis (het veranderen van blokstructuur naar inspringen bijvoorbeeld), logica (het veranderen van paradigma's en besturingsstructuren) vereist, het vinden van equivalente bibliotheken in de doeltaal, het converteren van commentaar en documentatie, en optimaliseer de code voor de doeltaal.

Zo kunnen we binnen enkele seconden overstappen van C++ naar Python en vice versa of van Java naar Python. Door AI aangedreven automatische codeconversie versnelt het softwareontwikkelingsproces op verschillende platforms en voorkomt handmatige vertaalfouten. Naast de onderstaande code-AI's zijn er gespecialiseerde AI's zoals DeepCode, Polyglot, Code Trans en AI-codevertaler.

Een nieuwe taal leren

Code AI's ondersteunen een groot aantal programmeertalen, waardoor de barrière tussen verschillende ontwikkelaars wordt weggenomen. We kunnen dus gemakkelijk een nieuwe taal leren door de AI te vragen deze om te zetten van een taal die we beheersen. Zoals we hierboven zagen, kan de AI ook bestaande code uitleggen of je laten testen door hem te vragen je fouten te corrigeren. De kers op de taart is dat AI’s zoals ChatGPT of Gemini (voorheen Bard) oefeningen kunnen maken en meerkeuzevragen kunnen coderen om je nieuwe kennis te testen.

GitHub Copilot kan bijvoorbeeld code in de belangrijkste talen en frameworks begrijpen en genereren, waaronder:

  • Samengestelde talen : C, C++, C#, Go, Java...
  • Scripttalen : Bash, JavaScript, Powershell, Python, Ruby, TypeScript…
  • Opmaaktalen: CSS, HTML, XML, JSON, YAML…
  • Databasetalen : SQL, MySQL, PostgreSQL…
  • Specifieke programmeertalen : SQL, R…
  • Kaders : Django (Python), Angular en React (JavaScript), ASP.NET (C#), Spring Boot (Java), Laravel (PHP), Qt (C++)…

Natuurlijk kan kunstmatige intelligentie niet tippen aan de zeer gespecialiseerde en interactieve trainingen die we bij ORSYS aanbieden. Onze 246 trainingen in software ontwikkeling en web worden geleid door ervaren veldprofessionals die hun cursussen aanpassen aan uw behoeften. AI vervangt menselijk contact niet.

De grenzen van AI voor het genereren van code

AI zorgt in alle fasen voor een revolutie in het ontwikkelingsproces. Ze worden echter nog steeds geconfronteerd met veel beperkingen en beperkingen waarmee rekening moet worden gehouden voordat ze worden gebruikt.

Een gestandaardiseerde code

De door AI gegenereerde code, afkomstig uit open source-codeopslagplaatsen, leidt tot gestandaardiseerde code, herhaalde code die soms de kwaliteit verslechtert en de algehele code verarmt. Zo analyseerde het adviesbureau GitClear 153 miljoen regels gewijzigde code, geschreven tussen januari 2020 en december 2023. Het concludeerde dat

Volgens GitClear zal de toename in copy-and-paste code veroorzaakt door AI de technische schuld van bedrijven de komende jaren waarschijnlijk verergeren.

Ongelijke kwaliteit afhankelijk van de taal

Code-AI's zijn net als alle AI's: de kwaliteit van hun reactie hangt sterk af van de kwantiteit en kwaliteit van de gegevens die voor hun training worden gebruikt. Dus, hoe populairder een programmeertaal is in openbare coderepository’s zoals GitHub, GitLab of Bitbucket, hoe relevanter de AI-suggesties zullen zijn.

JavaScript is bijvoorbeeld erg aanwezig in repositories. AI-suggesties op JavaScript zullen daarom zeer relevant zijn. Omgekeerd zullen bekende talen, maar relatief minder aanwezig in codeopslagplaatsen zoals Julia, ABAP van SAP of MATLAB, slecht worden ondersteund.

Programmeervooroordelen

Openbare opslagplaatsen die dienen als AI-trainingsgegevens kunnen slecht geschreven of resultaatgerichte code bevatten. Dit kan van invloed zijn op AI-codesuggesties, zoals het genereren van discriminerende code.

AI begrijpt geen complexe code

Op dit moment kunnen AI’s voor het genereren van code een project als geheel niet aan.

AI's zijn perfect voor het genereren van korte code, codefragmenten zoals fragmenten of functies. Omgekeerd zijn hun suggesties minder relevant voor lange code. Op dit moment betekent werken aan een complex project het opsplitsen ervan, zodat de AI het deel voor deel kan analyseren. De AI kan echter geen rekening houden met het hele plaatje of de hele context van het project integreren (budget, tijd, doelplatform, vaardigheden van ontwikkelaars, beschikbare tools, behoeften van belanghebbenden, enz.)

AI-slachtoffers van hallucinaties

Hallucinaties zijn bekend bij ChatGPT-gebruikers en zijn antwoorden die zijn bedacht door LLM's wanneer ze het juiste antwoord op een vraag niet kunnen vinden en als een bepaald feit worden gepresenteerd. Toegepast op de ontwikkeling kan dit leiden tot onjuiste, onveilige code, waardoor de ontwikkelaar tijd verspilt.

Auteursrecht en gegevensprivacykwesties

Als AI's op grote schaal gebruik maken van openbare gegevens, is er ongetwijfeld code die onder het auteursrecht valt, met het risico op plagiaat. Bovendien is het belangrijk om te onthouden dat wanneer je een AI gebruikt, je deze traint. Als je code schrijft die beschermd is door eigendomsrechten of die onderhevig is aan geheimhoudingsovereenkomsten, overtreed je mogelijk het beleid van je bedrijf. Sommige uitgevers, zoals Tabnine en GitHub voor Copilot Business, slaan je code niet op en trainen hun AI alleen op open source repositories waarvan de licentie dit toestaat.

Mogelijke inbreuken op de beveiliging

Zorg ervoor dat u niet te veel afhankelijk bent van AI voor de beveiliging van uw gegevens. Code die door AI’s wordt gegenereerd, wordt niet door mensen getest of gevalideerd. Bovendien hangt de kwaliteit van de code, zoals we hebben gezien, af van de kwaliteit van de gegevens waarop deze wordt getraind. Als de gegevens aangetast zijn of fouten bevatten, kan de gegenereerde code ook aangetast worden.

Bovendien kan de code die door AI's wordt gegenereerd moeilijk te controleren en te begrijpen zijn, waardoor het moeilijk is om beveiligingslekken te detecteren. Anders kunnen alleen AI's die gespecialiseerd zijn in cyberbeveiliging deze code analyseren!

Ethische problemen

Programma’s die de mens raken (gezondheid, autonoom rijden, selectie van kandidaten, etc.) kunnen ethische vragen oproepen die niet door AI worden beheerd of die tot vertekende resultaten kunnen leiden. Zou u de levens van patiënten of gebruikers van autonome voertuigen aan een AI toevertrouwen?

De toekomst van ontwikkeling zal worden geschreven door AI

Hoewel de tools nog voor verbetering vatbaar zijn, boekt AI gestage vooruitgang en levert het al veel diensten aan ontwikkelaars, die zich kunnen concentreren op andere samenwerkingstaken met een hogere toegevoegde waarde. Ze zullen bijvoorbeeld meer tijd hebben om de vele projectvergaderingen bij te wonen (coördinatie, demo's, monitoring, validatie, retrospectief, enz.), waar AI hen helaas nog niet kan vervangen!


De belangrijkste AI's voor het genereren van code

GitHub-copiloot

GitHub-copiloot

De bekendste code-assistent. Niet te verwarren met Copilot, de conversationele AI in Windows 11, Bing en Microsoft 365. GitHub Copilot werd in 2021 ontwikkeld door GitHub, een dochteronderneming van Microsoft, in samenwerking met OpenAI. Het belangrijkste voordeel is dat het als extensie kan worden geïntegreerd in grote IDE's zoals Visual Studio Code, Visual Studio, Vim, Neovim, JetBrains IDE's en Azure Data Studio.

Prijs: vanaf 10 $/maand of 100 $ per jaar

Tabnine-logo

Tabnine

Deze open source-tool wordt door 3 miljoen ontwikkelaars gebruikt en werkt met GPT-modellen om code te voorspellen en voor te stellen terwijl de ontwikkelaar schrijft. De tool biedt ook fragmenten voor veelvoorkomende taken en een chatfunctie. Tabnine kan worden geïntegreerd met de belangrijkste IDE's: Visual Studio, Eclipse, Android Studio en JetBrains IDE's.

Prijs: vanaf 12 $/maand (gratis in beperkte versie)

Amazon CodeWhisperer-logo

Amazon CodeWhisperer

CodeWhisperer is ontwikkeld door Amazon en schrijft zowel fragmenten als volledige functies op basis van uw verzoek of bestaande code. Het kan worden gebruikt vanaf de opdrachtregel of via een IDE (VS Code, Visual Studio, JetBrains IDE, AWS Cloud9, enz.). De Amazon Q-gespreksassistent biedt persoonlijk advies.    

Prijs : vanaf 20 $/maand (gratis voor persoonlijk gebruik)

Google Gemini (voorheen Bard)

De nieuwe versie van Google's AI heet Gemini en verbetert de efficiëntie ervan, vooral bij de ontwikkeling. Bard genereert code in zo'n twintig talen, kan code uitleggen, debuggen en becommentariëren en schrijft functies voor Google Spreadsheets.   

Prijs: gratis (Voor nu)

ChatGPT

De beroemde generatieve AI is niet specifiek ontworpen voor programmeren, maar kan code in de belangrijkste talen begrijpen en genereren. ChatGPT heeft veel beperkingen: het maakt geen volledige programma's, integreert niet met IDE's en is niet erg goed in het detecteren van beveiligingsproblemen.    

Prijs : vanaf 20 $/maand (gratis in beperkte versie GPT-3.5)

Onze expert

De redactie van ORSYS Le mag bestaat uit journalisten die gespecialiseerd zijn in IT, management en persoonlijke ontwikkeling [...]

geassocieerd domein

bijbehorende opleiding