Kezdőoldal » Számítástechnika » Programozás » C és C++ között mi a különbség?

C és C++ között mi a különbség?

Figyelt kérdés
Van valami közük egymáshoz,vagy két teljesen más/egymástól független nyelv?
2011. aug. 7. 09:33
1 2
 1/13 anonim ***** válasza:

van közük egymáshoz, igen.


a c++ a c-nek egy továbbfejlesztése, objektumorientált módon (is) tudsz benne programozni, meg a c++ túl van bonyolítva.

(ezt nem én mondom, hanem jó néhány JAVA programozási könyv megemlíti ezt)

2011. aug. 7. 11:05
Hasznos számodra ez a válasz?
 2/13 anonim ***** válasza:
A C-nek az objektumorientált verziója.
2011. aug. 7. 12:13
Hasznos számodra ez a válasz?
 3/13 anonim ***** válasza:
87%

Hogy megértsük a dolgot, nézzük meg, hogy jött létre a C++. A C++-t egy Stroustrup nevű dán ürge fejlesztette ki nagyrészt, és azért, mert C-ben kellett kódolniuk, és emiatt felismerte, hogy mik a C hiányosságai. Akart csinálni egy olyan nyelvet, ami rendelkezik a C erejével, de kiveszi néhány méregfogát. Azért hasonlít a nyelv ennyire a C-re, mert a kompatibilitás nagyon fontos szempont volt, ha nem lett volna nagyrészt kompatibilis, akkor valószínűleg nem lett volna ekkora sikere. Az a sokmillió leírt sor kód sokat számít, szinte mindennél többet.


11:05 Java programozási könyvet főleg Java programozók írják. Egy szavukat se hidd el. A C++ nincs túlbonyolítva, majdnem pont azt tudja, amit tudnia kell, ha butább lenne, egy jóval gyengébb eszközünk lenne. Ilyen szempontból inkább a Java van túlbonyolítva, mert illogikus a nyelv rendszere sok helyütt, a könyvtára meg főleg.


12:13 Nem, nem objektumorientált. TÁMOGATJA az objektumorientáltságot. Objektumorientált nyelvben minden objektum kéne legyen (lásd Python, az egy OO nyelv). A C++ multiparadigmás, támogat egy csomó programozási stílust, pont ettől erős nyelv.

2011. aug. 7. 12:56
Hasznos számodra ez a válasz?
 4/13 anonim ***** válasza:

A c a c++ egy valódi részhalmaza, vagyis minden c-ben írt program fordítható c++-ban is, ez szándékosan van így, de visszafele nem kompatibilis. c++-ban rugalmasabban is lehet válzozót dekrarálni, bevették a névtereket, osztályokat, template-ket stb.


"12:13 Nem, nem objektumorientált. TÁMOGATJA az objektumorientáltságot."

Objektum orientáltnak is szokták nevezni, pl.:"Együtt könnyebb a programozás Objektum-orientált C++" egyik könyvnek ez a címe. Objektum orientált, de nem tisztán objektum orientált.


"11:05 Java programozási könyvet főleg Java programozók írják. Egy szavukat se hidd el. A C++ nincs túlbonyolítva, majdnem pont azt tudja, amit tudnia kell, ha butább lenne, egy jóval gyengébb eszközünk lenne. Ilyen szempontból inkább a Java van túlbonyolítva, mert illogikus a nyelv rendszere sok helyütt, a könyvtára meg főleg. "


Ezek a mondatok egyfajta sovinizmusra utalnak, hát persze hogyne igen a c++ nyelv tökéletes, mindenhol logikus csúcs szuper hiper alkotás, a java egy túlbonyolított vacak 0.

2011. aug. 8. 00:28
Hasznos számodra ez a válasz?
 5/13 anonim ***** válasza:

00:28 Ez erős túlzás, hogy a C programok fordíthatók C++-ban, hálisten nem így van, különben egy csomó szar dolgot meg kellett volna tartani. Portoltam már C kódot C++-ra, elég nagy szívás tud lenni, de nem lehetetlen feladat.


Ha a magyar nyelvet magas szinten művelnéd, észrevehetnéd, hogy az "Objektum-orientált C++" szöveg arra vonatkozik, hogy a C++ nyelv objektumorientált használata. Azaz pont azt mondja, amit én: a C++ támogatja ezt a paradigmát, és általában szokás így használni a nyelvet. Ettől még a nyelv nem lesz oo, mint említettem az a Python (meg még persze van egy pár, Eiffel például).


