Чем отличается C от C++

Корот­кий ответ: C++ — это улуч­шен­ный C. У этих язы­ков оди­на­ко­вый на 99% син­так­сис и коман­ды, но C — это боль­ше про струк­тур­ное и про­це­дур­ное про­грам­ми­ро­ва­ние, а C++ — про объ­ект­но ори­ен­ти­ро­ван­ное.

C — язык, кото­рый сде­лал в 1973 году Ден­нис Рит­чи. Глав­ная цель язы­ка — ско­рость, быст­ро­дей­ствие и уни­вер­саль­ность. Язык изна­чаль­но про­ек­ти­ро­вал­ся как систем­ный, что­бы на нём мож­но было писать код для про­цес­со­ров, драй­ве­ров и созда­вать на нём опе­ра­ци­он­ные систе­мы. В то вре­мя боль­шин­ство этих вещей дела­ли на ассем­бле­ре, и Рит­чи хотел это упро­стить.

C++ при­ду­мал Бьёрн Стра­уструп в нача­ле вось­ми­де­ся­тых, когда ему не хва­та­ло воз­мож­но­стей стан­дарт­но­го C. Он сде­лал язык более стро­гим, доба­вил в него клас­сы, ООП-подход и пере­груз­ку опе­ра­то­ров, сохра­нив ско­рость ори­ги­наль­но­го С. В 1983 году Бьёрн пере­име­но­вал язык из «C с клас­са­ми» в C++.

👉 О пере­груз­ке опе­ра­то­ров как-нибудь в дру­гой раз 🙂

C C++

Код чита­ет­ся про­ще 

Код выгля­дит слож­нее 

Про­ще пор­ти­ро­вать код на дру­гие плат­фор­мы 

Из-за осо­бен­но­стей язы­ка код пор­ти­ро­вать слож­нее 

Есть струк­ту­ры и пере­мен­ные типа «струк­ту­ра» 

Есть клас­сы и объ­ек­ты 

Насле­до­ва­ние — это струк­ту­ра внут­ри струк­ту­ры 

Клас­си­че­ское насле­до­ва­ние в сти­ле ООП 

void — обя­за­тель­ное сло­во 

Исполь­зо­вать сло­во void не обя­за­тель­но 

Мож­но объ­яв­лять гло­баль­ную пере­мен­ную несколь­ко раз 

Гло­баль­ная пере­мен­ная объ­яв­ля­ет­ся толь­ко один раз 

Исклю­че­ния нуж­но кон­стру­и­ро­вать само­му 

Есть обра­бот­ка исклю­че­ний 

Нет пере­груз­ки опе­ра­то­ров 

Опе­ра­то­ры мож­но пере­гру­жать 

Почти всё стан­дарт­но и пред­ска­зу­е­мо 

Лег­ко напи­сать код, в кото­ром непо­нят­но, где ошиб­ка 

Для чего изучать

C — клас­си­че­ский язык раз­ра­бот­ки систем­но­го ПО и любо­го соф­та для мик­ро­про­цес­со­ров. На нём напи­са­ны Linux, боль­шая часть Windows и MacOS. Если взять любой совре­мен­ный носи­мый гад­жет или элек­трон­ное устрой­ство, в боль­шин­стве слу­ча­ев они рабо­та­ют тоже под управ­ле­ни­ем про­грам­мы на C. В мире огром­ное коли­че­ство кода, кото­рый напи­сан на C (и ещё столь­ко же будет напи­са­но), поэто­му про­блем с рабо­той у C-программистов не пред­ви­дит­ся.

C++ — выбор тех, кому одно­вре­мен­но нуж­на вся мощь C и гиб­кость объ­ект­но ори­ен­ти­ро­ван­но­го про­грам­ми­ро­ва­ния. Counter-Strike, StarCraft и World of Warcraft напи­са­ны на C++, а это зна­чит, что мож­но соче­тать про­из­во­ди­тель­ность C и совре­мен­ные тех­но­ло­гии. Часть движ­ка Unity тоже напи­са­на на C++, что­бы полу­чить пря­мой доступ к памя­ти и ресур­сам систе­мы.

Нельзя ли подробнее?

На самом деле нет такой уж боль­шой раз­ни­цы меж­ду C и C++. Это оди­на­ко­во мощ­ные и быст­рые язы­ки, про­сто у них раз­ная область при­ме­не­ния и стиль про­грам­ми­ро­ва­ния.

Если вам важ­на ско­рость, про­из­во­ди­тель­ность и отно­си­тель­ная про­сто­та язы­ка — смот­ри­те на C, там это всё есть. С дру­гой сто­ро­ны, из-за про­сто­ты в нём мно­гие вещи при­дёт­ся делать вруч­ную — обра­ба­ты­вать исклю­че­ния, сле­дить за сро­ком жиз­ни пере­мен­ных и струк­тур или писать допол­ни­тель­ный код.

Сто­рон­ни­кам ООП боль­ше подой­дёт C++ — в нём уже есть всё, что нуж­но для рабо­ты с объ­ек­та­ми, обла­стя­ми види­мо­сти и про­чим доб­ром. Ино­гда такой код слож­нее под­дер­жи­вать и он может рабо­тать на несколь­ко про­цен­тов мед­лен­нее, чем на C, но в нём есть та сво­бо­да, кото­рой нет в ори­ги­наль­ном язы­ке. Та же пере­груз­ка опе­ра­то­ров — уди­ви­тель­но мощ­ная вещь в уме­лых руках, кото­рая может сэко­но­мить мно­го вре­ме­ни и ресур­сов.

Что­бы было понят­нее, ско­ро напи­шем подроб­но про оба язы­ка. А вы не болей­те и бере­ги­те себя.