Характеристики языка C++
1.Сложность
∙ Описание стандарта занимает более 1300 страниц текста.
∙ Нет никакой возможности рассказать “весь C++” в рамках одного, пусть даже очень большого курса.
∙ В C++ программисту позволено очень многое, и это влечёт за собой большую ответственность.
∙ На плечи программиста ложится много дополнительной работы:
- ∙ проверка корректности данных,
- ∙ управление памятью,
- ∙ обработка низкоуровневых ошибок.
2.Мультипарадигмальный
На C++ можно писать программы в рамках нескольких парадигм программирования:
- ∙ процедурное программирование (код “в стиле C”),
- ∙ объектно-ориентированное программирование (классы, наследование, виртуальные функции, . . . ).
- ∙ обобщённое программирование (шаблоны функций и классов),
- ∙ функциональное программирование (функторы, безымянные функции, замыкания),
- ∙ генеративное программирование (метапрограммирование на шаблонах).
3.Эффективный
Одна из фундаментальных идей языков C и C++ — отсутствие неявных накладных расходов, которые присутствуют в других более высокоуровневых языках программирования.
∙ Программист сам выбирает уровень абстракции, на котором писать каждую отдельную часть программы. Можно реализовывать критические по производительности участки программы максимально эффективно. Эффективность делает C++ основным языком дляразработки приложений с компьютерной графикой (к примеру, игры).
4.Низкоуровневый
Язык C++, как и C, позволяет работать напрямую с ресурсами компьютера. Позволяет писать низкоуровневые системные приложения (например, драйверы операционной системы).
∙ Неаккуратное обращение с системными ресурсами может привести к падению программы. В C++ отсутствует автоматическое управление памятью, что позволяет программисту получить полный контроль над программой. Но, вместе с этим, необходимо заботиться об освобождении памяти.
5.Компилируемый
C++ является компилируемым языком программирования. Для того, чтобы запустить программу на C++, её нужно сначала скомпилировать.
Компиляция — преобразование текста программы на языке программирования в машинный код. При этом, нет накладных расходов при исполнении программы.
6.Статическая типизация
C++ является статически типизированным языком. Каждая сущность в программе (переменная, функция и пр.) имеет свой тип, и этот тип определяется на момент компиляции. Это нужно для того, чтобы:
1. вычислить размер памяти, который будет занимать каждая переменная в программе,
2. определить, какая функция будет вызываться в каждом конкретном месте.
Всё это определяется на момент компиляции и “зашивается” в скомпилированную программу. В машинном коде никаких типов уже нет — там идёт работа с последовательностями байт.
|