Nem mondtam, hogy a C++ tökéletes, közel nem az. Azt meg jól látod, hogy jobbnak tartom, mint a Javat, persze az összehasonlításnak nem nagyon van értelme, mert más a célterület. Ez pusztán személyes érzés, nyílván. A Java nagyon sok mindent elért, kb úgy tekintek rá, mint az Apple-re: tisztelem az eredményei miatt, ettől függetlenül egy gusztustalan fosnak tekintem.

2011. aug. 8. 09:46
Hasznos számodra ez a válasz?
 6/13 anonim ***** válasza:
a ++:D
2011. aug. 8. 16:12
Hasznos számodra ez a válasz?
 7/13 anonim ***** válasza:

"00:28 Ez erős túlzás, hogy a C programok fordíthatók C++-ban, hálisten nem így van, különben egy csomó szar dolgot meg kellett volna tartani. Portoltam már C kódot C++-ra, elég nagy szívás tud lenni, de nem lehetetlen feladat. "

Ez nem igaz, ezt egyetemen tanultam és jól tudom, az előadásjegyzetből idézek: "

Minden C program lefordítható C++ ban is (így futtatható is), azonban

az nem garantált, hogy ugyanaz a tárgymodul jön létre!

· A C++ a C programozási nyelv magasabb absztrakciót lehetővé tevő

objektum-orientált bővítése

· Nagy volumenű fejlesztések támogatása, névterek, információ elrejtés,

csoportmunka, szigorú típus ellenőrzés

"


Akkor azt is észre kellett volna venned , hogy elég nehéz/szívás fordítani c-ben írt programot c fordítóval, GNU programra gondolok, próbáld meg ha nem hiszed. Vannak különböző fordítóknak "tájszólásai" amit az egyik lefordít a másik nem. Itt a szigorú ANSI szabvány kompatibilis kódot kell érteni az alatt hogy minden c-ben írt program fordítható c++ alatt is. Minden c program egyben c++-os program is, ha a kiterjesztést .c-ról .cpp-ra írod át.


"Ha a magyar nyelvet magas szinten művelnéd, észrevehetnéd, hogy az "Objektum-orientált C++" szöveg arra vonatkozik, hogy a C++ nyelv objektumorientált használata."

Én leírtam, hogy nem tisztán oo. Ez már kukacoskodás.


"Azt meg jól látod, hogy jobbnak tartom, mint a Javat, persze az összehasonlításnak nem nagyon van értelme, mert más a célterület. Ez pusztán személyes érzés, nyílván. A Java nagyon sok mindent elért, kb úgy tekintek rá, mint az Apple-re: tisztelem az eredményei miatt, ettől függetlenül egy gusztustalan fosnak tekintem."


Egy hivatalosan elfogadott statisztika a programozási nyelvek népszerűségéről ahol a java nyelv van első helyen.

[link]


A c++ template-ekbe elég "vad" dolgok fordulhatnak elő, azt nagyon durvának tartom hogy a fordító azt sem tudja hol a szintaktikai hiba, a standard könyvtárakat is hibásnak tekinti, igaz ez ad valami támpontot, ez a nyelv felépítéséből adódik. Ezt a java sokkal elegánsabban megoldja a java generikusokkal ... c++-ba különböző memóriahibák szörnyű dolgokat művelhetnek amik lehet hogy nagyon soká derülnek ki lehet hogy az egyik függvénykönyvtárba lévő memóriafolyás egy teljesen más függvénykönyvtárba olyan hibát idéz elő hogy ... a java típusbiztos memóriabiztos stb. nem akarok belemenni a részletbe.


"A Java nagyon sok mindent elért, kb úgy tekintek rá, mint az Apple-re: tisztelem az eredményei miatt, ettől függetlenül egy gusztustalan fosnak tekintem."

Igen a c++ más célterület, nem lehet összehasonlítani. Én a c++-t tekintem annak ha már itt személyeskedünk.

2011. aug. 8. 21:51
Hasznos számodra ez a válasz?
 8/13 anonim ***** válasza:

Akkor lehet, hogy el kéne gondolkodnod az egyetemed szavahihetőségén. Leírok egy rövid programot, ami ANSI C, de nem C++:


#include <stdlib.h>


int main()

{

int* new_int = malloc(sizeof(int));

}


