Berta Sándor

Jöhetnek a számítógépek által írt szoftverek

Unalomig ismert közhely, hogy az IT-szektorban hatalmas a munkaerőhiány, és a jövőben még több programozóra lesz szükség. Mint minden más ágazatban, a szűkösségen nyilvánvalóan itt is automatizációval lehet enyhiteni, a legalapvetőbb szintű feladatok gépekre hagyásával. Sokszor jövendölték már a favágás-szerű programozási feladatok végét, és valóban vannak részsikerek a területen, de a szoftveres feladatok iránti igény is egyre növekszik, és nem látszik az olló záródása. Mégis, a közeljövőben egyáltalán nem lesz meglepő, hogy bizonyos alkalmazásokat nem emberek készítenek.

Martin Vechev, az ETH Zurich informatikai professzora arra tanítja meg a számítógépeket, hogy maguk készítsenek szoftvereket. A szakember közölte, hogy az ötlet nem csupán lenyűgöző, de egyúttal nagyon is realisztikus. Már most is vannak olyan segédprogramok, amelyek megkönnyítik a szoftverfejlesztők munkáját és a jövőben e megoldásoknak köszönhetően bármely fejlesztő ha nem is ugyanolyan jól, de ugyanolyan gyorsan programozhat majd, mint a legjobb szakértők. Manapság pedig a minőségnél a sebesség sokkal fontosabb szempont, a hiányosságokat pedig majd áthidalja egy gyorsabb szerver.

Vechev szerint tíz éven belül annyira fejlett lesz az automatizálás, hogy a számítógépek is képesek lesznek önállóan rövid alkalmazásokat készíteni. Mindez elsősorban a gépi tanulásnak és a már most is létező hatalmas szoftveradatbázisoknak köszönhető, amelyek szabadon elérhetők. Ezekben a rendszerekben több millió programot tárolnak, amelyek összesen sokmillió sornyi kódot tartalmaznak. Ezekben az emberi fejlesztők könnyen elveszíthetik az áttekintést, de a számítógépek segíthetnek az adatmennyiség elemzésében és felhasználásában.


A meglévő kódmintákból a számítógépek felismerhetik és megtanulhatják, hogy melyik mintát milyen kontextusban lehet alkalmazni. Ilyen módon nem csupán az egyes jeleket és parancsokat ismerik meg, hanem azok jelentését és felhasználási szabályait is. E tanulási folyamat hasonlít arra, mint amikor a Google Fordító és más fordítószoftverek tanulnak. Vechev rámutatott, hogy azok a platformok is a gépi tanulást használják azért, hogy az egyes szavakat összefüggéseikben elemezzék, majd azokból következtessenek a jelentőségükre, a használatukra és a nyelvtani szabályokra.

A jövőbeli segédprogramok hasonló módon működnek majd, mint napjainkban az SMS-írásban segítő megoldások. Egy fejlesztőnek elegendő lesz beírni az első száz sor kódot, az alkalmazás elemezni fogja azt, majd összehasonlítja az adatbázisokban meglévő kódokkal és javaslatokat tesz a folytatásra. Ezeket a javaslatokat a programozók elfogadhatják vagy elutasíthatják. A számítógépek mindegyik választ elemezni fogják és ezáltal a javaslatok is egyre jobbak lesznek. E fejlesztések kulcselemét az úgynevezett valószínűségmodellek jelentik, amelyeket számos szoftverből és szoftverrészletből építik fel, s a legvalószínűbb javaslatokat jelenítik majd meg.

Vechev és csapata egyre jobb valószínűségmodelleket próbálnak kifejleszteni. Nemrég meg is alkották a PHOG nevű terméket, amely jelenleg a legprecízebb valószínűségmodell és amely nem csupán a programozónyelvekkel, hanem a természetes beszéddel is működik. Emellett - más modellekkel ellentétben - nemcsak válaszokat szállít, hanem a választást is érthetővé teszi a felhasználók számára. A PHOG-t bárki használhatja a segédszoftverek készítésére. Más segédletek, mint a JS Nice és a Deguard a kódok átvizsgálásában segítenek és javaslatokat kínálnak arra, hogyan lehet javítani a meglévő szoftvereken. Ezáltal elkerülhetővé válik, hogy a kódokba valaki kártevőt rejtsen el. A JS Nice-t eddig több mint 200 000 fejlesztő és IT-biztonsági szakember használta.

Vechev és az egyik korábbi doktorandusza tavaly megalapították a Deepcode nevű vállalkozást, amellyel hosszú távon olyan alkalmazásokat készítsenek, amelyek az intellektuálisan nehéz kihívásokat jobban megoldhatják, mint az emberek.

Hozzászólások

