Devel.cz Lupa Měšec Podnikatel Root Zdroják.cz DigiZone Slunečnice Vitalia TopDrive KupDnes Navrcholu NovýTarif Dobrý web Weblogy Woko Jagg Computer.cz SK: MojeLinky

Hlavní navigace

Názor k článku
Štěpán Škrob: Horkým kandidátem byl WebKit, ale vybrali jsme Gecko

ondra.novacisko.cz
ondra.novacisko.cz (neregistrovaný) ---.203.broadband11.iol.cz
27. 2. 2009 0:31

Re: C++ versus C

celé vlákno
To co jste teď ukázal, to jsou objekty. Opravdu, beze srandy. Objekty implementované technicky jinak, než v C++. Vy jste totiž do dnes nepochopil, co je to programování objektově. To není technická záležitost typu konstruktor a destruktor, nebo způsob syntaxtického zápisu. To je o myšlení. Uvádíte, jak jsou si příklady podobné. Asi vás možná překvapí, že výsledný překlad bude v obou případech velice podobný. Ano, i tady máte konstruktor "g_string_new", volani metody "puts a str" a destruktor "g_string_free". Rozdil je v tom, ze zatimco, vy si musite hlidat zanik objektů ručně, C++ to udělá za vás samo. Dokonce bych si dokázal představit obalení GString jako C++ objekt.

class MyGString {
   GString *s;
public:
   MyGString(const char *text):s(g_string_new(text)) {}
   const char *c_str() const {return s->str;}
   ~MyGString() {g_string_free(s);}
};

int main(void)
{
    MyGString  str = "Hello World";
    puts(str.c_str());
    return EXIT_SUCCESS;
}


No a teď mi napište, co shledáváte na tomhle objektu špatného, třeba oproti klasickému C. Kde je ta berlička, to co dělá nepřehledné. Naopak zde vidíte, že jako uživatel takového objektu nemusíte řešit jak spravovat paměť objektu. Vše je v režii objektu, ten si hlídá alokace a dealokace sám.

A to neuvažujeme třeba jako výhodu má nyní dědičnost, právě v možnosti přidat další funkcionalitu bez zásahu do originálního objektu. Neuvažuji už ani polymofizmus, který budete v C dělat velice obtížně.Ale jde to OOP pouze v C jsem viděl. C++ pouze usnadňuje psaní objektově. Řešení zániku objektu je pouze jedna z jeho automatických činností. Překladač za vás vyřeší často mnohem obtížnější věci, třeba inicializaci objektů při vícenásobné, nebo virtuální dědičnosti, volání virtuální funkcí přes ukazatel na funkci, virtuální destruktoru. Tyhle všechny automatické činnosti jsou už optimalizované s ohledem na cílovou platformu. Garantuji Vám, že ruční správa těchto činností v C v nejlepším případě vygeneruje stejně optimalizovaný výsledek (výjma nějakých extrabuřtů, težící z toho, že programátor má víc informací, než překladač)

Implicitne predpokladam, ze C++ je oblibenejsi mezi uzivateli Windows, Objekty jsou skutecne jen ty berlicky, ktere maji pomoci programovat i lidem, nemajicim na to bunky, asi jako M$ chce,...

Co takhle mi poslat kontakt na toho dealera, který vám prodal to pěkné zboží. Bejt takhle zhulenej se mi snad ještě nepovedlo.