az apróságok miatt

                                                  

hát igen, minden az apróságokon múlik. de hogy hogyan is jutottam erre a következtetésre? az van, hogy egyik kolléga érzelmektől túlfőtötten számolt be arról hogy egy másik volt kolléga készített egy 256 byte-os demo-t, amiiről készült felvételt fel is tett a youtube-ra. ebben benne volt minden aminek benne kellett lennie. egyrészt 256 byte. igen, a mai világban. mert ennyi memóriája akár egy hangkártyának is van, meg még talán a hűtőnek is. kicsit elborzaszt a mai világ, hogy egy hello world programhoz több megabyte kódra van szükség. de erről már írtam korábban. másik dolog az assembly. bizony bizony, a mai világban is lehet assemblyvel programozni. nem túl gyorsan, az tény, viszont mindenképpen lehet, és leginkább olyan programokat lehet csinálni amire azt mondja az ember hogy wtf. és ez jó - szerintem. aztán benne van hogy demo. réges régen egyszer még ági, a pásztor ági vett rá, hogy ellátogassak egy demo partyra. nos, akit magával ragad a dolog az ott helyben neki akar állni kódolni, akit meg nem, azért kár a szó. egy szó mint száz, úgy határoztam most évekkel később, hogy én is készítek 256 byteos demo-t. elsőre egy kb 300 bytenyi szöveget+kitömörítőt+kiirót készitettem. ez annyit tett hogy szép lassan kiirta jó nagy betűkkel a benne felhalmozott betűket. második nekifutásra komolyabbat gondoltam. a képernyő közepén megjelenő ötágú csillag, ami elkezd forogni, majd radarképernyőszerűen a korábban bejárt területe elhalványul. elsőre nem is sikerült, nyomasztott hogy bele kell férnie a 256 byte-be. hát igen, a túl korai optimalizáció mindennek az átka. elsőre legyen jó, aztán lehet faragni. szóval második nekifutásra a méret nem volt szempont, csak a működés. így kb 600 byte-ba összeraktam a működő kódot. szép lett. viszont ránézve látom hogy a kód kb felét az egyenesrajzolás implementációja viszi el, ráadásul két példányban - x éy y növekményes változat. ezen kívül mire ment el sok byte? itt a felismerés, apróságokra. első kódnál például hogy a szavak elválasztása szóközzel történjen. nem is értem hogy anno az ascii tábla elkészítőinél miért nem volt szempont hogy a begépelt szöveg karakterei közel legyenek egymáshoz. a szóköz nagyon kilóg, pedig mindenhol használjuk. második kódnál ilyen apróság például hogy megfelelő legyen az egyenes végpontjainak koordinátája, ezért bizonyos esetekben meg kell őket cserélni. akárhogyan is, de ez 4 beolvasás, és 4 kiirás. mejd megvizsgálom hogy stringutasitásokkal csökken-e a méret, de ez mit sem változtat a dolgon, meg kell tenni. másik ilyen az elhalványulás esetén a negativ értékek kezelése. perzse önmagában nem sok egyik sem. pár byte itt, pár byte ott, pár óra fejlesztés erre a funkcióra, pár óra arra. eredményül azt kapjuk amit már írtam. attól lesz jó - és jó alatt értem a lehetőségekhez mérten szép, igényes, élvezhető - a kód, ha ezek az apróságok mind mind benne vannak. ezekhez pedig erőforrás kell.