Waarom de copiloot van GitHub niet het einde is van programmeren

0
167
Diverse fotografie/Shutterstock.com< /figuur>

GitHub's lancering van Copilot heeft de afgelopen week behoorlijk wat discussie losgemaakt. Copilot beweert 'uw AI-paarprogrammeur' te zijn die met u samenwerkt om betere code te produceren.

Copilot, gedistribueerd als een Visual Studio Code-extensie, is als een veel krachtiger automatisch aanvullen dat hele codesecties kan invullen. Het kijkt naar wat je schrijft en suggereert nieuwe regels of volledige op zichzelf staande functies.

De introductie van Copilot heeft enige angst veroorzaakt dat het uiteindelijk de ontwikkelaars zal vervangen. Immers, als het weet wat je schrijft en kan suggereren wat er daarna komt, komt het dan nog niet het dichtst in de buurt van een AI-aangedreven ontwikkelaar? Dit is waarom dat niet het geval is.

Wat is Copilot eigenlijk?

Ten eerste, het is ;s nuttig om te ontdekken wat Copilot vandaag is. De preview-release is gebouwd op OpenAI Codex, een AI-systeem dat Microsoft heeft overgenomen van OpenAI. Het is een krachtige broncode-analysator die compatibel is met tientallen populaire programmeertalen.

Codex is bedoeld om te begrijpen “hoe” mensen gebruiken code. Het bepaalt de context van de code die je schrijft en suggereert wat er daarna zou kunnen komen. In tegenstelling tot de automatische aanvulling van een IDE, is Copilot in staat om nieuwe uitvoer te synthetiseren uit de code die het heeft geleerd. Het is niet alleen een index van eerder geziene code.

Advertentie

GitHub citeert momenteel een paar specifieke voorbeelden als belangrijke use-cases. Deze omvatten het genereren van algemene functies, automatische productie van unit-tests en verbeterde detectie van code in API's en bibliotheken. Als u integreert met een algemene API van derden, kan Copilot u op weg helpen voordat u de documentatie hebt gelezen of een standaardtekst hebt gekopieerd.

Het systeem kan ook de voltooiing van repetitieve taken automatiseren. codesecties, zoals een array van objecten met vergelijkbare eigenschappen. U kunt de eerste paar handmatig schrijven en vervolgens Copilot de rest van de array laten vullen met uw voorbeeld. Het doet denken aan het naar beneden slepen van celwaarden in Excel.

Hoe ver gaat de copiloot?

Op dit moment is het antwoord “niet erg ver.” Ondanks alle “intelligentie”, “contextuele” en “synthesizer” buzzwords, Copilot heeft nog steeds beperkt inzicht in uw ware bedoelingen en wat uw code moet bereiken.

Copilot kijkt alleen naar uw huidige bestand bij het berekenen van suggesties. Het zal niet beoordelen hoe de code in uw programma wordt gebruikt. De interpretatie van uw werk door de AI kan aanzienlijk verschillen van die van uzelf en kan per bestand verschillen, zelfs als de ware redenering achter de bestanden niet verandert.

GitHub's is ook duidelijk dat de uitvoer van Copilot niet gegarandeerd de “beste” aanpak of zelfs code die werkt. U kunt beveiligingsproblemen krijgen, regels die oude of verouderde taalfuncties gebruiken, of code die gewoon niet werkt of logisch is. U moet elke suggestie van Copilot die u gebruikt controleren om er zeker van te zijn dat uw project nog steeds compileert en draait.

De echte rol van Copilot in het ontwikkelingsproces zou nu iets duidelijker moeten zijn: het is een ondersteunende technologie, bedoeld om het alledaagse wat gemakkelijker te maken, geen echte automaat. Zie het als een hulpje of een navigator, niet als een of andere alwetende ontwikkelaar die uw code voor u schrijft.

Copilot schaalt niet

Copilot is het beste wanneer u het u laat helpen bij het schrijven van functies die veelvoorkomende gebruikssituaties oplossen. Wat het niet kan, is de bredere context van uw codebase begrijpen. Zonder het vermogen om uw bedoelingen echt te begrijpen, is de schaal van Copilot beperkt.

Advertentie

GitHub zegt dat het werkt aan het slimmer en nuttiger maken van Copilot. Maar totdat het je hele project kan bekijken, niet een enkel bestand, is het onduidelijk hoe zijn rol verder kan worden uitgebreid. In zijn huidige staat is Copilot in wezen een veredelde autocomplete. In plaats van op tab te drukken om de namen van standaard bibliotheekfuncties automatisch in te vullen, kun je suggesties voor de functies zelf accepteren.

Op programmeersites zoals Stack Overflow zijn al oplossingen voor abstracte technische problemen te vinden. Copilot bespaart de tijd die nodig is om naar een vraag te zoeken, de antwoorden te bekijken en de code te kopiëren en plakken. Het is echter aan u om uit te zoeken hoe u de oplossing in uw algehele systeem kunt integreren, nadat u heeft gecontroleerd of de suggestie van Copilot echt werkt.

Copilot programmeert eigenlijk helemaal niet. Het kijkt naar wat je hebt geschreven, leidt daaruit af wat je misschien probeert te doen, en probeert iets geschikts samen te stellen uit de geleerde oplossingen. Copilot werkt voor u, niet andersom. Het is niet in staat om creatief te denken, een architectuur op hoog niveau te suggereren of een samenhangend systeem te produceren. Elke suggestie staat volledig op zichzelf en is uitsluitend afgeleid van de code die er direct omheen staat in het bronbestand.

