( bzt | 2023. 07. 18., k – 17:08 )

> Le a kalappal! Pár nap alatt egy bootloader ami ráadásul teli van assembly kóddal is, nem semmi. Egyszerűen lenyűgöznek azok az emberek akik képesek ilyen low level cuccokat írni. Kösz! > biztos vagy benne hogy jó az abban a formában? Igen. > Csak a loader.c 1952 sor Na de annak a negyede komment! És egyébként is, az szerinted sok lenne ennyi minden funkcióra (ne felejstd el, tényleg ez az összes kód, nincs más)? Csak összehasonlításképp, a grub ansic: 275224 (92.31%) asm: 11345 (3.81%) és akkor ebben a függőségek (mtools, xorriso stb.) benne sincsenek! De legyünk megengedőbbek, nézzük el a modulokat meg a többi függőséget, vegyük csak a betöltőt magában (sloccount grub-core/loader) és csak azzal hasonlítsuk: az még úgy is 7.8-szorosa, 15389 sor... (pedig nem is jó az összehasonlítás mert a grub-core/loader önmagában nem is működőképes, míg a Simpleloader loader igen). A teljes Simpleboot ezzel szemben mindössze: ansic: 3461 (96.03%) asm: 143 (3.97%) Amiből a loader: ansic: 1560 (100.00%) > teletűzdelve 100+ soros függvényekkel Szerinted melyik függvény az, ami nem egy jól definiált feladatot lát el, precízen definiált absztrakciós rétegként és jól meghatározott ki-bementi értékekkel? Nem kötözködök, tényleg érdekelne, szerinted melyik. És ha már grub, a grub-install.c-ben a "main()" függvény 1096 sor! Ehhez képest a simpleboot.c-ben a "main()" csupán 195 sor (amiből 100 sor egyetlen "if (verbose)" printf tenger a végén, ami ellen nem tudsz mit tenni, dump esetén ki kell írni a dolgokat). > Jövőbeli maintainerek szerintem megköszönnék ha kevésbé lenne egybeömlesztve a kód. Haha, ne érts félre, de úgy bírom, amikor valakinek fogalma sincs arról, hogy milyen ára van, ha kismilló függvényre robbantjuk szét a kódot. Lehet hogy egy hostolt alkalmazásnál belefér, hogy elherdáljuk az erőforrásokat, azonban egy ilyen alacsonyszintű kódnál ez nagyon nem kivitelezhető. Hogy számszerüsítsük: egyetlen függvényhívás legalább 16 byteot foglal a vermen, minimum, mindenképpen (stack frame és visszatérési érték); plusz ehhez jönnek még a lokális változók, amiket ugye függvényeken átívelve nem tudsz újrahasznosítani (értsd: minden függvénynek külön le kell foglalnia egy i ciklusváltozót). Sok apró függvény hívása pillanatok alatt felzabálná azt a 256 byteot, amit engedélyeztem a veremnek... Sokan azt hiszik, hogy a szépen írt kód a fontosabb, de ez nem igaz, a hatékony és jól működő kód az, ami igazán fontos. Alacsony szinten meg hatványozottan igaz ez. Érdemes elolvasni a témában, mert nem csak dumál ez a cikk, hanem konkrét mérésekkel bizonyítja, mennyire borzalmas végeredményt képes produkálni valami, ami az "okosak" szerint "clean code": https://www.computerenhance.com/p/clean-code-horrible-performance Ha pedig valakinek az bántja a szemét, hogy hosszúak a sorok, akkor bármelyik IDE egyetlen kattintással áttördeli, emiatt nem érdemes zsörtölődni. > Ezt leszámítva, gratz! Köszönöm mégegyszer!