Tessék, ennyi. Megdőlt a híres elméleted a valódi részhalmazságról. Nabumm. És sajnos nem ez az egyetlen különbség, hidd el, hogy komolyabb tapasztalatom van a témában, mint neked. char*-okkal is nagyon jókat lehet szívni, ugyanis az újabb könyvtári verziókban bevezettek néhány const jelzőt...


Nem kukacoskodás. OO vagy nem OO. A Java nem tisztán OO, hiszen vannak benne a beépített típusok. Tisztán OO az a Python és az Eiffel. A C++ egyáltalán nem OO. A nyelv nem objektumORIENTÁLT. Nem az objektumok a lényege, csak támogatja ezt a megközelítést. Mondom, kérdőjelezd meg amit az egyetemeden tanultál, mert nyílvánvalóan hülyeségeket is mondanak, ez a legjobb egyetemekkel is előfordul, ahol meg olyan ökörségeket leírnak, mint fent, az külön gyanús.


A C++ template valóban vadabb, mint amilyennek tervezték, de egészen más is a célja. A C++ template IGAZI generikus programozást tesz lehetővé, ellentétben a Java genericjével, ami csak elfedi a polimorfizmust, tehát OO megközelítésre ültet rá generikust. Az ADA nyelv adott még jóféle generikus programozást a világnak, nem tudom, miért nem azt vette át a C++ (vagyis tudom, a fordítási modell miatt).

A fordítási hibák meg pont azért vannak ilyen csúnyán, mert a template egy erős eszköz, ezért nehéz fordítani. Az új szabvány ezen már változtat szerencsére.


A memóriahibák meg a felhasználási területből jönnek: rendszerprogramozáshoz vagy komolyabb megszorításokkal rendelkező projekthez nem használhatsz egy kényelmes környezetet, ami kezelni neked a memóriát. Viszont ügyes programozási stílussal ezek nem jönnek elő, az más kérdés, hogy a nyelv nem hülyéknek készült, így nem kényszeríti rád ezt a stílust, hiszen ha tudod mit csinálsz, akkor csináld. Ezt a Javaban nem tudod megtenni. Még a C# is ad unsafe blokkot a kezedbe, hogy ha tudod mit csinálsz, ebből a szempontból is magasabbrendű, mint a Java.


Mellesleg nem személyeskedett senki, személyes vélemény kifejezése != személyeskedés, tanulj magyarul egy kicsit.


Amint látod, sokkal jobban értek a témához, mint te. Légyszíves mielőtt zsigerből idevágsz valamit, olvasd el mégegyszer. Ha nem érted, akkor még kétszer. Utána ha még mindig nem, akkor menj oda a professzorhoz, és kérdezd meg őt is.

2011. aug. 9. 07:39
Hasznos számodra ez a válasz?
 9/13 anonim ***** válasza:

"Akkor lehet, hogy el kéne gondolkodnod az egyetemed szavahihetőségén. Leírok egy rövid programot, ami ANSI C, de nem C++:


#include <stdlib.h>


int main()

{

int* new_int = malloc(sizeof(int));

} "


Kikapcsoltam a GNU specifikus, a szabvánnyal nem kompatibilis nyelvi kiterjesztéseket. És nem fordult c-ként és c++-ként sem.


Örülök neki hogy jobban tudod mint én meg a professzorok meg mint bárki a világon beleértve a jövő generációját is.

2011. aug. 9. 10:50
Hasznos számodra ez a válasz?
 10/13 anonim ***** válasza:

Egy szóval nem mondtam, hogy MINDENKINÉL jobban tudom, de úgy tűnik hisztis napod van. Vagy alapból ilyen kis rinyagép vagy. Ez van. Nem tudom, hogy fordítottad, segítek: -ansi -pedantic és szabványkövető lesz a fordítód.


xy@beast:~$ gcc -pedantic -ansi -o asd asd.c

xy@beast:~$ g++ -x c++ -pedantic -ansi -o asd asd.c

asd.c: In function ‘int main()’:

asd.c:5: error: invalid conversion from ‘void*’ to ‘int*’

xy@beast:~$ gcc -x c++ -pedantic -ansi -o asd asd.c

asd.c: In function ‘int main()’:

asd.c:5: error: invalid conversion from ‘void*’ to ‘int*’

xy@beast:~$ g++ -x c -pedantic -ansi -o asd asd.c


C-ként lefordul, C++-ként nem.

2011. aug. 9. 11:00
Hasznos számodra ez a válasz?
1 2

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!