Zoals GitHub zelf toegeeft, is Copilot echt afhankelijk van jou. De tool werkt het beste wanneer uw codebasis logisch is georganiseerd in kleine functies met duidelijke typen, opmerkingen en doc-blokken. Als u de beste resultaten wilt, moet u Copilot leiden door zelf hoogwaardige code te schrijven.

Hoe zit het met licenties?

< p>Copilot is getraind met behulp van openbare GitHub-projecten met een breed scala aan licenties. Volgens GitHub vertegenwoordigt dit fair use van die projecten. Wat minder duidelijk is, zijn uw verantwoordelijkheden als u een suggestie van Copilot accepteert.

Advertentie

GitHub zegt dat de uitvoer van Copilot “van u is” en “jij bent er verantwoordelijk voor.” Er wordt expliciet vermeld dat u Copilot of een andere auteur niet hoeft te vermelden als u een voorgesteld fragment gebruikt. Het bedrijf wil Copilot graag presenteren als een "codesynthesizer" die originele uitvoer produceert, geen zoekmachine met geïndexeerde fragmenten.

Hier begint het probleem. Copilot heeft nog steeds een kans om codesecties woordelijk uit te voeren. Afhankelijk van de licenties rond die fragmenten, kan dit je eigen project in het water krijgen. Omdat Copilot is getraind in GitHub-projecten, kan het zijn dat er zelfs persoonlijke gegevens in uw bronbestanden worden geïnjecteerd.

Deze gebeurtenissen zijn bedoeld om zeldzaam te zijn. Er wordt gezegd dat ze waarschijnlijker zijn als de omringende codecontext zwak of onduidelijk is. Voorbeelden die tot nu toe zijn gezien, zijn onder meer GPL-gelicentieerde Quake-code die wordt uitgezonden zoals het is (compleet met profane taal) en de websitetekst en sociale links van een echte persoon die verschijnen wanneer Copilot denkt dat u een “over” schrijft ik” pagina.

De GPL en andere soortgelijke licenties bepalen dat afgeleide werken dezelfde rechten moeten bevatten, dus het opnemen van GPL-code in een commercieel product is een licentie-inbreuk. Daarom heeft het gebruik van Copilot ernstige juridische gevolgen die u moet evalueren voordat u het installeert. Aangezien Copilot code letterlijk lijkt uit te zenden, zonder de licentie aan te geven die bij het fragment hoort, kunt u onbewust inbreuk maken op het auteursrecht door een suggestie te accepteren.

Dit zou zonder enige twijfel moeten bevestigen dat de eerste release van Copilot dat niet is een menselijke ontwikkelaar gaan vervangen. De code die het uitzendt, is niet gegarandeerd relevant, kan gebroken of verouderd zijn en kan zelfs een juridisch risico vormen.

Conclusie

Copilot is een ambitieus project waar veel discussie over is geweest. Het niveau van het debat geeft aan dat veel mensen sterke gevoelens hebben over het idee. Het is alweer een tijdje geleden dat een nieuwe ontwikkelaarstool op de eerste dag zoveel aandacht trok.

Advertentie

Copilot is aantrekkelijk omdat het inspeelt op verschillende frustraties van ontwikkelaars. De meeste, zo niet alle, programmeurs voelen de inefficiëntie bij het schrijven van “boilerplate” code die niet erg specifiek is voor hun project. Ze nemen Copilot zonder meer en hebben nu een oplossing die meer tijd vrijmaakt om aan de creatieve aspecten van hun werk te werken.

Waar Copilot faalt, is de algemene benadering die GitHub heeft gevolgd voor het trainen van de model. Het opnemen van GPL-gelicentieerde code en het volledige ontbreken van enige vorm van outputtesten zijn onoplettendheden die het echte gebruik van Copilot zullen belemmeren. Het is onduidelijk of de beslissing van GitHub om het model te trainen met openbare code daadwerkelijk onder redelijk gebruik valt; er wordt gespeculeerd dat dit niet het geval is, in ieder geval in sommige rechtsgebieden.

Bovendien betekent GitHub's onvermogen om Copilot-code te verifiëren echt werkt, wat betekent dat ontwikkelaars nog steeds voorzichtig moeten zijn en alles moeten bekijken wat het schrijft. Een groot deel van de belofte van Copilot ligt in het helpen van onervaren ontwikkelaars, maar dit zal niet gebeuren als code met mogelijk fouten wordt voorgesteld en geaccepteerd.

Ten slotte geeft Copilot geen enkele indicatie van hoe of waarom zijn suggesties werken. Als het menselijke ontwikkelaars echt wil vervangen, moet het in staat zijn om de werking van een oplossing uit te leggen en inzicht te geven in de beslissingen die het heeft genomen. Ontwikkelaars kunnen de machine niet blindelings vertrouwen; er zal altijd toezicht en evaluatie van verschillende oplossingen moeten zijn.

Het hoe en waarom is ook de grootste uitdaging waarmee een ontwikkelaar in het begin van zijn carrière wordt geconfronteerd, wat de rol van Copilot als mentortool belemmert. Iedereen kan broncode kopiëren van openbare projecten, documentatie, hun collega's of Copilot, maar uiteindelijk verwerft het inzicht in waarom oplossingen werken die u vooruit helpen in uw carrière.

Copilot in zijn huidige iteratie niet& #8217; dit niet aanpakken – het is nog steeds aan jou om uit te zoeken wat de ingevoegde code doet. Zelfs een ontwikkelaar die regelmatig op Stack Overflow vertrouwt, zal op een betere plek terechtkomen, omdat ze antwoorden zullen lezen en de denkwijze achter oplossingen zullen leren. Copilot is een zwarte doos die kan worden gezien als een opslagplaats van perfecte code-suggesties; het bewijs tot nu toe laat zien dat dit verre van het geval is.