Portál AbcLinuxu, 22. listopadu 2025 05:34
Kdosi vytvořil patch pro linuxové jádro, který umožňuje používání C++ přímo v kernelu (samozřejmě včetně kompilace pomocí g++). Že to lidi pořád baví... Viz také JN 251.
Tiskni
Sdílej:
)). Takze s tim vysokym jazykem to az tak zhave nakonec neni. Nehlede nato, ze predstava psat jadro v nejakem ,,vyssim`` jazyce nepripada nikomu uchylna, protoze ta proste uchylna je. Nebo si dovedes predstavit jatro psane treba v ja nevim javahumusu? No fujtajbl, to tam fakt nema co delat
. Jo a IMHO by mel autor zmineneho patche dodavat k patchi i kyblik, jinak si to nikdo neprecte.
Každopádně základ myšlenky nepřijatelnosti C++ v jádře je mi stále ještě trochu nejasný. Chápu to tak, že vlasnosti, které má C++ oproti C (třeba výjimky) jsou z hlediska kernelu obtížné, protože se obtížněji ladí a chovají se nepředvídatelně. Chápu to alespoň trochu dobře?
Spíš jde o to, že vývojáři jádra nemají dobrý pocit z toho, že v C++ (pokud se skutečně používá jako C++) se nechává víc práce na překladači, takže nemají dostatečný pocit kontroly nad výsledkem. Na druhou stranu, při drastických tricích, které moderní kompilátory používají při optimalizaci, je ta kontrola poměrně problematická i v C.
Druhý zásadní problém je v tom, že zatímco gcc je velmi kvalitní a velmi dobře odladěný překladač, o g++ se to moc říct nedá. Mé zkušenosti s kompilací Firebirdu (vhodný příklad rozsáhlejšího projektu v C++, který není vyvíjen primárně pod g++) jsou takové, že zhruba polovina pokusů skončí na internal compiler error. Proto se celkem nedivím, že se do používání C++ v jádře nikdo moc nehrne. Nejsem ale a priori přesvědčen, že je na použití C++ něco principiálně špatného a že současný stav musí trvat na věky věků.
Ja bych zase řekl, že mezi C a C++ je větší rozdíl než mezi ASM a C.
C je přenositelný assembler. Má celkem jednoduchou syntaxi a bez explicitního volání nějaké knihovní funkce nepotřebuje libc.
V C++ třeba existují operátory new a delete, které způsobí přilinkování malloc a free. A nějak tak budou implementovány i výjimky. C++ potřebuje standardní knihovnu, nevystačí si samo o sobě. To je jeden z důvodů, proč nemá v jádře co dělat.
Přívlastek "jednoduchá" není zrovna ten, který by mne v souvislosti se syntaxí C napadl jako první. Spíš by to bylo něco jako "chaotická" nebo "nesystematická".
To je věc názorů. Možná není úplně jednoduchá, ale logická je.
S new a delete nemáte tak úplně pravdu - stejně jako většina ostatních se totiž dají overloadovat.Ok. Tak to byl špatný argument.
Nenapadá mě ale žádná featura C++, která by měla pozitivní přínos ve vývoji jádra. C tady bohatě dostačuje. Pro vývoj jádra je třeba jednoduchý jazyk. Stačí opomenout nějakou drobnost (přetěžování funkcí nebo operátorů pro to poskytuje mnoho možností), překladač chybu nenahlásí, ale v kernelu je závažná chyba. V C je podobných záludností daleko méně (snad jen makra preprocesoru).
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.