Вам мало языка C? Попробуйте C++

С++ — это Си с классами

Когда в 1973 году вышел С, это было кру­то — мож­но было писать почти любые систем­ные про­грам­мы на язы­ке высо­ко­го уров­ня без вся­ко­го ассем­бле­ра. И пер­вое вре­мя его хва­та­ло всем.

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

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

В чём сила C++

С++ уна­сле­до­вал от C все его силь­ные сто­ро­ны и доба­вил новые:

  • пол­но­цен­ное ООП-программирование;
  • пере­груз­ку опе­ра­то­ров (в уме­лых руках это очень мощ­ная шту­ка);
  • пол­но­цен­ную обра­бот­ку исклю­че­ний (это когда вы зара­нее про­ду­мы­ва­е­те, что может пой­ти не так, и успе­ва­е­те сами преду­смот­реть пове­де­ние про­грам­мы при ошиб­ках);
  • неко­то­рую авто­ма­ти­за­цию при рабо­те с памя­тью.

Недостатки C++

Может пока­зать­ся, что по срав­не­нию с C у C++ боль­ше недо­стат­ков, но это не так — они про­сто дру­гие и воз­ник­ли по дру­гим при­чи­нам. Вот неко­то­рые из них:

  • Допу­стить ошиб­ку, кото­рая при­ве­дёт к непра­виль­ной рабо­те про­грам­мы или к её паде­нию, ста­ло ещё про­ще.
  • Непра­виль­ное исполь­зо­ва­ние меха­низ­мов ссы­лок, ука­за­те­лей и пере­гру­зок слож­но отло­вить на эта­пе поис­ка оши­бок.
  • Встро­ен­ные спо­со­бы обхо­да огра­ни­че­ний ком­пи­ля­то­ра дают непред­ска­зу­е­мые резуль­та­ты (хотя, опять же, ино­гда это быва­ет полез­но).
  • ООП-реализация может на несколь­ко про­цен­тов сни­зить быст­ро­дей­ствие кода. Ино­гда это кри­тич­но.
  • Слож­но писать крос­сплат­фор­мен­ный код, что­бы он лег­ко пор­ти­ро­вал­ся на дру­гие плат­фор­мы.
  • Для пол­но­го рас­кры­тия потен­ци­а­ла C++ нуж­но знать язык дей­стви­тель­но хоро­шо, ина­че не будет выиг­ры­ша в ско­ро­сти или эффек­тив­но­сти.

Что сейчас пишут на C++

На C++ пишут то же, что и на C — систем­ные при­ло­же­ния, драй­ве­ры, опе­ра­ци­он­ные систе­мы и софт для встра­и­ва­е­мых систем. Но бла­го­да­ря ООП область при­ме­не­ния C++ полу­чи­лась немно­го шире, чем у С. Вот что напи­са­но на C++ :

  • почти все про­дук­ты Adobe (Photoshop, Illustrator, inDesign, Acrobat и так далее);
  • почти все глав­ные про­дук­ты Microsoft (Windows, Office, IE, Visual Studio, SQL);
  • боль­шая часть MacOS (вклю­чая интер­фейс Finder);
  • интер­фейс iPod;
  • при­ло­же­ния Autodesk для про­ек­ти­ров­щи­ков;
  • высо­ко­на­гру­жен­ные ком­по­нен­ты плат­фор­мы Facebook;
  • поиск Google, дви­жок Chromium;
  • Havoc — реа­ли­стич­ный физи­че­ский дви­жок, кото­рый исполь­зу­ет­ся в играх;
  • софт для бор­то­вых ком­пью­те­ров само­лё­тов Lockheed (Стелс, напри­мер);
  • про­шив­ки для дви­га­те­лей MAN — тяга­чей;
  • боль­шая часть меди­цин­ско­го соф­та ком­па­нии Siemens.

А вот часть игр, кото­рая тоже напи­са­на на C++ (или на C++ напи­са­ны движ­ки для этих игр):

  • Doom III engine;
  • Football Pro;
  • Kings Quest;
  • Antara;
  • SWAT;
  • StarCraft;
  • Diablo II: Lord of Destruction;
  • Warcraft III;
  • World of Warcraft.

World of Warcraft напи­сан на C++

Дви­жок Doom3 — тоже на C++ …

…как и Finder — клю­че­вой эле­мент интер­фей­са MacOS

С чего начать

Если вы люби­те смот­реть видео, то мож­но начать с этих уро­ков:

А это люби­те­лям клас­си­че­ских книг и ста­тей: