Mám takový sandbox s daty, který smažu, když si AI začne moc vymýšlet a nahraji tam aktuální produkční kódy atd.
Řešení, které funguje, má hlavu a patu klasický zkopíruji ctrl + c / v. Zatím mi nic z produkce nezmizelo.
Napadlo mě, že existující kód může být pro AI problematický než nový. Ale zase očekávám, že když nechám AI zanalyzovat stávající systém / kód, tak se AI bude držet "standardů" existujícího kódu a ne používat nějaké stack over flow řešení.
Co mám napsaný, tak je pro potřeby klientů a současně pro potřeby optimalizace a jednoduchosti budoucích úprav. Kdežto AI je schopný psát podobný kód ve více třídách, pač je to pro něj rychlejší (jak si psát dole o logice).
Na druhou stranu, Opus umí celkem dobře debugovat existující html, css a js kód - i když trochu podvádí, protože používá chrome k revizi.
Nejlepší bylo, když mě Claude začal poučovat o tom, že "master" větev se může pro někoho jevit jako diskriminační a měl bych to přepsat na "main". To jsem ho musel uzemnit globálním pravidlem / instrukci (co se dá dát v nastavení účtu) - "Answer technical questions technically. No unsolicited commentary on naming, terminology, or social topics".
Nicméně celá budoucnost AI je závislá na nonstop cash-flow od investorů apd, což už se začíná řešit. Takže by mě nepřekvapilo, kdyby se AI programování cvrklo na nástroj pro bohaté klienty (přece jen lokální AI nezaplatí vývoj).
je to nevychované dítě. Ano, nesmíš tomu dát nikam přístup a nikam to pustit. Je schopný si klidně dělat furce update, mazat branche či jiné destruktivní akce.
V podstatě musíš vytvořit robustní sandbox, dávat kopie repositářů, velmi omezené a hlavně časově dočasné přístupy a k tomu mít raději několik vrstev kontrol jiných AI (čistých session), aby našli co nejvíce chyb než s tím začneš ty trávit čas.
Já také nejsem fanouškem vibecodování a nejhorší je, když necháš upravovat existující kód, lepší je vždy začít od nuly. Mám rád architekturu a kód pod kontrolou. A vlastně s tímhle mi AI nejvíce pomáhá, umí ověřit, že dokumentace sedí, umí udělat všemožné testy existujícího kódu, umí najít nesrovnalosti a problém, umí právě pomoc s pročištěním a stabilizací. To co člověk doteď dělal až bude čas, najednou může odbavit AI sama, snižuje se pak množství bugů v produkci, dělá se lepší predikce vývoje a vše se lépe integruje. A to si myslím ,že je ten hlavní přínos a profit, ne mít 10x tolik kódu a 5x tolik aplikací/produktů.
optimalizovat kód do poslední instrukce je moje posedlost. Stejně tak znalost jak to v kterých jazycích funguje. AI stačí dnes jen postrčit správným směrem, říct mu přes co to má řešit, co má použít a umí už dělat výkonově velmi rozumné řešení. Hlavně ale umí svůj kód velmi dobře profilovat a neunávně lovit každý zápis do paměti nebo leak, stačí mu to říct a dát nástroj. Na tohle se mi vývojář zpravidla vždy úplně vykašlal. Tohle je dnes asi nejčatějčí věc na co používám LLM, běží hodiny, nechává profilovat aplikaci a za pár tokenů mi z toho udělá report a návrh změn. Já bych to dělal týdny.
Ještě šílenější je, že prostě umí změnit jazyk, je to pomalé v pythonu, protože jeho thready jsou na baterky, mrknutím oka to přepíše na cython a nativní C thready bez GIL.
Kódu to dělá pořád hodně, i ty top of art LLM se neumí správně rozhodnout co má smysl implementovat a co je jen zbytečný balast. K tomu je musíš podstrčit a ten řez pořád udělat sám, ale aspoň mi dokáží okamžitě spočítat kolik řádků jaká vlastnost zabírá a já se mohu rozhodnout co raději neřešit.
Má to ale pořád své problémy, před rokem nám stačilo dělat kontrolu syntaxe a donutit AI to aspoň zkompilovat. Dnes už syntax je zpravidla naprosto bez chyby, za to dělá obrovské množství logických chyb, různé deadlocky, nekonečné smyčky či zombie procesy jsou problém, různé typy injection (sql, shell, command, whatever) jsou snad všude. Secrets a tokeny? Nevadí, klidně si je budu dumpovat do hlaviček každého požadavku, hlavně, ať to mohu snadno debugovat.
Právěže nutnost kontroly zabiji celý smysl AI programování.
Taky jedu na Opusu, když dám požadavek, tak neřeší jen požadavek, ale taky věci okolo toho, které jsem nechtěl.
Když se zeptám proč to udělal, tak "protože jsem se tak rozhodl". Pak se omluví a vrátí změny mimo požadavek, když mu řeknu, kdo mu povolil změny mimo požadavek.
Takhle to je skoro vždy - radši mám kódy pro / od AI mimo produkční kódy a zabanoval jsem AI přístup ke gitu.
Takže místo programování se stráví čas nad kontrolou, zdá je to, tak, jak potřebuješ a co vše se změnilo.
Tudíž v tom nevidím extra přínos.
A jak řešíš výkon?
Nechal jsem si napsat xml parser - 300 řádků, samé funkce a nedalo se v tom ani vyznat co je co.
Nechal jsem si přepsat (od Claude) starou api na novou api - ze 250 řádků udělal 400 řádků plných funkci, pak to zoptimalizoval, když jsem nebyl spokojený, ale úplně ignoroval architekturu staré api.
Takže kód to udělá, ale jaký...
ještě před rokem jsem nevěřil, že se to zlepší, byla to tragédie. Zlepšilo se to výrazně. Samozřejmě tam je chyb pořád hodně, jako u vývojářů, ale už to daleko lépe kód umí členit, lépe umí dodržovat postupy, umí si lepším způsobem ukládat stav, dá se pracovat s paměti a postupně si budovat vlastní knowledge base z zpětné/vazby kritiky.
Když jsem minulý týden nechal udělat slepý test, úkol na cca 1000 řádku kódu, dvě varianty dělaly vývojáři, dvě varianty dělaly LLM (Opus + Astra). Nešlo rozlišit od koho je co, to doslova.
Není to ale ještě na samostatnou činnost, pořád je nutné dělat nutnou kontrolu. Buď jsi velký a zaplatíš si neskutečnou kaskáku agentů na vzájemnou kontrolu nebo pořád na to koukat.
Tak já ho potřebuji mít optimalizovaný, jelikož nefungujeme na cloudu s se scalingem - máme web a data tečou skrze api do mobilních apek.
AI pomůže s hledáním bugu, ale tvorba kódu pořád nic moc.
Souhlasím, že AI má občas lepší nápady (hlavně na toto a dokumentaci používám AI), ale prostě to celkově kulhá v programování.
děláš jednu zásadní chybu, koukáš na kód, kdybys ho neviděl, tak by problém neexistoval.
Teď vážně. Kvalita kódu se zlepšuje, nějaké pravidla, kontroly, code style, databáze dobrých řešení to umí hodně zlepšit.
Trochu mi to připomíná situaci, jak jsme prskali, když se začaly objevovat první vyšší jazyky a my jsme prskali, že v ASM to napíši takhle jednoduše a rychle a přitom ten jazyk z toho dělá autobus.
LLM model mě už ale párkrát velmi překvapil, přišel už párkrát s naprosto revolučním řešením ve velmi optimalizovaném kódu, kde záleželo na každé instrukci. Stačí myšlenka a celé roky optimalizací jsou vniveč, protože to nakonec lze řešit úplně jinak. I tohle může být realita.