Objective-C vs C++?
Nagy vonalakban ugyanarra kínálnak megoldást: a C-t alapul véve egy objektum-orientált nyelvet létrehozni. De elég különbözően álltak hozzá.
Melyiket szeretitek jobban? Feltéve ha volt már dolgotok mindkettővel.
Az objective-C-nél hanyagoljuk most el az apple-t, nem az apple-lel kapcsolatos kérdés ez, csak magával a nyelvvel.
persze, a gyakorlatban akkor találkozol vele ha apple cuccokra fejlesztesz
de úgy értettem az elhanyagolást hogy ne az apple API-t, framework-öket stb. értékeljük, csak magukat a nyelvi megoldásokat :)
c++ -ban egyszerűbb létrehozni egy class-t, abból pedig egy objektumot
viszont szerintem az objective-C -ben sokkal jobb hogy a függvényeknél a paramétereknek nevei is vannak, ez megkönnyíti a használatot
meg aztán a szögletes zárójel szerintem átláthatóbb kódot eredményez pl egymásba ágyazott függvényeknél:
someObject.doSomething(someObject.doSomethingElse(someObject.getValue()+1));
[someObject doSomething:[someObject doSomethingElse:[someObject getValue]+1]];
sok dologra egyszerűbb megoldást kínál a C++, néha pedig praktikusabbnak találom az objective-C -t
Ki mit szokott meg.
Ennél egy Python kód meg még átláthatóbb.
Szerintem felesleges összehasonlítani a kettőt, mert teljesen más területeken alkalmazzák őket - azaz a fejlesztőnek nem igazán van választási lehetősége, hogy melyiket alkalmazza adott helyzetben.
Szerintem az Objective-C egy jó nyelv, de megértem, ha ellenérzéssel viseltetnek iránta, eléggé eltér (még terminológia szintjén is) a többitől. A YES/NO, @interface osztály deklaráció, class/instance metódusok jelölésének módja (avatatlan szemlélő - UML után szabadon - protection jelölésnek hiszi) elég ahhoz, hogy egy más nyelven szocializálódott fejlesztő ráncolni kezdje a homlokát. C++-szal szemben előnynek találom a property-k alkalmazását, az egyszerűbb memóriakezelést (ARC jó dolog), de nem szeretem, hogy kevésbé típusos (pl NSArray-be bármit pakolhatsz), illetve hogy pár megszokott OO elemet (pl absztrakt osztályokat) itt nem lehet szigorúan kivitelezni. Amit még imádok, az a GCD (bár ez inkább C-s API), mondjuk a blokk szintaxissal nem tudok megbékélni, nem tudom felfogni, hogy miért kellett ugyanahhoz kismillió különböző szintaxist kitalálni (ezzel aligha vagyok egyedül, legalábbis a fuckingblocksyntax.com találó neve erről árulkodik:)).
C++-ban eddig nem volt módom komolyabban elmerülni (jóformán csak annyit foglalkoztam vele, ami a BME elvégzéséhez kellett), de 11-ben megjelent újdonságok érdekesnek tűnnek.
elég sok mindenben eltér a két nyelv, ha C-s szintaktikájú nyelvekben programoztál eddig, akkor halál lesz az Obj-C (ugyanakkor teljesen megértem az amögött rejlő logikát is, csak nehét átszokni rá).
attól függ mire kell, mert Obj-C-t _tényleg_ csak az Apple használ, C++ pedig egy halom magas teljesítményt, de OO paradigmákat megkövetelő feladatra jó. (Obj-C-ben pl. semmi gond ha ráfutsz egy nullpointerre, C++ meg lehal egyből)
"Obj-C-ben pl. semmi gond ha ráfutsz egy nullpointerre, C++ meg lehal egyből"
Pont ezt fel akartam én is hozni, de nem mint előny.
Sok esetben halál a hibát megtalálni emiatt, ha csak simán át tud siklani az ember null pointereken.
Assertekkel telerakni a kódot pedig nem túl elegáns.
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!