Miért jobb egy C++ mint pl egy Java vagy C#?
Nem arra vagyok kíváncsi, hogy a C++ egy machine kód míg a Java és C# egy köztes kódra fordul először és egy egy Virtual machinen (vagy éppen CLR) fut.
Itt a nagy C vagy C++ -ban a pointerek gyorsaságára büszkék, hogy egy objektum címét vagy egy tömb kezdőcímét adják át a függvényekben.
De ugyanakkor a Java és C# is, ha egy obejktumról van szó, márpedig ott minden objektum azokat referencia típusként adják át a függvényeknek, tehát nem egy másolat készül róla (tekintsünk el a primitív típusoktól).
Ahogyan nézem a C++ tutoriálokat rossz nézni, hogy mindent kézzel kell beimplementálni pl: #include<cstdrag> míg máshol csak ctrl + shift + o jó ez lehet hogy az IDE-től is függ. De mintha összedobott lenne az egész, ahogyan fejlődik, ahogyan folyamatosan implementálják bele pl: #include<string> és eddig egy char tömbbel szórakoztak nincs bajom a char tömbbel, de ha eddig az volt a menő, akkor miért teszik bele, hogy hátha több programozó fogja emiatt kedvelni a nyelvet?
Előre is elnézést kérek, ha megbántottam itt egy nagy C++ -ost
Jajj...
Rohadt nagy káosz van a fejedben.
Egyrészt a C++ semmivel sem jobb, mint a C# vagy a Java.
Sebességkritikus számításokban lehet benne gyorsabb kódot írni, mivel jóval alacsonyabb szintű, annak minden előnyével és hátrányával.
Amit a pointer "gyorsaságról" írsz, az nettó baromság.
Amitől a C++ gyorsabb az az, hogy egy rakat olyan ellenőrzést vagy plusz szolgáltatást nem kapsz meg, mint a változók inicializálása, tömbök indexvizsgálata, satöbbi, satöbbi.
Az ide-nek a szolgáltatásait meg megint idekevernek szinten hatalmas hülyeség.
Mintha azt mondanád azért jobb a benzines kocsi a dízelesnél, mert amikor a benzinessel tankoltál, akkor a segített a kutas és megtankolt helyetted. Aha...
"De mintha összedobott lenne az egész, ahogyan fejlődik, ahogyan folyamatosan implementálják bele pl: #include<string> és eddig egy char tömbbel szórakoztak nincs bajom a char tömbbel, de ha eddig az volt a menő, akkor miért teszik bele, hogy hátha több programozó fogja emiatt kedvelni a nyelvet?"
Ennek meg semmi értelme, nem is értem mi a fenét akarhattál mondani.
"De ugyanakkor a Java és C# is, ha egy obejktumról van szó, márpedig ott minden objektum azokat referencia típusként adják át a függvényeknek, tehát nem egy másolat készül róla (tekintsünk el a primitív típusoktól)."
C++-ban viszont te döntöd el, hogy másolat készüljön róla, vagy az eredetivel dolgozzon tovább. C++-ban van tucatnyi paraméterátadás, Javaban van 1. Szerinted melyik biztosít többet?
"Ahogyan nézem a C++ tutoriálokat rossz nézni, hogy mindent kézzel kell beimplementálni pl: #include<cstdrag> míg máshol csak ctrl + shift + o jó ez lehet hogy az IDE-től is függ."
Ez egyrészt az IDE-től is függ, másrészt fingod sincs a C++ könyvtárszerkezetéről. Az iostream magával rántja a stringet is, de ha neked csak a string kell, miért hoznád magaddal az egész iostreamet? Az IDE sem fogja tudni kitalálni.
Ugyanaz, mintha java.*.*-ot importálnál (Attól tekintsünk el, hogy ez mennyire lehetséges).
"De mintha összedobott lenne az egész, ahogyan fejlődik, ahogyan folyamatosan implementálják bele pl: #include<string> és eddig egy char tömbbel szórakoztak nincs bajom a char tömbbel, de ha eddig az volt a menő, akkor miért teszik bele, hogy hátha több programozó fogja emiatt kedvelni a nyelvet?"
A string speciel régebb óta létezik a C++-ban, mint ahogy a Java/C# megjelent.
Ami meg az összedobást illeti, nézd meg azt a fél tonna deprecated függvényt, adattagot és egyebet ami a Javaban van. Na, az az összedobás. Nem véletlen, hogy egy C++ szabványon többet tökölnek, mint az Oracle a Javajan eddig összesen.
# 1/3 Időpont ma 10:29
Ezt meg kifejthetnéd, mert a C++ szimplán több funkciót biztosít rá. Egyedül a static block nincs meg a C++ban.
Tudtam, hogy itt neki fogunk menni egymásnak, de a C#-ban azért van a paraméter átadásnál több lehetőség is: params, ref, out.
Nyilván, ha mostanság készül egy programozási nyelv, akkor szép letisztultan fogjuk kapni, mint pl F# habár az nem OOP (valamennyire igen, hogy a .NET-el is tudjon kommunikálni), de nagyon tetszett amit C#-ban 50 sorból megírsz azt ott 5 sorból, mondjuk ez a lambda kifejezés miatt, amit már a C#-ba is bepakoltak.
Szóval, akkora nagy különbségek nincsenek és még annyi, hogy a Microsoft is a C#-ját isteníti és a C++ már szinte nem is támogatják lásd a Visual Studioban is Canossa járást kell csinálni, hogy egyáltalán egy GUI elinduljon.
Senki nem esett senkinek, csak totál hülyeségeket beszélsz.
Előbb talán olvass utána dolgoknak mielőtt véleményt formálsz róla.
Lambda kifejezések tök véletlen vannak az új C++ szabványban is.
Először is nem beszélhetünk olyanról, hogy az egyik nyelv jobb, mint a másik. Ez olyan, mintha autóknál egy terepjárót egy sportkocsival hasonlítanál össze: mindkettő totál másra jó.
Programozási nyelveknél is azt érdemes vizsgálni, hogy az adott célra/feladatra melyik alkalmasabb. És ilyenkor sem lesz jellemzően ordító eredmény, hanem megvizsgálsz néhány nyelvet, összegyűjtöd a pro és kontrát (ehhez persze eléggé komoly ismeretek kellenek, nem ilyen felületes dolgok, amiket Te emlegetsz) és a végén kiválasztod, hogy melyikkel akarod az adott feladatot megoldani.
Van olyan feladat, amire a C# tökéletesen alkalmas, én is szeretem, nem is kevés ilyen feladat van.
De ez ugyan így elmondhato a C++-ról is. A C++-t sokkal szélesebb skálán tudod használni (beágyazott fejlesztések, alacsonyabb szintű fejlesztések, de ugyanakkor magasabb szintű fejlesztésekre is alkalmas különböző op rendszereken és így tovább. Míg a C# alapvetően egy magasszintű nyelv. Kicsit olyan ez, mint az építkezés: a C#-ban nagyobb elemekből építkezel (panelházak), amikből sokkal gyorsabban tudsz összerakni valamit, de ennek a minősége sok szempontból nem lesz jellemzően olyan jó...míg a C++-ban sokszor kisebb elemekből építkezel, így több idő, de vége tökéletesebb lesz. De persze ennél árnyaltabb a dolog, hiszen lehet, nagyon jó minőségű C# programot is írni meg rossz minőségű C++-t is, illetve C++-ban is eléggé sok nagyobb elem áll rendelkezésedre és a C#-ra is rá lehet erőszakolni az alacsony szintű programozást...
# 5/7 Időpont ma 11:27
"Tudtam, hogy itt neki fogunk menni egymásnak[...]"
Én nem mentem neked, csak leírtam a tényeket, amikről te nem tudsz.
"[...]de a C#-ban azért van a paraméter átadásnál több lehetőség is: params, ref, out."
Ezért írtam azt, hogy Javaban van 1.
"Nyilván, ha mostanság készül egy programozási nyelv, akkor szép letisztultan fogjuk kapni, mint pl F# habár az nem OOP (valamennyire igen, hogy a .NET-el is tudjon kommunikálni), de nagyon tetszett amit C#-ban 50 sorból megírsz azt ott 5 sorból, mondjuk ez a lambda kifejezés miatt, amit már a C#-ba is bepakoltak."
Ez most hogy is jön ide? Mellesleg a rövidebb kód nem feltétlenül előny. Érthető kódot kell írni, nem rövidet.
"Szóval, akkora nagy különbségek nincsenek és még annyi, hogy a Microsoft is a C#-ját isteníti és a C++ már szinte nem is támogatják lásd a Visual Studioban is Canossa járást kell csinálni, hogy egyáltalán egy GUI elinduljon."
Most az, hogy te nem értesz hozzá, az megint nem tudom miért érv bármire. A Visual Studiot hozzáértőknek találták ki. Nekik nem kell Canossát járni.
Mellesleg annyira nem támogatják a C++-t, hogy a hivatalos szabványkiadás előtt tartalmazza az MSVC az új funkciókat, de ez gondolom téged nem zavar. :-)
Ahogyan írtam a leírásban is elnézést kérek minden C++ kollégától, csupán érveket akartam gyűjteni, hogy miért lenne érdemes a C++ -ba is energiát fektetnem.
Nagy tudatlanságokat is írtam, amit nem volt helyénvaló, de tanultam az okításokból :)
# 9/9 Időpont ma 20:09
Ha úgy érezted, hogy leharaptam a fejed akkor elnézést, nem ez állt szándékomban. Örülök, hogy érdeklődsz más nyelvek irányába is, nem pedig betokozódsz egy már jól bejáratottba.
Az, hogy mondtál tudatlanságokat, nabumm, mindenkivel előfordul. Inkább mondd ki, és vállald be, hogy kijavítanak, mint elsunnyogd, mintha tudnád holtbiztosra mi fán terem az.
Ha bármi kérdésed van még a nyelvvel kapcsolatban, nyugodtan tedd fel.
A legfőbb érv talán a C++ mellett a multiparadigmája. Ha akarod OOP, ha akarod imperatív, ha akarod kombinálod a kettőt. :-)
Úgy gondolom mindenféleképp érdemes energiát belefektetni, akkor is, ha egyáltalán nem C++ vonalon képzeled el magad a későbbiekben.
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!