Az MI helyettesíteni fogja a programozók munkáját?
Rövidtávon semmiképpen nem. Maximum a nagyon kezdő programozókét igen, viszont ugye nagy tudású tapasztalt programozókra szükség lesz, és olyanok nem lesznek úgy, hogy előtte nem voltak kezdő programozók. Így az iparágnak hosszútávon érdeke lesz, hogy ahhoz, hogy legyen egy tapasztalt, nagy tudású programozója, ahhoz pátyolgatni kell vagy tíz kezdőt, hogy abból még ha el is hullik kilenc, akkor is lesz egy nagyobb tudású programozójuk 20–30 év múlva, mikor a mostani nyugdíjba megy.
Ha nincs programozó, akkor valakinek instruálni kell az MI-t. Ez alapvető, ujjgyakorlat jellegű algoritmusok, függvények esetén lehet, hogy működik. De komplexebb programok esetén a prompt meghatározása, hogy pontosan mit „alkosson” meg az MI, az van olyan komplex feladat, mint maga a programozás. Ne feledd, a magasabb szintű programnyelvek tulajdonképpen nem mások, mint egy kötött szintaktikával rendelkező nyelvek, amik meghatározzák, hogy mit csináljon a program, tulajdonképpen ugyanúgy instrukciók, csak éppen egzakt, egyértelmű jelentéssel.
A másik probléma, hogy egy komplexebb programban lehetnek hibák, hiányosságok, nem hatékony megvalósítások. Ezek nem feltétlenül szembetűnőek, egy nagyobb múltú program esetén simán van olyan eset, mikor évekig nem derül ki, hogy a program egyik részletében van egy hiba. Nos, programozási tudás nélkül aligha tudja mérlegelni az MI-t instruáló személy, hogy az, amit az MI legenerált, az jó, helyes megvalósítás-e, vagy van-e benne alapvető hiba. Programozási tudás nélkül maximum teszteléssel tudná ezeket a hibákat feltárni, de ott meg az a művészet, hogy minden potenciálisan felmerülő helyzetre gondolsz-e, teszteled-e minden olyan esetre a programot, ami a valóságban valamilyen eséllyel fennállhat. Még a helyes teszteléshez is kell programozói tudás, szemlélet.
És ha meg is találja valaki a hibát, akkor sem magától értődő, hogy hogyan kell úgy máshogy instruálni az MI-t, mit kell máshogy megfogalmazni, mivel kell az instrukciókat kiegészíteni úgy, hogy az már ne vezessen ugyanarra a hibára, de ne is hozzon be új hibát.
Én kísérleteztem több MI-vel, és kicsit kevésbé hétköznapi feladatot adtam nekik. Talán ismered a Dobble nevű játékot. Ebben van 55 kártyalap, illetve 55 különböző szimbólum (nap, villám, kulcs, alma, kalapács stb…). Minden kártyalapon 8 szimbólum található. A trükkös része a dolognak az, hogy bármelyik két kártyalapot összehasonlítva pontosan egy olyan szimbólum lesz, ami mindkét kártyán megtalálható (nem nulla, nem kettő, nem három, hanem pontosan egy).
Nem tudja megoldani. Leírom a feladatot átfordítva a programozás terminológiájára (tömbökkel, számokkal), erre generál olyan paklit, aminél van két kártya, amin egynél több közös szimbólum van. Rámutatok a hibára. Erre generál olyan paklit, aminél van két kártya, amin nincs közös szimbólum. Rámutatok erre a hibára is, erre generál egy olyan paklit, amiben nem 55 hanem több száz szimbólum van. Rámutatok erre a hibára is, erre megint olyan paklit generál, amiben van két kártya, amin egynél több közös szimbólum van. Mész körbe-körbe-körbe, de az istennek sem tudod rávezetni arra, hogy minden feltételt maradéktalanul kielégítő megoldást adjon.
~ ~ ~
És programot írni a semmiből még mindig a könnyebb és egyben a ritkább eset. A programozó legtöbbször egy már meglévő programot bővít, javít, ír át. Ha a szoftverfejlesztés egészét nézzük, sokszor a legnehezebb feladat nem is maga a leprogramozása a dolognak, hanem annak a tisztázása, hogy tulajdonképpen mit is akarunk csinálni, mindenféle szempontot sorra véve hogyan tudunk a homályos ötletből egy egzakt módon meghatározott tervet készíteni.
Mondok egy példát: Csináljuk meg a GYK klónját. Lehessen kérdést feltenni, meg válaszolni rá. Oké, jön a gyakorlati probléma, vannak szabályszegők, trollok, spamerek. Oké, akkor legyen moderáció. Jól hangzik ugye? De ezernyi kérdést vet fel. Mi legyen a törölt kérdésre adott válaszokkal? Mi legyen a törölt felhasználó kérdéseivel? Számítson-e be a pontszámba a törölt kérdés alatt óhatatlanul törlődő válaszokra adott értékelés? Hogy kezelje le a rendszer, ha valaki elkezd írni egy választ, de mire elküldi, addigra a kérdést már törölték? Hogyan számítson a válasz értékelése, ha az értékelés után a kérdést áttették egy másik kategóriába, akkor melyik kategóriában lévő pontszámot növelje a válasz? Megmaradjanak-e meg a törölt felhasználó privát üzenetei? Ha igen, hogyan jelezzük a beszélgetőpartnernek – jelezzük-e egyáltalán –, hogy a felhasználó törölve lett / ki lett tiltva.
Millió és egy kérdés, amiből sok csak annak a fejében fordul meg, aki tud programozni, látja maga előtt a működés elemi lépéseit. Aligha fog mondjuk egy mikrovállalkozás igazgatója naphosszakat agyalni ilyeneken, instruálgatni az MI-t, tesztelgetni, újragondolni, részletezni az elvárásait. Ugyanúgy rá fogja bízni egy szakemberre. A szakember meg ha tud programozni, akkor előbb végezni fog – akár az MI-t is eszközként használva –, mint valaki, aki nem tud programozni, és csak az MI instruálásában van tapasztalata.
Már most látom, hogy cégek olyan szolgáltatásokat kínálnak, hogy az AI megírja a programot az ügyfélnek. Ehhez tudni kell megfelelően promptolni is, hogy a várt eredményt kapják.
Sok senior fejlesztőnél is sokszor láttam eddig, hogy github-ról és stackowerflow-ról másolt kóddal dolgoznak. Például pár éve volt egy cégnél egy kis nem hivatalos verseny, a nagy mellényű jólfésült senior vezető fejlesztő egy az egybe másolt kódot mutogatott, hogy milyen gyorsan készen lett. Másolt de legalább gyorsan. Az AI ennél azért már most többre képes, meglátod ha leteszteled. Főleg azok, amelyek fejlesztésre vannak optimalizálva. Akkor vedd számításba, hogy ennek a területnek most még csak az elején vagyunk és gyorsan fejlődik.
Tehát a válasz igen, helyettesíteni fogja a programozókat, de egy ideig szükség lesz olyanokra, akik szót értenek az AI-al.
> Már most látom, hogy cégek olyan szolgáltatásokat kínálnak, hogy az AI megírja a programot az ügyfélnek. Ehhez tudni kell megfelelően promptolni is, hogy a várt eredményt kapják.
Ez nem a programozók kiváltása, hanem a programozótól elvárt tudás változása. Mikor jöttek a programnyelvek, már nem kellett a lyukkártya készítéshez szükséges tudás, helyette kellett a programnyelvekhez való tudás. Mikor jött az SQL., akkor már adott területen nem kellett annyira a strukturált programozáshoz való tudás, cserébe kellett az SQL jellegzetességeiből, sajátosságaiból fakadó új tudás. Mikor jöttek az RAID eszközök, vagy mondjuk a HTML, akkor már nem kellett tudni megrajzolni kódból egy nyomógomb kinézetét és működését, de cserébe ismerni kellett az új eszközök adta lehetőségekből fakadó ismereteket.
Ugyanígy lehet, hogy az MI segítségével való programozáshoz már nem kell tudni annyira ismerni a programnyelveket, de kell az a specifikus tudás, ami az MI működésének a jellegzetességeiből fakad. És amíg az MI kódot generál, tudni kell programozni ahhoz, hogy meg tudd ítélni, a kód hibás-e, ha igen, akkor milyen természetű a hiba. Ha az MI már nem kódot generál, hanem kész, működőképes megoldást, akkor meg kell a teszteléshez való tudás, hogy hogyan lehet kideríteni, hogy az MI helyes kódot írt-e, mit kell és hogyan vizsgálni, és ennek alapján hogyan kell átfogalmazni az instrukciókat.
De mindig kelleni fog egy hozzáértő tudás. Ha valaki nem így gondolja, akkor azt gondolja, hogy egy laikus képes lesz szakember nélkül szoftvert generálni. Ez biztos nem így lesz. Egy KKV cégvezetője aligha fogja az idejét azzal tölteni, hogy az MI-t instruálja. Hiszen könnyen lehet, hogy a levelezésének a zömét is a titkárnője végzi, nincs neki erre ideje. Egy titkárnő meg nem fogja tudni, hogy adott esetben melyik három célirányos kérdést kell feltennie, hogy egzaktabb módon specifikálni tudja a szoftverrel szemben támasztott igényeket.
De aki azt gondolja, hogy az MI-vel lehet programozási tudás nélkül szoftvert készíteni, annak itt a feladat:
A Dooble egy népszerű játék. Egy pakliban 57 kártya van. Van ugyanígy 57 szimbólum. Minden kártyalapon 8 szimbólum található az 57-ből, de úgy, hogy a pakli bármelyik két lapját összehasonlítva pontosan 1 szimbólum közös.
Oké, a gyerekemnek ez túl bonyolult. A feladat: Generálj olyan paklit, amiben egy kártyán csak 4 szimbólum van, és a pakli a lehető legtöbb kártyából álljon (ez egyébként 13 kártya), viszont a szimbólumok száma a lehető legkevesebb legyen (szintén 13 szimbólum). A kód legyen paraméterezhető, mert lehet, hogy jövőre egy olyan paklit szeretnék generálni, amiben a kártyákon 6 szimbólum van. (Egyébként itt 31 kártyalap lesz, és 31 szimbólum.)
Ez egy relatíve egyszerű feladat, nem egy már meglévő komplex vállalatirányítási rendszerben kell bevezetni valamiféle változást, csak egy egyszerű programocska kell, ami tömböket generál (amik a kártyákat reprezentálják), és a tömbök elemi természetes számok (amik a szimbólumokat reprezentálják).
Ja és igen, jó lenne, ha holnapra készen lennél, elvégre nem egy bonyolult feladatról van szó.
"Ez nem a programozók kiváltása, hanem a programozótól elvárt tudás változása."
Amit én írok, és most direkt nem írok cégneveket és weboldalakat ahol ez már élesben megy (mert reklám lenne) olyan, hogy a user leírja, mit szeretne és egész jól megcsinálja az AI. Már itt tart a dolog. S akkor még mindig az elején vagyunk, mert ez az AI robbanás csak 2 éve volt.
Amit te írsz az az AI-al támogatott kódolás. Az is más, ahhoz tényleg kell fejlesztő is. Pl. a VS-be is van ilyen integrálva, mint tudod.
Már csak néhány lépés és maga az AI lesz a programnyelvek kiváltója, tehát nem kódolni fog, hanem egy az egyben ő hajtja majd végre a feladatokat, ő generálja majd a felhasználói felületet is on demand.
> Amit én írok, és most direkt nem írok cégneveket és weboldalakat ahol ez már élesben megy (mert reklám lenne) olyan, hogy a user leírja, mit szeretne és egész jól megcsinálja az AI.
Megint csak azt tudom mondani, hogy az előző válaszom végén ott a feladat. Ne a levegőbe beszéljünk, nézzük hogy oldotta meg az általad meg nem nevezett cég és weboldal ezt a feladatot. Én mint user leírtam, mit szeretnék. Hol a program?
"Megint csak azt tudom mondani, hogy az előző válaszom végén ott a feladat."
Ennél sokkal bonyolultabbakat megold az AI. Komplett játékokat ír. Erre találsz példákat a Youtube-on, ahol sok ilyen témájú videó van. Leírja a muki, milyen játékot fejlesszen, legenerálja a forráskódot, amit kimásol onnan a muki, lefordítja a programot és azonnal MŰKÖDIK. Még a grafikai elemeket is generálja az AI hozzá.
AI által fejlesztett on demand vállalatirányítási rendszerre is van már olyan szolgáltató, amelynél ha előfizetsz, az AI generálja le neked az egész rendszert amire szükséged van, a backendet, adatbázist, és a frontendet is. Komplett megkapod az egész megoldást. Annyi, ha valamelyik pontban nem egyértelműen fogalmaztad meg az igényedet, akkor utólag kijavíttathatod vele.
Elhiszem, hogy felfoghatatlan és hihetetlen, de ez már most a valóság.
Pár éve még a sofőrök hitetlenkedtek, hogy nem lesz önvezető AI, mostanra már élesben járják az amerikai utcákat az AI driven járművek, az emberénél jobb hibaszázalékkal. Nemrég az egyik AI taxit megállította a rendőr és még a rendőrrel is jól elbeszélgetett (nyilván az a része, amelyik a kommunikációért felel). Pár év és a kamionokat is AI vezeti.
Most éppen a szoftverfejlesztők hitetlenkednek, hogy a munkájukat nem veszi el az AI. Dehogynem, már most. Az élelmesebbek most váltanak és az AI-val fejlesztenek, vagy AI alapú rendszereket építenek fel.
Talán 10 év és nemhogy a programozók, de még a programnyelvek is teljesen el fognak tűnni. Mindent az AI fog végrehajtani, létrehozni. Ha kicsit figyelsz olvashattad, már az NVIDIA azon dolgozik, hogy az egész renderelési folyamatot az AI végezze, nem lesz külön raszterezés, shaderelés, ray tracing, egy passban generálja majd az AI a realisztikus képkockákat, percenként több százat. Brutális, ahogy meglódult ez az AI történet.
> Ennél sokkal bonyolultabbakat megold az AI.
Nekem nem kell bonyolultabb. Annak a megoldását add meg, amit kiírtam. Ne beszélj róla, hanem mutasd a forráskódot, vagy a működőképes alkalmazást. (Egyéb elvárásom nincs amúgy, írhatja az AI C-ben, Javascriptben, vagy Excel táblában is, de készíthet eleve működőképes alkalmazást is. Az is mindegy, hogy Windowson fut, Linuxon vagy Androidon.)
Azt írtad, hogy *már most* ott tart a dolog, hogy egy user leírásából egy AI programot generál. Akkor lássuk a programot! Vagy lássuk, hogy hova tudom én – mint Gipsz Jakab kaliberű user – beírni a #4-es válaszomban leírt elvárást, amire néhány percen, maximum néhány órán belül lesz egy használható programom. (Mindez megfizethető áron, mert egy programozó ha nyers erővel is, le tudja programozni néhány óra alatt, így néhány órányi órabérnél ne legyen drágább a dolog.) Ha ilyet nem tudsz mondani, akkor nemes egyszerűséggel nem igaz az, hogy „már most” van.
Lehet, hogy lesz ilyen. Hogy az mit fog tudni, azt majd nézzük meg akkor, amikor majd lesz.
> Komplett megkapod az egész megoldást. Annyi, ha valamelyik pontban nem egyértelműen fogalmaztad meg az igényedet, akkor utólag kijavíttathatod vele.
Már ha kiderül, hogy hiba van, és kiderül az is, hogy miben van és milyen természetű a hiba…
Mondok egy életből vett példát. Művészeti iskolákról van szó, amik tanítanak mondjuk hegedűt, zongorát, gitárt, néptáncot, fotózást stb… Van egy beiratkozási időszak, mondjuk azt, hogy október 1-ig.
A feladat: Készíts egy létszám összesítést az adott tanévre vonatkozóan az éppen aktuális állapotról. Az összesítésben minden diák egyszer szerepeljen, akkor is ha több tantárgyat tanul. Ha a diák félbehagyta a tanulmányait, akkor legyen a státusza „kimaradt”. Ha jelenleg is tanul, és október 1. előtt iratkozott be, akkor legyen a státusza „beiratkozott”. Ha október 1. után iratkozott be, akkor legyen a státusza „utólag beiratkozott”. A lista a különböző státuszokba tartozó diákok számát összesítse. Példa:
Beiratkozott: 723 fő
Utólag beiratkozott: 43 fő
Kimaradt: 68 fő
A dolognak tétje van, bár ezt a listát még ilyen-olyan aspektusokkal korrigálni kell, de annak annyira szövevényes a feltételrendszere és csak pár diákot érint, hogy azt inkább megcsinálod kézzel. De ez lesz a kiinduló adatsor, ez alapján fogod lejelenteni a diákokat az év elején és az év közepén, és kapod meg az államtól a normatív támogatást, aminek az összege és kifizetésének módja a fenti státusztoktól is függ.
Tegyük fel az AI elkészíti ezt a funkciót a nyilvántartó programodba. Úgy tűnik, hogy reális adatokat ad, hatalmas hiba nincs benne. Te boldogan használod évekig. Aztán jön egy hatósági ellenőrzés, és kiderül, hogy ha ténylegesen összeszámolod mondjuk a naplókban a diákokat, akkor a létszámösszesítőd tavaly 2-mal több gyereket sorolt a beiratkozottakhoz és 2-mal kevesebbet az utólag beiratkozottakhoz. Idén meg 3 az eltérés. A létszám stimmel, de a státuszokkal valami apró probléma van.
A hatóságokat nem érdekli a szoftver problémád, egyelőre kapsz egy figyelmeztetést, de ha jövőre is lesz ilyen eltérés, akkor már pénzbüntetésre kell számítanod.
Mit csinálnál a felhasználó helyében? Látszólag teljesen érthetően, egzakt módon meg van határozva a feladat. Mi a hiba oka? Mit kellene az AI-nak kijavítania? Próbálkozol kicsit más szavakkal megfogalmazni a feladatot. Az AI többféle megközelítéssel is elkészíti a megoldását, de végeredményül ugyanazokat az adatokat adja. Mi a gond? Mihez kezdesz? Oké,tudod, hogy 20 másik iskola is pontosan ezt a programot használja. Körbetelefonálsz, és kiderül, hogy 16 iskolában mindent rendben találtak az ellenőrök, pedig van olyan iskola, amiben 1700 diák is tanul, 4 iskolában viszont jött figyelmeztetés néhány fős eltérés miatt, sőt az egyik iskolát már meg is büntették emiatt. Ők sem értik a problémát, próbálták ők is megoldani, de hasonló eredménnyel zárult a dolog, máshogy megfogalmazva is az AI által generált listában ugyanazok az adatok szerepelnek.
(Én programozó vagyok, én írtam ilyen tanulónyilvántartást, és mivel én írtam, kapásból felmerült bennem egy kérdéskör. De bennem sem csak úgy magától, hanem mert végiggondoltam, hogy az, amit eddig írtam, az pontosan hogyan működik, hogy vannak tárolva az adatok és abból hogyan fogom majd én ezt az összesítést elkészíteni. De egyelőre nem árulom el mi a gond, mert a fenti iskolaigazgató usernek sem árulja el senki. Gondolkozz, te mihez kezdenél a fenti helyzetben.)
Látom egy pontozásos vita-trollal van dolgom. Van ellenszerem rá, nyugi.
Arra pedig van bizonyítékom, hogy képes komplett játékok forrását legenerálni az AI, nem hasraütésre írtam. Tessék egy példa:
Ajánlom az "irány az AI" csatornát. Egy videója ebben a témában: https://www.youtube.com/watch?v=8xnhr2Ob7dI
Az pedig nem érdekel, hogy programozó vagy, vagy nem. Ettől nem lesz valid, amiket ide grafomániáztál. (Én meg rakétamérnök.)
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!