kvp#6
"aki nem vette a fáradtságot hogy megtanulja a 100x komplexebb és jobb C++-t"
Mindent (is) hasznalok, igy c++-ot, java-t es python-t is (c-t es python-t meg mikrovezerlon is), de a c++ meg mindig nem volt kepes elerni a java alapszintu tudasat, mert ahhoz alapjaiban kellene atirni a mukodeset es erre egyszeruen nem hajlando a szabvanyugyi testulet.
Ellenben c-ben (es persze igy c++)-ban is meg lehet irni mindent amit a java tud, csak nem kotelezo a hasznalatuk, igy ha valaki hibazik, akkor serul a rendszer integritasa. Gondolok itt pointer-ek, tombok, stb. hibas hasznalata altal okozott memoria integritas serulesekre. Ezt mar az objective c is kepes volt kikuszobolni, de a c# is megoldotta valahogy, a java pedig tervezesi szinten szuntette meg. Amiota van nativ binarisra forditott java, azota egyszeruen nincs olyan feladat amit erdemesebb c++-ban programozni java helyett. Es akkor meg ott vannak a c++-os "szabvany" konyvtarak, amikbol tobb egymast uto is van es ezek is evente valtoznak, ugyanakkor ezek mar tervezesi szinten sem kepesek kezelni egy garbage collector-os biztonsagos memoriakezelot ami utolag kerulne hozzaadasra. Amit egyebkent meg a c is gond nelkul tud fogadni. (mivel a nyelvnek maganak nincs runtime resze)
A c++ tulsagosan c-s maradt ahhoz, hogy a java-val egy szintem lehessen es tulsagosan sok run time komponenst es "szabvany" konyvtarat kapott ahhoz, hogy kozvetlenul kulso kod nelkul a nyers "vason" futtathato legyen. Egy nyelvnek vagy resze a teljes futtatasi kornyezet, szoftveres memoriavedelemmel es ha kell szemetgyujtessel egyutt vagy ha ez hianyzik, akkor ne legyen runtime komponense, hanem ennek funkcioit bizza az aktualis operacios rendszerre. A c++ valahol a ket szek kozott a pad alatt ul ebben a tekintetben. A java es a python a teljesen menedzselt vedett kornyezetek jo peldai, mig a c a futtatasi kornyezet nelkuli, gyakorlatilag hardver programozasra keszult nyelv. A c++ egyik celra sem jo teljes mertekben es ha minden runtime komponenst eldobunk a c++-bol, akkor gyakorlatilag egy kiterjesztett szintaxisu c-ve valik, mig ha minden extra feature-t be akarunk rakni (dinamikus reflexio, garbage collector, stb.), akkor szinte az osszes c++-os szabvany konyvtar kuka es szinte a 0-rol kellene ujra felepiteni a programozasi kornyezetet.
Ezert nepszeru a java es a python alkalmazasfejlesztesre es ezert irjak meg mindig c-ben az alacsonyszintu (hardverkozeli) kodokat. De az elozo hozzaszolasban meg sem emlitettem a c++-t, csak a c/java/python harmast hasonlitottam ossze.