( asch | 2019. 09. 16., h - 20:29 )

Én többnyire Java-ban programozok, abban vagyok a legjobb, és abban tudok a leggyorsabban megoldást adni egy szoftveres problémára.

De diákkoromban hobbiból x86 assembereztem és felnőttként hobbiból és melóból is írtam ATMegára C/ASM hibrid programokat. Illetve egyéb C nyelvű beágyazott projektekben is részt veszek. Így ismerem ezt a világot is.

És pontosan azt látom, hogy akik nem értik hogy mi van a lentebbi rétegekben, azok írják a béna megoldásokat magas szinten. Hiába a Java virtuális gép, az alatta lévő vas hajtja végsősoron végre az utasításokat, és tudni kell, hogy hogyan. És akkor pont azt az adatot fogjuk primitív tömbbe, vagy akár direkt ByteBuffer-be tenni, amit ahhoz kell, hogy rendesen működjön a program.

A legtöbben ott elvéreznek, hogy megsaccolják, hogy mennyi adat és mennyi CPU kell egy feladatra. Vagy hogy megérezzék, hogy hol van a szűk keresztmetszet. Pláne hogy megmérjék :-). Ha van egy becslésed, hogy egy feladatra hány órajel kellhet, akkor már tudod is, hogy érdemes-e optimalizálni? Abban a tartományban vagy-e, ahol kis erőfeszítéssel tízszerezni lehet a sebességet, vagy ott ahol vért izzadva duplázni? Nem mindegy, mert az előbbi esetben áramot pazarolsz (ma leginkább ez a jellemző), a másodikban pedig fejlesztőt.

Összességében a mennél több területről jövő tapasztalatnak óriási értéke van, pláne amikor komplex rendszereket kell tervezni úgy hogy még működjenek is, ne csak a tervezőasztalon nézzenek ki jól. És ebbe a tapasztalatba beletartozik a bitmachinálás is.