С++ — это Си с классами
Когда в 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.
С чего начать
Если вы любите смотреть видео, то можно начать с этих уроков:
А это любителям классических книг и статей:
- Основы программирования на C++ — пошагово и для новичков.
- С++ с нуля — немного сложнее, но тоже можно разобраться.
- Язык программирования C++ — классическая книга Бьёрна Страуструпа, автора языка. Сложно, но зато всё и сразу.
- С++, лекции и упражнения — Стивен Прата плохого не напишет.