с++ и с
19 отговора
979 прегледа
с++ и с
с какво С+ превъзхожда С??за мен с виртуалния механизъм , наследяването и със статичните член данни в клас.всичко останало е напълно излишно
Re: с++ и с
ko ta ebe, tva sa tehnicheski podrobnosti, c ili c++, goliama rabota,
vajnoto sa ideite ... tva kyv e ezika e malovajno.
vajnoto sa ideite ... tva kyv e ezika e malovajno.
Re: с++ и с
Izpolzvaiki C mozesh da napravish vsichko koeto se pravi i sas C++, razlikata e che pisaneto e po-veche. Edno vreme C++ compilatorite biaha implementirani podobno na preprocessor-a na C-to. Compilira se C++ programa i izhoda e C code koito posle se puska na C compiler-a. No dosestash se che C coda ne e mnogo chetliv :)
Osven tova C++ ina dosta po-strog type control. Vsastnost ako sviknesh da pishesh na C++ posle ti e malko krivo kato se varnesh na C.
Osven tova C++ ina dosta po-strog type control. Vsastnost ako sviknesh da pishesh na C++ posle ti e malko krivo kato se varnesh na C.
Re: с++ и с
Двата езика всъщност нямат много общо. С++ е взел идеологията на SmallTalk и ADA (за АДА не съм сигурен, но за SmallTalk 100%), но в него са заложени фонетиката и синтаксиса на най-разпространения тогава език - С. И за да бъде още по-лесно преминаването към езика от ново поколение, хората го правят 100% съвместим с въпросното С. И всъщност това което в момента е разпространено като "С", всъщност е някакво средно С/С++.
Ако седнеш да пишеш на чисто С, ще ти се отели вола. Налагало ми се е, не е гот.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Ако седнеш да пишеш на чисто С, ще ти се отели вола. Налагало ми се е, не е гот.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Re: с++ и с
Разликата между с и с++ не е в това дали може да се направи нещо с единия език което да не може с другия. С е напълно достатъчен за испълнение на всяка задача свързана с програмирането (както и другите "common purpose" езици).
Казвайки "това е излишно" ти може би изхождаш от факта че ако ти (или някой с който можеш да комуникираш) използва кода който пишеш в момента.
Самта идея за по-голяма абстракция и да по-пълно капсулиране спомага много за писане на код, използването на който е дефиниратно от създатела му еднозначно.1) Напр. като пишеш една библиотека на С ти ще експортнеш функции и струкрури които да вършат определена работа. Но много по-трудно (ще ковства повече труд) ще е да определиш ти-създателя- как ще се използва кода ти от други - ето например, strcpy(char*, /*const*/char*) идеята явно е да се изкопира това което се съдържа в паметта сочена от 2риа параметър в паметта сочена от 1-вия параметър, но все пак тук оставяш този който ще ползва фунциите да създава паметта, да се грижи тя да не "оверлапва", още повече че има възможни имплементации на тази фунция, да речем ти може да си решил да имплементираш ф-ята така: ако 1-вия парам е NULL - да го създадеш вътре с сължината на входния низ (не коментирам колко е добра идеята...) както и да е - някой трябва едва ли не да ти види кода за да е сигурен че ползва правилно библиотеката ти. За разлика да кажем string str, str1;/*....*/ str = str; (ти си определил как ще став акопирането както и във strcpy, но с важната разлика че оперираш с данни за създаването на които си се погрижил ти!)тук ти можеш да се погрижиш за много повече неща чрез създаването на класа стринг и "капсулирането" на цялото поведение на текстова променлива.
2) Нивото на австракция - във С както знаем може да се направи всичко, но като говорим както и по-горе за "reusable code" е много по-добре да можеш да дадеш "рамките" на използването на кода (напр като създадеш абстрактен клас, които потребителя на твоя код ще триябва да имплементира и по-този начин ти даваш един доста ясен (и за теб и за потребителя) интерфейс чрез който той може да комуникира с твоя код). В С ти ще трябва да използваш методите на указали към фунции, който разбира се е удобна работа - но пак ако този който ползва кода има доста информация за това как е написан точно.
С++ също така изнася една значителна част от създаването на изпълним код във времето на компилиране, което изобщо не е за пренебрегване, и като противоположност на "късното свързване" това предтавлява още една степен на абстракция - изпозването на темплейти, typetrais, дори и механизми с които да кажем можеш да постигнеш compile-time assert...
Изобщо като се погледне реално от гледна точка на програмирането С++ не дава нищо ново от С, но от гледна точка на "Хората в програмирането" или на процеса на създаването на софтуер - там нещата са несравними. Най забележителното, според мен, е че езика успява да придаде множество качества свързани с ООП дизайна, и все пак Строструб е съумял да запази в много голяма степен свободата в езика - което го прави също така полезен и опасен за невежи както и С :-), За тази цел - за да се използва ефецтивно С++ си е нужно човек да се подчинява на някой "фиктивни" правила, което обаще изисква самия програмист да ги научи и спазва - зашото те не са вложени в езика, това прави доста по-трудно да станеш ефективен С++ програмист - защото "можеш да спазваш правилата, а можеш и да не ги спазваш" нещо като да шофираш и да няма огранищения, да няма глоби, - в повечето случаи трябва да спазваш "ограничения който сам си налагаш", за да не излетиш от
пътя, но знаеш че когато си достатъчно опитен в някои редки случаи, можеш да минеш напряко - да си много по ефективен, но... всично си има цена - иска години опит за да знаеш кога може да минеш напряко и да не ти е "за последно"
.
Ако не ти се занимава има други средства - в Java например, ограниченията са в езика - няма темплйти, нямаш възможност да решаваш дали да сързваш рано или късно (винаги късно), всички променливи от обекти за по референс (и точка), няма множествено наследяване, Няма Указатели!! - ако се върнем към нашия пример, някой те е пуснал на 4 лентов път (който може да премине в тесен планински), но ти е махнал 4 цилиндъра от колата (сега си с 2
), и ти е наложил ограничение 40 км/ч. Разбира се това е за добро защото може да направиш бели иначе - сериозно.
Успех!
Казвайки "това е излишно" ти може би изхождаш от факта че ако ти (или някой с който можеш да комуникираш) използва кода който пишеш в момента.
Самта идея за по-голяма абстракция и да по-пълно капсулиране спомага много за писане на код, използването на който е дефиниратно от създатела му еднозначно.1) Напр. като пишеш една библиотека на С ти ще експортнеш функции и струкрури които да вършат определена работа. Но много по-трудно (ще ковства повече труд) ще е да определиш ти-създателя- как ще се използва кода ти от други - ето например, strcpy(char*, /*const*/char*) идеята явно е да се изкопира това което се съдържа в паметта сочена от 2риа параметър в паметта сочена от 1-вия параметър, но все пак тук оставяш този който ще ползва фунциите да създава паметта, да се грижи тя да не "оверлапва", още повече че има възможни имплементации на тази фунция, да речем ти може да си решил да имплементираш ф-ята така: ако 1-вия парам е NULL - да го създадеш вътре с сължината на входния низ (не коментирам колко е добра идеята...) както и да е - някой трябва едва ли не да ти види кода за да е сигурен че ползва правилно библиотеката ти. За разлика да кажем string str, str1;/*....*/ str = str; (ти си определил как ще став акопирането както и във strcpy, но с важната разлика че оперираш с данни за създаването на които си се погрижил ти!)тук ти можеш да се погрижиш за много повече неща чрез създаването на класа стринг и "капсулирането" на цялото поведение на текстова променлива.
2) Нивото на австракция - във С както знаем може да се направи всичко, но като говорим както и по-горе за "reusable code" е много по-добре да можеш да дадеш "рамките" на използването на кода (напр като създадеш абстрактен клас, които потребителя на твоя код ще триябва да имплементира и по-този начин ти даваш един доста ясен (и за теб и за потребителя) интерфейс чрез който той може да комуникира с твоя код). В С ти ще трябва да използваш методите на указали към фунции, който разбира се е удобна работа - но пак ако този който ползва кода има доста информация за това как е написан точно.
С++ също така изнася една значителна част от създаването на изпълним код във времето на компилиране, което изобщо не е за пренебрегване, и като противоположност на "късното свързване" това предтавлява още една степен на абстракция - изпозването на темплейти, typetrais, дори и механизми с които да кажем можеш да постигнеш compile-time assert...
Изобщо като се погледне реално от гледна точка на програмирането С++ не дава нищо ново от С, но от гледна точка на "Хората в програмирането" или на процеса на създаването на софтуер - там нещата са несравними. Най забележителното, според мен, е че езика успява да придаде множество качества свързани с ООП дизайна, и все пак Строструб е съумял да запази в много голяма степен свободата в езика - което го прави също така полезен и опасен за невежи както и С :-), За тази цел - за да се използва ефецтивно С++ си е нужно човек да се подчинява на някой "фиктивни" правила, което обаще изисква самия програмист да ги научи и спазва - зашото те не са вложени в езика, това прави доста по-трудно да станеш ефективен С++ програмист - защото "можеш да спазваш правилата, а можеш и да не ги спазваш" нещо като да шофираш и да няма огранищения, да няма глоби, - в повечето случаи трябва да спазваш "ограничения който сам си налагаш", за да не излетиш от
пътя, но знаеш че когато си достатъчно опитен в някои редки случаи, можеш да минеш напряко - да си много по ефективен, но... всично си има цена - иска години опит за да знаеш кога може да минеш напряко и да не ти е "за последно"
Ако не ти се занимава има други средства - в Java например, ограниченията са в езика - няма темплйти, нямаш възможност да решаваш дали да сързваш рано или късно (винаги късно), всички променливи от обекти за по референс (и точка), няма множествено наследяване, Няма Указатели!! - ако се върнем към нашия пример, някой те е пуснал на 4 лентов път (който може да премине в тесен планински), но ти е махнал 4 цилиндъра от колата (сега си с 2
Успех!
Re: с++ и с
Разликата между с и с++ не е в това дали може да се направи нещо с единия език което да не може с другия. С е напълно достаръчен за испъкнение на всяка задача свързана с програмирането (както и другите "common purpose" езици).
Казвайки "това е еизлишно" ти може би изхождаш от факта че ако ти (или някой с който можеш да комуникираш) използва кода който пишеш в момента.
Самта идея за по-голяма абстракция и да по-пълно капсулиране спомага много за писане на код, използването на който е дефиниратно от създатела му еднозначно.1) Напр. като пишеш една библиотека на С ти ще експортнеш функции и струкрури които да вършат определена работа. Но много по-трудно (ще ковства повече труд) ще е да определиш ти-създателя- как ще се използва кода ти от други - ето например, strcpy(char*, /*const*/char*) идеята явно е да се изкопира това което се съдържа в паметта сочена от 2риа параметър в паметта сочена от 1-вия параметър, но все пак тук оставяш този който ще ползва фунциите да създава паметта, да се грижи тя да не "оверлапва", още повече че има възможни имплементации на тази фунция, да речем ти може да си решил да имплементираш ф-ята така: ако 1-вия парам е NULL - да го създадеш вътре с сължината на входния низ (не коментирам колко е добра идеята...) както и да е - някой трябва едва ли не да ти види кода за да е сигурен че ползва правилно библиотеката ти. За разлика да кажем string str, str1;/*....*/ str = str; (ти си определил как ще став акопирането както и във strcpy, но с важната разлика че оперираш с данни за създаването на които си се погрижил ти!)тук ти можеш да се погрижиш за много повече неща чрез създаването на класа стринг и "капсулирането" на цялото поведение на текстова променлива.
2) Нивото на австракция - във С както знаем може да се направи всичко, но като говорим както и по-горе за "reusable code" е много по-добре да можеш да дадеш "рамките" на използването на кода (напр като създадеш абстрактен клас, които потребителя на твоя код ще триябва да имплементира и по-този начин ти даваш един доста ясен (и за теб и за потребителя) интерфейс чрез който той може да комуникира с твоя код). В С ти ще трябва да използваш методите на указали към фунции, който разбира се е удобна работа - но пак ако този който ползва кода има доста информация за това как е написан точно.
С++ също така изнася една значителна част от създаването на изпълним код във времето на компилиране, което изобщо не е за пренебрегване, и като противоположност на "късното свързване" това предтавлява още една степен на абстракция - изпозването на темплейти, typetrais, дори и механизми с които да кажем можеш да постигнеш compile-time assert...
Изобщо като се погледне реално от гледна точка на програмирането С++ не дава нищо ново от С, но от гледна точка на "Хората в програмирането" или на процеса на създаването на софтуер - там нещата са несравними. Най забележителното, според мен, е че езика успява да придаде множество качества свързани с ООП дизайна, и все пак Строструб е съумял да запази в много голяма степен свободата в езика - което го прави също така полезен и опасен за невежи както и С :-), За тази цел - за да се използва ефецтивно С++ си е нужно човек да се подчинява на някой "фиктивни" правила, което обаще изисква самия програмист да ги научи и спазва - зашото те не са вложени в езика, това прави доста по-трудно да станеш ефецтивен С++ програмист - защото "можеш да спазваш правилата, а можеш и да не ги спазваш" нещо като да шофираш и да няма огранищения, да няма глоби, - в повечето случаи трябва да спазваш "ограничения който сам си налагаш", за да не излетиш от
пътя, но знаеш че когато си достатъчно опитен в някои редки случаи, можеш да минеш напряко - да си много по ефективен, но... всично си има цена - иска години опит за да знаеш кога може да минеш напряко и да не ти е "за последно"
.
Ако не ти се занимава има други средства - в Java например, ограниченията са в езика - няма темплйти, нямаш възможност да решаваш дали да сързваш рано или късно (винаги късно), всички променливи от обекти за по референс (и точка), няма множествено наследяване, Няма Указатели!! - ако се върнем към нашия пример, някой те е пуснал на 4 лентов път (който може да премине в тесен планински), но ти е махнал 4 цилиндъра от колата (сега си с 2
), и ти е наложил ограничение 40 км/ч. Разбира се това е за добро защото може да направиш бели иначе - сериозно.
Успех!
Казвайки "това е еизлишно" ти може би изхождаш от факта че ако ти (или някой с който можеш да комуникираш) използва кода който пишеш в момента.
Самта идея за по-голяма абстракция и да по-пълно капсулиране спомага много за писане на код, използването на който е дефиниратно от създатела му еднозначно.1) Напр. като пишеш една библиотека на С ти ще експортнеш функции и струкрури които да вършат определена работа. Но много по-трудно (ще ковства повече труд) ще е да определиш ти-създателя- как ще се използва кода ти от други - ето например, strcpy(char*, /*const*/char*) идеята явно е да се изкопира това което се съдържа в паметта сочена от 2риа параметър в паметта сочена от 1-вия параметър, но все пак тук оставяш този който ще ползва фунциите да създава паметта, да се грижи тя да не "оверлапва", още повече че има възможни имплементации на тази фунция, да речем ти може да си решил да имплементираш ф-ята така: ако 1-вия парам е NULL - да го създадеш вътре с сължината на входния низ (не коментирам колко е добра идеята...) както и да е - някой трябва едва ли не да ти види кода за да е сигурен че ползва правилно библиотеката ти. За разлика да кажем string str, str1;/*....*/ str = str; (ти си определил как ще став акопирането както и във strcpy, но с важната разлика че оперираш с данни за създаването на които си се погрижил ти!)тук ти можеш да се погрижиш за много повече неща чрез създаването на класа стринг и "капсулирането" на цялото поведение на текстова променлива.
2) Нивото на австракция - във С както знаем може да се направи всичко, но като говорим както и по-горе за "reusable code" е много по-добре да можеш да дадеш "рамките" на използването на кода (напр като създадеш абстрактен клас, които потребителя на твоя код ще триябва да имплементира и по-този начин ти даваш един доста ясен (и за теб и за потребителя) интерфейс чрез който той може да комуникира с твоя код). В С ти ще трябва да използваш методите на указали към фунции, който разбира се е удобна работа - но пак ако този който ползва кода има доста информация за това как е написан точно.
С++ също така изнася една значителна част от създаването на изпълним код във времето на компилиране, което изобщо не е за пренебрегване, и като противоположност на "късното свързване" това предтавлява още една степен на абстракция - изпозването на темплейти, typetrais, дори и механизми с които да кажем можеш да постигнеш compile-time assert...
Изобщо като се погледне реално от гледна точка на програмирането С++ не дава нищо ново от С, но от гледна точка на "Хората в програмирането" или на процеса на създаването на софтуер - там нещата са несравними. Най забележителното, според мен, е че езика успява да придаде множество качества свързани с ООП дизайна, и все пак Строструб е съумял да запази в много голяма степен свободата в езика - което го прави също така полезен и опасен за невежи както и С :-), За тази цел - за да се използва ефецтивно С++ си е нужно човек да се подчинява на някой "фиктивни" правила, което обаще изисква самия програмист да ги научи и спазва - зашото те не са вложени в езика, това прави доста по-трудно да станеш ефецтивен С++ програмист - защото "можеш да спазваш правилата, а можеш и да не ги спазваш" нещо като да шофираш и да няма огранищения, да няма глоби, - в повечето случаи трябва да спазваш "ограничения който сам си налагаш", за да не излетиш от
пътя, но знаеш че когато си достатъчно опитен в някои редки случаи, можеш да минеш напряко - да си много по ефективен, но... всично си има цена - иска години опит за да знаеш кога може да минеш напряко и да не ти е "за последно"
Ако не ти се занимава има други средства - в Java например, ограниченията са в езика - няма темплйти, нямаш възможност да решаваш дали да сързваш рано или късно (винаги късно), всички променливи от обекти за по референс (и точка), няма множествено наследяване, Няма Указатели!! - ако се върнем към нашия пример, някой те е пуснал на 4 лентов път (който може да премине в тесен планински), но ти е махнал 4 цилиндъра от колата (сега си с 2
Успех!
Re: с++ и с
Kato software koito mojesh da napishesh "po princip", C i C++ syvpadat. Daje edno vreme mnogo kompilatori na C++ parvo sa translirali do C i posle sa puskali C kompilatora. Taka che C++ moje da se svede do C dori avtomatichno (ako ne e ochevidno).
Kato software koito mojesh da napishesh "na praktika", C i C++ se razlichavat (v nyakakva stepen). Po-visokoto nivo na abstrakciya v C++ pozvolyava pisaneto na po-slojen kod s po-malko mozak :)
Templates pozvolyava sazdavaneto na po-gavkav i izpolzvaem kod (da ne govorim che ponyakoga e vazmojno da postignesh i po-barz kod sas sashtoto nivo na abstrakciya(keyword: compile-time evaluation).
Lichnoto mi mnenie e che C++ ima tejak sintaksis, iziskvash gigabaiti pamet ot programista (da zapomni wsichki specialni sluchai i zawarteni pravila). Obiknoveno tipochniya C++ programmer si pishe na edno podmnojestwo na ezika i chak kogato mu se naloji da chete chujd kod mu se nalaga da poglejda v standarta :) (lili kogato vaznikne spor s kompilatora).
Kato software koito mojesh da napishesh "na praktika", C i C++ se razlichavat (v nyakakva stepen). Po-visokoto nivo na abstrakciya v C++ pozvolyava pisaneto na po-slojen kod s po-malko mozak :)
Templates pozvolyava sazdavaneto na po-gavkav i izpolzvaem kod (da ne govorim che ponyakoga e vazmojno da postignesh i po-barz kod sas sashtoto nivo na abstrakciya(keyword: compile-time evaluation).
Lichnoto mi mnenie e che C++ ima tejak sintaksis, iziskvash gigabaiti pamet ot programista (da zapomni wsichki specialni sluchai i zawarteni pravila). Obiknoveno tipochniya C++ programmer si pishe na edno podmnojestwo na ezika i chak kogato mu se naloji da chete chujd kod mu se nalaga da poglejda v standarta :) (lili kogato vaznikne spor s kompilatora).
Re: с++ и с
ha. na chisto C se pishe mnogo po-lesno otkolkoto na C++
estestweno ako triabwa da se wpishesh w niakakwa slojna sreda,
obiknoweno neshtata sa prigodeni taka che da se izpolzwa OOD
i w kraina smetka se okazwa che e po-lesno na Java :)
s dwe dumi nikoga ne e po-lesno na C++ :)
estestweno ako triabwa da se wpishesh w niakakwa slojna sreda,
obiknoweno neshtata sa prigodeni taka che da se izpolzwa OOD
i w kraina smetka se okazwa che e po-lesno na Java :)
s dwe dumi nikoga ne e po-lesno na C++ :)
Re: с++ и с
> И всъщност това което в момента е разпространено като "С", всъщност е някакво средно С/С++.
Сигурно си искал да напишеш, че няма чист C++, а масово се използва нещо средно като напр. използване printf и malloc в C++ програми. C неизбежно си е чист, понеже не е в състояние нито да компилира C++ код, нито да се линкне с негови библиотеки.
> Ако седнеш да пишеш на чисто С, ще ти се отели вола. Налагало ми се е, не е гот.
Ако си свикнал със C++ това е нормално, но ако и двата езика са ти еднакво непознати и приемем, че C е 10 пъти по-малък, на него е 10 пъти по-лесно да започнеш да пишеш - вж. nachinaeshta.
Да не говорим, че C е много по-стабилизиран език. Книгите ми за C++ от преди 10 години са просто за изхвърляне - сума си техники, които препоръчват, днес са отречени и отхвърлени.
Сигурно си искал да напишеш, че няма чист C++, а масово се използва нещо средно като напр. използване printf и malloc в C++ програми. C неизбежно си е чист, понеже не е в състояние нито да компилира C++ код, нито да се линкне с негови библиотеки.
> Ако седнеш да пишеш на чисто С, ще ти се отели вола. Налагало ми се е, не е гот.
Ако си свикнал със C++ това е нормално, но ако и двата езика са ти еднакво непознати и приемем, че C е 10 пъти по-малък, на него е 10 пъти по-лесно да започнеш да пишеш - вж. nachinaeshta.
Да не говорим, че C е много по-стабилизиран език. Книгите ми за C++ от преди 10 години са просто за изхвърляне - сума си техники, които препоръчват, днес са отречени и отхвърлени.
Re: с++ и с
Abe hora ne znam kolko ste programirali i na dwata obache edno ot syshtestwenite neshta e upravlenieto na izkliuchitelni situacii
EXCEPTION HANDLING towa go niama w C a go ima w C++
i towa ako ne e vajno ???
EXCEPTION HANDLING towa go niama w C a go ima w C++
i towa ako ne e vajno ???
Re: с++ и с
abe na koi mu puka za izkluchitelni situacii... wajno e w da wyrwi w obshti linii.
Re: с++ и с
Ami takav sam si ma.
A i tatko kazva s zeni i radiotochki da ne sporia.
Ami "ako triabwa da se wpishesh w niakakwa slojna sreda" (ne che razbiram kakvo imash v predvid pod slojna sreda) i mi triabva barzodeistvie kakvo da pravia?
A i tatko kazva s zeni i radiotochki da ne sporia.
Ami "ako triabwa da se wpishesh w niakakwa slojna sreda" (ne che razbiram kakvo imash v predvid pod slojna sreda) i mi triabva barzodeistvie kakvo da pravia?
Re: с++ и с
По-лесно е на Java но дали е по-оптимизирана програмата? За разлика от c++, за да се олесни програмирането в Java са скрити от програмиста много неща, като например указателите. Има също така Garbage Collector, коъто се занимава с чистенето на мемъру лиикове, но тези неща не са доизчистени и освен, че правят по-тромава програмата, има и бъговме, който създават допълнителни проблеми.
Re: с++ и с
Абе каквото съм писал, писал съл, ама правилно си ме разбрал :)) Точно това имах предвид, че s/f/printf() се ползва непрекъснато, въпреки че на С++ стандартния вход/изход е такован на потоков принцип. Също и други техники, въпреки, че malloc()/free() аз лично рядко виждам.
Една примерна С-функция която се ползва масово е memcpy(), когато искаш да копираш някоя структура. С++ стилът е да предефинираш оператор =, и да казваш А=B, но масово се ползва memcpy(&A,&B,sizeof A). Това е нещо което виждам често, не казвам че е масова практика.
Колкото до разликата между С и С++ като езици, естествено е С++ да е по-мъчен за учене. Все пак той е създаден да решава проблеми с по-високо ниво на абстракция. Това което имах предвид относно самовъзпроизвеждането на домашните животни, беше че когато си свикнал с удобствата на С++, и седнеш да пишеш на С в среда С се сблъскваш с различиятя между С и С++ за които не мислиш дакото пишеш на С в среда С++. Най-кошмарното нещо за мен е дефинирането на променливи в началото на функцията. Ей богу, от това мога да откача!
Всъщност най-съществените разлики между двата езика са на идейно ниво - която и книга да хванеш за сравнение между структурен език (С) и обектно-ориентиран такъв (С++), веднага можеш да видиш предимствата на втория.
Ми не искам пък да ми четат буферите!
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Една примерна С-функция която се ползва масово е memcpy(), когато искаш да копираш някоя структура. С++ стилът е да предефинираш оператор =, и да казваш А=B, но масово се ползва memcpy(&A,&B,sizeof A). Това е нещо което виждам често, не казвам че е масова практика.
Колкото до разликата между С и С++ като езици, естествено е С++ да е по-мъчен за учене. Все пак той е създаден да решава проблеми с по-високо ниво на абстракция. Това което имах предвид относно самовъзпроизвеждането на домашните животни, беше че когато си свикнал с удобствата на С++, и седнеш да пишеш на С в среда С се сблъскваш с различиятя между С и С++ за които не мислиш дакото пишеш на С в среда С++. Най-кошмарното нещо за мен е дефинирането на променливи в началото на функцията. Ей богу, от това мога да откача!
Всъщност най-съществените разлики между двата езика са на идейно ниво - която и книга да хванеш за сравнение между структурен език (С) и обектно-ориентиран такъв (С++), веднага можеш да видиш предимствата на втория.
Ми не искам пък да ми четат буферите!
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Re: с++ и с
Какво имаш предвид под "сложната среда", и какво общо има тя с Дружествата с Ограничена Отговорност? 
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.
Мечтата е мисъл, мисълта е идея, всяка идея се реализира. Аз не мечтая, а реализирам идеите си.