Artificiell intelligens har revolutionerat många branscher, och nu står vi inför ett fascinerande fenomen: AI som skriver kod. Men hur bra är egentligen AI-baserade kodgeneratorer som ChatGPT jämfört med mänskliga programmerare? En ny studie publicerad i IEEE Transactions on Software Engineering har undersökt just detta, med några överraskande resultat.
Forskare från University of Glasgow har utvärderat kod producerad av OpenAI:s ChatGPT med fokus på funktionalitet, komplexitet och säkerhet. Resultaten visar att ChatGPT:s förmåga att producera fungerande kod varierar enormt - från så lågt som 0,66% till imponerande 89% framgång - beroende på uppgiftens svårighetsgrad, programmeringsspråk och andra faktorer.
Dr. Yutian Tang, föreläsare vid University of Glasgow och medförfattare till studien, förklarar: "AI-baserad kodgenerering kan ge vissa fördelar när det gäller att öka produktiviteten och automatisera mjukvaruutvecklingsuppgifter - men det är viktigt att förstå styrkor och begränsningar hos dessa modeller."
För att utforska dessa begränsningar i detalj testade forskarteamet GPT-3.5:s förmåga att lösa 728 kodningsproblem från testplattformen LeetCode i fem programmeringsspråk: C, C++, Java, JavaScript och Python.
Överlag visade sig ChatGPT vara ganska bra på att lösa problem i olika kodningsspråk - särskilt när det gällde att lösa kodningsproblem som existerade på LeetCode före 2021. För enkla, medelsvåra och svåra problem kunde AI:n producera fungerande kod med framgångsfrekvenser på cirka 89%, 71% respektive 40%.
Tang noterar dock: "När det kommer till algoritmiska problem efter 2021 påverkas ChatGPT:s förmåga att generera funktionellt korrekt kod. Den misslyckas ibland med att förstå innebörden av frågor, även för problem på enkel nivå."
Till exempel sjönk ChatGPT:s förmåga att producera fungerande kod för "enkla" kodningsproblem från 89% till 52% efter 2021. Och dess förmåga att generera fungerande kod för "svåra" problem sjönk från 40% till endast 0,66% efter denna tidpunkt.
Tang förklarar: "En rimlig hypotes för varför ChatGPT kan prestera bättre med algoritmiska problem före 2021 är att dessa problem ofta förekommer i träningsdatauppsättningen."
I grund och botten handlar det om att kodning utvecklas, och ChatGPT har ännu inte exponerats för nya problem och lösningar. Den saknar en mänsklig programmerares kritiska tänkande och kan endast hantera problem den tidigare stött på. Detta kan förklara varför den är så mycket bättre på att hantera äldre kodningsproblem än nyare.
Tang påpekar: "ChatGPT kan generera felaktig kod eftersom den inte förstår innebörden av algoritmiska problem."
Intressant nog kan ChatGPT generera kod med mindre körtids- och minnesbelastning än minst 50% av mänskliga lösningar på samma LeetCode-problem. Detta visar på AI:ns potential att i vissa fall producera effektivare kod än människor.
Forskarna undersökte också ChatGPT:s förmåga att rätta sina egna kodningsfel efter att ha fått feedback från LeetCode. De valde slumpmässigt ut 50 kodningsscenarier där ChatGPT initialt genererade felaktig kod, antingen på grund av att den inte förstod innehållet eller problemet.
Medan ChatGPT var bra på att åtgärda kompileringsfel, var den generellt sett inte bra på att korrigera sina egna misstag.
Tang förklarar: "ChatGPT kan generera felaktig kod eftersom den inte förstår innebörden av algoritmiska problem, så denna enkla felinformation är inte tillräcklig."
Forskarna fann också att ChatGPT-genererad kod hade en del sårbarheter, såsom saknade null-tester, men många av dessa var lätta att åtgärda. Deras resultat visar också att genererad kod i C var mest komplex, följt av C++ och Python, som har en liknande komplexitet som mänskligt skriven kod.
Baserat på dessa resultat betonar Tang vikten av att utvecklare som använder ChatGPT tillhandahåller ytterligare information för att hjälpa AI:n att bättre förstå problem eller undvika sårbarheter.
"Till exempel, när man stöter på mer komplexa programmeringsproblem, kan utvecklare tillhandahålla relevant kunskap så mycket som möjligt och berätta för ChatGPT i prompten vilka potentiella sårbarheter den ska vara medveten om," säger Tang.
Denna omfattande studie ger värdefulla insikter om styrkor och begränsningar hos AI-driven kodgenerering. Medan ChatGPT visar imponerande förmågor inom vissa områden, särskilt när det gäller äldre och välkända problem, har den fortfarande betydande begränsningar när det kommer till att hantera nyare, mer komplexa utmaningar.
För utvecklare och företag som överväger att integrera AI-kodgeneratorer i sina arbetsflöden är det viktigt att förstå dessa nyanser. AI kan vara ett kraftfullt verktyg för att öka produktiviteten och effektivisera vissa kodningsuppgifter, men det är inte en universallösning som kan ersätta mänsklig expertis och kritiskt tänkande.
Framöver kommer sannolikt fortsatt forskning och utveckling att adressera många av de begränsningar som identifierats i denna studie. Men tills vidare förblir mänskliga programmerare oumbärliga, särskilt när det gäller att hantera nya, komplexa problem och säkerställa kodens övergripande kvalitet och säkerhet.
För mer information om studien och dess resultat, se den fullständiga rapporten publicerad i IEEE Transactions on Software Engineering.
För den som inte är insatt i programmering kan dessa resultat ändå vara intressanta och relevanta. AI:s förmåga att koda representerar ett betydande framsteg inom teknologi och automation. Precis som AI har börjat assistera inom områden som textproduktion och bildgenerering, ser vi nu hur den även kan bidra inom mjukvaruutveckling.
Detta innebär potentiellt snabbare och mer kostnadseffektiv utveckling av mjukvara som vi alla använder dagligen - allt från appar i våra smartphones till system som styr trafik och energidistribution. Samtidigt visar studien på vikten av mänsklig översyn och expertis, särskilt när det gäller nya och komplexa problem.
För samhället i stort understryker dessa resultat behovet av kontinuerlig utbildning och anpassning. Medan AI kan ta över vissa rutinmässiga kodningsuppgifter, ökar efterfrågan på människor som kan arbeta kreativt med ny teknologi, lösa komplexa problem och säkerställa att AI-genererade lösningar är säkra och etiska.
Sammanfattningsvis visar denna studie att medan AI gör imponerande framsteg inom kodning, förblir samspelet mellan människa och maskin avgörande för att driva teknologisk innovation framåt på ett ansvarsfullt sätt.
För att ytterligare belysa de utmaningar och möjligheter som ChatGPT erbjuder inom kodning, låt oss titta närmare på några vanliga problem som utvecklare stöter på och hur de kan hanteras:
ChatGPT kan ibland generera kod som inte passar in i det större sammanhanget av ett projekt. För att lösa detta bör utvecklare ge tydlig och detaljerad kontext när de ställer frågor till AI:n.
Som studien visar kan ChatGPT ha svårt med nyare koncept. Utvecklare bör därför vara uppdaterade om de senaste trenderna inom kodning och verifiera ChatGPT:s output mot aktuella källor.
ChatGPT-genererad kod kan ibland innehålla säkerhetsbrister. Utvecklare bör alltid granska och testa koden noggrant, särskilt när det gäller känsliga applikationer.
Genom att lära sig att skriva effektiva prompts kan utvecklare få bättre resultat från ChatGPT. Detta inkluderar att vara specifik, ge exempel och efterfråga förklaringar.
Använd ChatGPT som ett komplement till, inte en ersättning för, mänsklig kunskap. Låt AI:n hantera rutinuppgifter medan utvecklare fokuserar på mer komplexa problem och övergripande arkitektur.
Håll dig uppdaterad om de senaste AI-verktygen och tekniker för att maximera fördelarna med ChatGPT i din utvecklingsprocess.
Genom att vara medveten om dessa vanliga problem och implementera effektiva lösningar kan utvecklare bättre utnyttja ChatGPT:s potential inom kodning, samtidigt som de minimerar riskerna. Det är viktigt att komma ihåg att AI är ett kraftfullt verktyg, men det ersätter inte behovet av mänsklig kreativitet, kritiskt tänkande och domänexpertis inom mjukvaruutveckling.
Läs även: Cord-cutting: Så säger du upp kabel-TV för streaming