C++
C++ — компилируемый, статически типизированный язык программирования общего назначения. Поддерживает такие парадигмы программирования, как процедурное программирование, объектно-ориентированное программирование, обобщённое программирование. Язык имеет богатую стандартную библиотеку, которая включает в себя распространённые контейнеры и алгоритмы, ввод-вывод, регулярные выражения, поддержку многопоточности и другие возможности.
История создания:
Язык С++ был создан Бьерном Страуструпом в 1979 году в компании Bell Laboratories и сначала имел название "С с классами". Страуструп утверждает, что некоторые объектно-ориентированные средства были инспирированы другим объектно-ориентированным языком - Simula67.
Из всех объектно-ориентированных языков С++ является наиболее употребительным.
Из всех объектно-ориентированных языков С++ является наиболее употребительным.
В 1984 он написал первую версию программы cfont, которая транслировала код его языка в код простого Си. После этого популярность языка среди других коллег из Bell Labs резко выросла и Страуструп уже не смог поддерживать развитие языка в одиночку, отвечая на просьбы программистов добавить ту или иную функцию. В 1985 вышла первая полноценная версия, которая перестала быть просто дополнением Си. Она была названа С++ (в честь оператора инкремента, а ещё потому, что названия С+ и D нельзя было использовать ).
Особенности:
Несмотря на ряд известных недостатков языка C, Страуструп пошёл на его использование в качестве основы, так как «в C есть свои проблемы, но их имел бы и разработанный с нуля язык, а проблемы C нам известны». Кроме того, это позволило быстро получить прототип компилятора, который лишь выполнял трансляцию добавленных синтаксических элементов в оригинальный язык C.
По мере разработки C++ в него были включены другие средства, которые перекрывали возможности конструкций C, в связи с чем неоднократно поднимался вопрос об отказе от совместимости языков путём удаления устаревших конструкций. Тем не менее, совместимость была сохранена из следующих соображений:
- сохранение действующего кода, написанного изначально на C и прямо перенесённого в C++;
- исключение необходимости переучивания программистов, ранее изучавших C (им требуется только изучить новые средства C++);
- исключение путаницы между языками при их совместном использовании («если два языка используются совместно, их различия должны быть или минимальными, или настолько большими, чтобы языки было невозможно перепутать»).
Новые возможности C++ включают объявления в виде выражений, преобразования типов в виде функций, операторы new и delete, тип bool, ссылки, расширенное понятие константности, подставляемые функции, аргументы по умолчанию, переопределения, пространства имён, классы (включая и все связанные с классами возможности, такие как наследование, функции-члены, виртуальные функции, абстрактные классы и конструкторы), переопределения операторов, шаблоны, обработку исключений, динамическую идентификацию и многое другое. Язык C++ также во многих случаях строже относится к проверке типов, чем C.
Интересен и синтаксис языка: ниже представлен фрагмент кода на C++:
class Array {
public:
Array() = default; // компилятор создаст конструктор по умолчанию сам
Array(size_t _len) :
len(_len) {
val = new double[_len];
}
Array(const Array & a) = delete; // конструктор копирования явно удалён
Array(Array && a); // конструктор перемещения
~Array() {
delete[] val;
}
Array& operator=(const Array& rhs); // оператор присваивания копированием
Array& operator=(Array&& rhs); // оператор присваивания перемещением
double& operator[](size_t i) {
return val[i];
}
const double& operator[](size_t i) const {
return val[i];
}
protected:
std::size_t len {0}; // инициализация поля
double* val {nullptr};
};
Плюсы:
- Масштабируемость. На языке C++ разрабатывают программы для самых различных платформ и систем.
- Возможность работы на низком уровне с памятью, адресами, портами. Что, при неосторожном использовании, может легко превратиться в недостаток.
- Возможность создания обобщенных алгоритмов для разных типов данных, их специализация, и вычисления на этапе компиляции, используя шаблоны.
Минусы:
- Язык программирования C++ является довольно сложным для понимания
- C++ довольно объёмный и эклектичный
- У этого языка не имеется конкретной целевой ниши применения
Вывод:
C++ - довольно противоречивый язык программирования, но это не мешает ему быть одним из самых востребованных на данный момент. Возможности этого языка программирования огромны, но нужно иметь достаточно знаний и умений программирования, чтобы уметь пользоваться этими возможностями.
Комментарии
Отправить комментарий