A témához csak regisztrált és bejelentkezett látogatók szólhatnak hozzá!
Bejelentkezéshez klikk ide
(Regisztráció a fórum nyitóoldalán)
  • kvp #6
    "Az implementáláshoz a helyes módszerek megtalálása már sokkal valósabb alternatívának tűnik deep learning-el és tartok tőle, hogy már ma is jobb eredményt hozna, mint a fejlesztők által készített _áltagos_ implementációs szint."

    Ha van eleg letezo szabvanyos feluletu implementacio egy gep betanitasahoz, akkor lehet hogy inkabb azokat kellene hasznalni es nem a gepet tanitani. Ebbol viszont max. egy onbovito funkcio konyvtar lesz, egy szakertoi rendszerrel megtamogatva, ami kepes a feladathoz kesz kodot valasztani. Mondjuk ez nagyjabol eleg is, es ha berakjak egy wizard moge akkor a tervezest vegzo fejlesztoknek is jol jonne. Lehetne mondjuk Google intelligent code wizard a neve. (egyebkent pont van hasonlo fejlesztes a Google-nel, csak meg nagyon az elejen jar)
  • mcganyol #5
    on:
    Ez is egy irány, de nem biztos hogy a legjobb. Természetesen az a kérdés, hogy hová tesszük az abasztrakciót. Erre egy elég jó (és ennél kiforottabb) ötletnek tűnik a modell alapú programozás. Azt kb egy féléves tanfolyam keretében meg lehet tanulni és meglehetősen jó eredményeket tud adni. Sajnos nem elég univerzális, ráadásul ha valami nem, vagy nem úgy működik rögtön magától ahogy elvárnánk, akkor nagyon nehéz, vagy inkább lehetetlen megjavítani. Ilyen eszköz pl a Yakindu

    Másik viszonylag érdekes dolog, hogy informatikus hiány jellemzően nem a faék egyszerű projektek miatt van, ahol persze az a lényeg, hogy nagyon kevés kattintással bárki meg tudja csinálni (ezt ma kb az office adja, word-excel-access-powerpoint a felmerülő informatikai problémák jó részére gyorsan alkalmazható). A bonyolultabb dolgok gépi _tervezése_ az szerintem még távol van, mert nincs igazán megfelelő betanító adat (mivel minden probléma más és más és nehéz ezeket jól absztrahálni. nyílván, lehetséges, mert egy tapasztalt architekt is ezt csinálja fejben, de ettől szerintem még legalább 10+ évre vagyunk) Az implementáláshoz a helyes módszerek megtalálása már sokkal valósabb alternatívának tűnik deep learning-el és tartok tőle, hogy már ma is jobb eredményt hozna, mint a fejlesztők által készített _áltagos_ implementációs szint.

    off:
    Teljes specifikáció előre, már igen rég óta nem nagyon van (és amíg volt sem működött). Ez utoljára a vízesés modellben volt így elképzelve, kb 15 éve és ma néhány nagyon-nagyon spéci esettől (<1%) eltekintve (mondjuk pl egy repülésirányítási rendszer, vagy paks vezérlése) ez egyszerűen nem elég hatékony. Általában az órabér sem menő, mert a megrendelőt pont nem szokta érdekelni, hogy neked az 5 perc vagy 3 nap. Funkciónkénti árat szokás adni (amit amúgy lehet, hogy a háttérben a fejlesztő óra alapon becsül). Egy funkció jellemzően menet közben is változik, de eleve erre kell készülni (amikor meglátja amit kért, akkor jön a "hú de jó, csak annyi kis változtatás kéne, hogy az és az egy kicsit máshogy legyen...")
    A megrendelő nem hülye, legfeljebb nem tudja pontosan előre hogy mit is akar, de ez természetes. Amelyik fejlesztő ezt nem látja át/be és nem megy ezeknek a dolgknak az elébe (pl rugalmas design-al, vagy legalább fejlesztés közbeni visszakérdezéssel) azt hívnám inkább hülyének, vagy legalábbis korlátoltnak.
    Akit érdekel ez a téma, de laikus https://www.agilealliance.org/ -on olvashat róla
    Utoljára szerkesztette: mcganyol, 2017.06.13. 10:55:33
  • M2 #4
    Azt el lehet intézni egy választással: vagy teljes specifikáció a szerződéskor, vagy órabér. :-)
  • cylontoaster #3
    És persze folyamat számlázza neki a hülyesége miatt feleslegesen lefejlesztet dolgokat, hátha tanul belőle :)
  • M2 #2
    Leghasznosabb egy olyan szoftver lenne, ami elé leül a megrendelő és végigviszi vele a hülye kéréseit és azoknak a negatív következményeit. :-)
    Egy példa: "Azt szeretném, hogy ha bárki az oldalamra látogat, fogadja egy teljes képernyős üdvözlő ablak!"
  • kvp #1
    Akarhogy is nezzuk, a programozo feladata nem valtozik, csak magasabb szintre kerul az absztrakcio. Ahogy ma mar nem kell se assembly-ben, kodolni, se operacios rendszer nelkul fejleszteni, ugy jelentek meg a 60-as evek elejetol az egyre fejlettebb program konyvtarak, amik raadasul egymasra epulnek. Azzal, ha az abszarakcios szintet tovabb noveljuk egy meg fejletebb kornyezettel, attol meg ugyanugy kell valaki aki meg tudja fogalmazni, hogy tulajdonkeppen mit is szeretnenk program formajaban latni. Ez az ember a programot tervezo, jellemzoen mernok. A favago munkat pedig a legtobb helyen mar reg kivaltottak valamilyen automatizacioval. Ha megsem, az max. azert lehet mert olcsobb ra embert fizetni mint egyszer jol megcsinaltatni egy magsabban kepzett szakemberrel vagy keresni ra egy kesztermeket.

    Tenyleges attores akkor lenne, ha a programtervezo mernok feladatkoret is at tudnak venni az mi-k, tehat gepek dontenenek majd arrol is hogy tulajdonkeppen mit is akarnak kifejleszteni. Ez meg egyelore nem varhato.