Jsem si jisty, ze existuji oblasti, jako FORTH a Z80 ASM, kde to ma AI opravdu spatne natrenovane. V prvnim pripade si nedokaze zapamatovat, jaka data ma na zasobniku, protoze to trochu pripomina programovani v C s nepojmenovanymi promenymi ulozenymi v mixeru, kdyz to prezenu. A v druhem pripade dokaze vymyslet neexistujici instrukce, nebo si nepamatuje, jake priznaky ovlivnuji a jake ne, takze je na urovni zacatecnika, ktery se ale nedokaze poucit ze svych chyb.
Netreba chodit ani do takych extremov. Uz obycany ARM low-level embedded je pre AI tazky oriesok.
Zabil som dva dni tym, ze som nechal AI vygenerovat kod na spravu lazy loadingu floating-point kontextu na Cortex-M4F. Ono je to doslova par riadkov kodu, je na to application note priamo od ARM, tak preco na to nepostvat AI?
Dostalo to dve ulohy:
1. inicializuj FPU tak, aby bola pouzitelna v threadoch
2. vygeneruj kus kodu ktory treba pouzit pri prepinani threadov aby sa implementoval lazy loading
nechcel som, nech robi aj zvysok thread switchera, alebo aby to editovalo existujuci kod, nech to nema zbytocne zlozite.
Dopadlo to tak, ze prva uloha bola uz na prvy pohlad blud a vysledok som rovno zahodil. Druha uloha vyzerala, ze je plausible, aj sa to skompilovalo, akurat to nechodilo.
Ten kod ale vyzeral tak uveritelne, ze som riesil len to, ze je zle zaintegrovany, alebo zle volany, az kym som znova nepreliezol ten application note a nezistil, ze to, co AI vygenerovalo, bolo prepinanie FPU kontextu na styl x86, ale napisane "v jazyku" ARMu. Co samozrejme nikdy nemohlo fungovat.
Mne ten kod prisiel plausible preto, lebo som kedysi (20+ rokov dozadu) prepinanie FPU kontextu pri prepinani threadov na x86tke studoval.
Toto je len taky najcistejsi pripad. Pouzivam AI ako rubber duck pravidelne a nemam problem ho rozplakat na tri prompty.
No, ja jsem na jeho vystup mozna moc narocny. I fungujici kod, ktery je ale nesmyslne dlouhy (2x delsi a pomalejsi), povazuji za neprijatelny. A vzhledem k tomu, ze AI kolikrat NEDOKAZE SECIST spravne ani DESET jednocifernych CISEL, stejne jako clovek :D, tak nedokaze poznat, ktera varianta je kratsi a ktera ma mene taktu. Kdyz ji predlozim nejake obycejne reseni, ktere lze vylepsit, abych zjistil, zda najde ten trik, tak to reseni prodlouzi a oznaci za kratsi. A kdyz ji ukazu ten trik, tak rekne, ze to neni funkcni. Pripadne rekne: "Jo, presne tohle jsem myslel"...
PS: K tomu scitani, u dvou rutin, kde na kazdem radku je v komentari uveden pocet bajtu a taktu ji nenapadne porovnavat jen radky co nejsou identicke.