Сложность
Есть интересная фраза Бьёрна Страуструпа о языках C и C++:
C makes it easy to shoot yourself in the foot. C++ makes it harder, but when you do, it blows away your whole leg.
(В языке С легко прострелить себе ногу. В С++ это сложнее, но если вы сделаете это, то отстрелите всю ногу целиком.)
Такова цена мощности языка — программист получает больше возможностей, но вместе с тем и ответственность становится больше. На плечи программиста ложится много дополнительной
работы:
- проверка корректности данных;
- управление памятью;
- обработка низкоуровневых ошибок.
Другая интересная цитата пришла из времен первой стандартизации языка и принадлежит Джиму Вальдо:
Every extension proposal should be required to be accompanied by a kidney. People would submit only serious proposals, and nobody would submit more than two.
(Нужно, чтобы к каждому предложению о расширении языка обязательно прилагалась почка. Тогда люди присылали бы только очень важные предложения, и никто не прислал бы более двух.)
C++ оснащен огромным количеством самых разнообразных средств. Описание стандарта занимает более 1300 страниц текста.
Мультипарадигмальный
На C++ можно писать программы в рамках нескольких парадигм программирования:- процедурное программирование:
- код “в стиле C”;
- объектно-ориентированное программирование:
- классы;
- наследование;
- виртуальные функции;
- обобщённое программирование:
- шаблоны функций и классов;
- функциональное программирование:
- функторы;
- безымянные функции;
- замыкания;
- генеративное программирование:
- метапрограммирование на шаблонах.
Эффективный
Одна из фундаментальных идей языков C и C++ — отсутствие неявных накладных расходов, которые присутствуют в других более высокоуровневых языках программирования.- Программист сам выбирает уровень абстракции, на котором писать каждую отдельную часть программы.
- Можно реализовывать критические по производительности участки программы максимально эффективно.
- Эффективность делает C++ основным языком для разработки приложений с компьютерной графикой (к примеру, игры).
Низкоуровневый
Язык C++, как и C, позволяет работать напрямую с ресурсами компьютера.- Позволяет писать низкоуровневые системные приложения (например, драйверы операционной системы).
- Неаккуратное обращение с системными ресурсами может привести к падению программы.
- Позволяет программисту получить полный контроль над программой.
- Необходимость заботиться об освобождении памяти.
Компилируемый
C++ является компилируемым языком программирования. Для того, чтобы запустить программу на C++, её нужно сначала скомпилировать. Компиляция — преобразование текста программы на языке программирования в машинный код.- Нет накладных расходов при исполнении программы.
- При компиляции можно отловить некоторые ошибки.
- Требуется компилировать для каждой платформы отдельно.
Статическая типизация
C++ является статически типизированным языком.- Каждая сущность в программе (переменная, функция и пр.) имеет свой тип,
- и этот тип определяется на момент компиляции.
- вычислить размер памяти, который будет занимать каждая переменная в программе,
- определить, какая функция будет вызываться в каждом конкретном месте.
Комментариев нет:
Отправить комментарий