A kód megírása csak az első lépés egy program, alkalmazás stb. elkészítésében. Működőképes produktum csak a kód hibák után kutató átfésülése és kijavítása után állhat elő. A hibakeresés és javítás pedig időigényes folyamat, ami gyakran tovább tart, mint a fejlesztők először gondolnák. Ezért olyan fontos, hogy a Microsoft kifejlesztett egy BugLab nevű mesterséges intelligencia programot, amely segít megtalálni és kijavítani a kódban lévő hibákat.
A programozók gyakran sóhajthatnak fel ekképpen: Bárcsak létezne egy olyan módszer a hibák automatikus javítására, amely túlmutat a szintaktikai hibákon, és valóban megérti a kód mögött rejlő szándékokat. A Microsoft meghallotta a sóhajokat, és nemrégiben kifejlesztett egy mesterséges intelligenciát, amely mélytanulás segítségével képes felismerni és kijavítani a kódban lévő hibákat.
Mi az a BugLab, és hogyan működik?
A BugLab egy mesterséges intelligencia Python implementáció, amely kódon belüli hibákra vadászik és javítja azokat. Miltos Alamanis és Marc Brockschmidt, a Microsoft Research két kutatója fejlesztette ki. A gépi tanulásban gyakran használt címkézett adatok hiányát úgy sikerült leküzdeniük, hogy az önfelügyelt tanuláshoz folyamodtak, és lehetővé tették a BugLab számára az önképzést egy kódsorokkal folytatott "bújócskás" játékon keresztül.
A BugLabot két számítási modell segítségével képezték ki. Az egyik a hibákat a helyes kódrészletekben rejti el, a másik pedig a hibákat keresi és javítja. Mindkét modell folyamatosan tanul egymásból. Idővel a hibakereső egyre jobban elrejti a hibákat a kódban, a kereső pedig egyre jobban megtalálja és kijavítja azokat.
Így érti meg a kódot a BugLab
Azoknak a hibáknak a többsége, amelyek felismerésére és javítására a BugLab AI-t kiképezték, nem logikai hibát eredményez, hanem csak a kód általános kontextusából adódóan hibás. A fejlesztő szándékának megértése alapvető fontosságú az ilyen hibák megtalálásához.
Ha a kódrészleteket ugyanúgy kezeljük, mint a természetes nyelvek feldolgozását, az nem vezet optimális eredményekhez. A mesterséges intelligencia még mindig nehezen érti meg a különböző utasítások közötti kapcsolatot, ha azok különálló tokenekre vannak bontva.
Ehelyett a BugLab a kód egészét vizsgálja. Így minden egyes szintaxis, kifejezés, szimbólum és azonosító egy gráf pontjaiként jelenik meg, lehetővé téve a mesterséges intelligencia számára, hogy "megértse" a különböző csomópontok közötti kapcsolatot és viszonyokat. A hibakereső mesterséges intelligencia kiképzéséhez ezután neurális hálózati architektúrákat használnak. Képesek a kódgráf gazdag struktúrájából meglátásokat meríteni, és okokat szolgáltatni az egyes csomópontok és a többiek kapcsolatára.
Működik-e a BugLab valós kódon?
Fontos megjegyezni, hogy a BugLab nem helyettesíti a képzett programozót. Ez azért van, mert az összetett hibák még mindig nem elérhetőek. A Microsoft célja a mesterséges intelligenciával az olyan gyakran előforduló hibák felderítése és javítása, mint a helytelen Boolean-operátorok, például a "vagy" használata az "és" helyett és fordítva, továbbá a fordított értékösszehasonlítások és a változóval való visszaélések. A Microsoft szerint az eredmények ígéretesek, mivel a BugLab képes felismerni és automatikusan kijavítani egy kódrészletben található hibák mintegy 26 százalékát. Ennek ellenére a pontosság jelentős százaléka még mindig elveszik a téves pozitív eredmények és a kihagyott hibák miatt.
A Microsoft célja a BugLabbal az, hogy időt takarítson meg a szoftverfejlesztőknek, akik gyakran a legapróbb hibák keresésével rengeteg időt veszítenek. Bár a mesterséges intelligencia hibakereső modellje még csak most van fejlődésben, megvan rá az esély, hogy a hibák széles körét (a kellemetlenektől a katasztrofálisakig) megtalálja és kijavítsa. De néhány éven belül várhatóan a BugLab minden fejlesztő eszköztárának kötelező kelléke lesz, még ha nem is tökéletes.
Minél több ideje van az olyan mesterséges intelligencia-modelleknek, mint a BugLab, hogy valós példákon gyakoroljanak, annál jobb és pontosabb eredményeket fognak produkálni. A Microsoft kutatóinak a BugLab fejlesztése során az egyik legnagyobb kihívást jelentő akadály az volt, hogy a kód és a szándék emberi megértését beépítsék az eszközbe. De most, hogy ez nagyrészt megoldódott, arra lehet számítani, hogy a BugLab idővel egyre jobb lesz.