A C++-t miért tartja nagyon sok programozó nehéz nyelvnek?
OFF:
Szeretem, ha összekap egy vízvezeték szerelő és egy ács, azon melyik szerszám a legjobb; az ácskalapács, vagy a franciakulcs. Az egyik nem tud kalapáccsal hollendert húzni, a másiknak meg nehezen üt be egy szöget egy franciakulccsal, és nem érti miért olyan bonyolult ez a szerszám.
Válasz:
A C++ egy multiparadigmás natív nyelv, egy komoly nyelv, komoly feladatokra, látható is, hogy minden ami az informatika frontvonalának az élén táncol C++-ban van írva.
A Java egy VM-ben futó byte-kód, A nyelv maga egy egy RAD tool, tehát más a feladatköre. Egy kétajtós szekrénnyi szervernek, ahol 16 processzor futtat egy JVM-et és java EE-ben írt servleteket, ott nem fontos a hatékony memória kezelés, azt a rendszernek kell intéznie, skáláznia.
Konklúzió:
A C++ nem gyorsabb, nem hatékonyabb, nem nehézebb. Egyszerűen komolyabb célokra való, összetett nyelv. Ezért más szakirányok fejlesztőinek eleinte nehéznek, bonyolultnak, lassúnak tűnhet. Egy hozzá nem értő ember nem tud gyorsabb kódot készíteni C++-ban, mint Java-ban, csak azért nem C++-ban kódol. A C++ lehetőséged ad arra, hogy teljesítmény orientáltan végezz el egy feladatot, hogy kézben tartsd a memóriát, és ne használj feleslegesen sok erőforrást.
"A #10 képén különösebb vicces a Python láncfűrésze. Olyan mintha, azt jelképezné, hogy gyors, pedig hát nem..."
A fejlesztés gyorsabb, nem a kód.
A pythonnal az a probléma, hogy nem tud párhuzamosan futtatni szálakat. Akármilyen gyors is a fejlesztés és ennek nem tudom mi az előnye. Minimum 2 magos a processzorok manapság nem értem miért nem használja ki.
pastebin.com
/X6nv0sS3
A Java eredendően lassabb, mint a C++, mert byte kódot futás közben szeretné optimalizálni és fordítani. Akármilyen penge JVM van alatta, ez mindig időveszteség. Van, ahol ez számít, van, ahol nem. Van, ahol ez kis ár azért, hogy a JVM futás közben újra tudja optimalizálni a kódodat az aktuális igénybevételtől függően. Ez servleteknél különösen jó, bizonyos esetekben veri a C vagy C++ kódot.
Ezzel együtt szeretném megjegyezni azt az apró tényt, hogy a JVM-ek tetemes része C-ben vagy C++-ban íródott, így elég felesleges azon izmozni, hogy a Java mekkora király.
Végül nem árt tudni, hogy a programozói fizetés nem a nyelvtől függ, egy értelmes programozó amúgy is legalább 2-3 nyelven tud fejleszteni.
Szerintem két okból is nehéz a C++:
Egyrészt mert sokmindent bonyolultabban lehet benne megoldani, mint mondjuk egy javaban vagy csharpban. Pl. viszonylag alap dolgok a string literál, karaktertömb, std::string, std::string_view, std::literals::string_literals::operator""s, de nem annyira magától értetődő megérteni, hogy mi a különbség köztük és hogyan használjuk őket. Ez talán nem a legjobb példa, csak hasraütésszerű példának szántam.
Aztán ott a template metaprogramozás meg egyéb ilyen rémségek, mint például a placement new operátor felüldefiniálása.
Másrészt mert a C++ elment ilyen mindenre is jó nyelv irányba. Kövesd nyomon légyszives az újabb szabványokat, smart pointer, concept, corutin, mutex, atomic és hasonlók.
Egyszerűen idő, mire alaposan megtanulod a nyelvet. A C++ egy olyan nyelv, aminél egy jó ideig inkább ne is gondold azt, hogy "valamennyire már azért értem".
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!