C++

Материал из Циклопедии
Перейти к навигации Перейти к поиску
C++
Файл:ISO C++ Logo.svg
Семантика:мультипарадигмальный: объектно-ориентированное, обобщённое, процедурное, метапрограммирование
Тип исполнения:компилируемый
Типизация данных:статическая
Основные реализации:GNU C++, Microsoft Visual C++, Intel C++ compiler, Open64 C++ Compiler, Clang, Comeau C/C++[en], Embarcadero C++ Builder, Watcom C++ compiler, Digital Mars C++, Oracle Solaris Studio C++ compiler, Turbo C++
Диалекты:ISO/IEC 14882 C++
Добро пожаловать в C++ // Winderton (19 дек. 2022 г.) [16:07]

C++ (читается как си плюс плюс) — компилируемый, статически типизированный язык программирования общего назначения. Язык программирования С++ это улучшенная версия языка программирования С (Си)[1].

История[править]

Язык программирования С++ возник в начале 1980-х годов. Бьёрн Страуструп, сотрудник компании Bell Labs, предложил некоторые улучшения языка программирования С для своих собственных нужд. Бьёрн Страуструп работал над теорией очередей при телефонных звонках в компании Bell Labs. Разрабатывая приложения, имитирующие входящие телефонные звонки, он обнаружил, что попытка использовать существовавший в то время языки моделирования оказалась не эффективной. Например язык программирования Simula обладает хорошим функционалом, но скорость его работы слишком низкая, а язык BCPL достаточно быстр, но он слишком близок к языку программирования низкого уровня и не подходит для разработки крупномасштабного программного обеспечения[2].

Проанализировав возможности существующих языков программирования, Бьёрн Страуструп решил дополнить язык программирования C (преемник языка программирования BCPL) функциями, доступными в языке Simula. В то время, язык программирования С являлся базовым языком операционной системы UNIX, на которой работали компьютеры Bell. Язык программирования С быстр, многофункционален и портативен. Бьёрн Страуструп добавил к языку программирования С возможность обрабатывать классы и объекты. В результате задачи моделирования были решены за счет использования классов, подобных языку программирования Simula и времени вычислений, за счет скорости языка программирования C[3].

В язык программирования C были добавлены классы с инкапсуляцией, наследование классов, строгая проверка типов, встроенные функции и аргументы по умолчанию. В 1980 году появилась первая версия языка программирования С, которая первоначально называлась «С with classes» («си с классами»).

Разрабатывая язык программирования С++, Бьёрн Страуструп для работы с классами написал компьютерную программу cfront, которая представляла собой транслятор, преобразующий исходный код и классы языка программирования «С with classes» в исходный код простого языка программирования С. Разработанный Бьёрном Страуструпом язык программирования неожиданно приобрел большую популярность среди программистов, за счет того, что[4]:

Выбор языка программирования C в качестве основы для создания нового языка программирования С++ Бьёрн Страуструп объяснял следующими фактами:

В 1983 году в язык программирования «С with classes» были добавлены новые возможности, такие как виртуальные функции, перегрузка функций и операторов, ссылки, константы, пользовательский контроль над управлением доступной памятью, улучшенная проверка типов и новые стили аннотаций. Полученный в результате язык программирования больше не являлся просто улучшенной версией классического языка программирования C и был переименован из «С with classes» в «C++».

В 1985 году состоялся первый коммерческий релиз языка программирования С++. Сгенерированное название языка программирования С++ происходит от оператора приращения унарного суффикса «++», который увеличивает значение переменной на единицу[5].

Использование языка C++[править]

В отличие от других языков программирования, на C++ можно запрограммировать все, что угодно. Этот язык программирования может выполнять действия, требующие определенных инструкций, таких как векторные инструкции, которые позволяют выполнять несколько операций на одном процессорном ядре одновременно. C++ разработан таким образом, что его код может быть скомпилирован для разных платформ (операционных систем). Например, браузер Chrome, который в основном написан на языке программирования C++, работает в операционных системах Windows, Linux и macOS. Ни один другой язык не обладает такой функциональностью[6].

Существует множество примеров использования языка программирования C++, поскольку его кодовая база огромна. На нем написано все, от микрокода дефибриллятора до операционных систем и компиляторов других языков программирования.

Например, при записи голосового сообщения для кодирования звука используется кодек, написанный на языке программирования C++. Кодированный звук передается по сети с помощью сетевой карты через маршрутизатор и декодируется на сервере. Все программное обеспечение в этой цепочке передачи голосового сообщения написано на языке программирования C++.

Языке программирования C++ подходит для создания проектов 3D-визуализации, требующих эффективного управления большими объемами данных. Благодаря своей производительности C++ используется для разработки компьютерных игр, операционных систем и браузеров. На С++ разрабатывают приложения и программы, которые используют ежедневно миллионы пользователей по всему миру. Например, серверный код Spotify написан на языке программирования C++, и он также используется при обработке и воспроизведении видео на YouTube[7].

Язык программирования C++ был отмечен на церемонии вручения премии «Оскар»: Марк Элендт, победитель в номинации «Лучшие спецэффекты», поблагодарил комитет по стандартизации языка программирования С++ за создание и разработку систем визуальных эффектов и анимации, которые написаны на C++[8].

Преимущества и недостатки C++[править]

Преимущества[править]

Преимущества языка программирования C++[9]:

Недостатки[править]

Недостатки языка программирования C++[10]:

  • C++ трудный для изучения язык программирования;
  • Чтобы начать правильно программировать, придется долго изучить язык программирования, дольше чем другие языки;
  • Существует миф о том, что программист, работающий на C++, «стреляет себе в ногу»: легко написать неправильно работающую программу, не заметить этого, но ситуация меняется, основные обновления C++ выпускаются каждые три года, и на этапе компиляции выполняется множество проверок, чтобы исключить неправильное написание программного кода;
  • Трудно использовать зависимости в C++. Если что-то не работает или нет правильного пакета, то получение правильных зависимостей обычно становится проблемой для программиста. Необходимо вручную загрузить исходные тексты необходимых библиотек со всеми зависимостями;
  • Необходимо следить за параметрами компиляции. Если есть ошибка в параметрах компилятора или версии компилятора, программа не будет собрана или не будет работать должным образом, могут возникать конфликты версий.


Примеры[править]

  • Hello World:
 #include <iostream>
using namespace std;
int main() {
  std::cout << "Hello World!" << std::endl;
}
  • Полиморфизм:
#include <iostream>
using namespace std;
class Animal {
 public:
    virtual void voice() {
       cout << "The animal says" << endl;
    }
};
class Dog : public Animal {
    void voice() override {
       cout << "The dog says" << endl;
    }
};

int main() {
Animal* class_object = new Dog();
class_object->voice(); // Вывод будет "The dog says"
return 0;
} 

Здесь мы объявляем класс Animal, а в нем функцию voice. Затем мы объявляем класс Dog, наследуем от Animal и определяем там функцию voice. Обратите внимание, что слово override после названия функции и ее параметров необязательно, но желательно. Оно явно указывает, что метод должен переопределять метод из родительского класса. После этого в main мы создаем объект класса и вызываем через него переопределенную функцию voice.

Источники[править]

  1. Справочник по языку C++ (рус.). Проверено 18 сентября 2023.
  2. История возникновения языка программирования С++ (рус.). Проверено 18 сентября 2023.
  3. Язык C++ (кг). Проверено 18 сентября 2023.
  4. C++ (рус.). Проверено 18 сентября 2023.
  5. Введение в C++ (рус.). Проверено 18 сентября 2023.
  6. Языки C и C++. Где их используют и зачем? (рус.). Проверено 18 сентября 2023.
  7. Зачем писать на C++ в 2022 году? (рус.). Проверено 18 сентября 2023.
  8. Основы С++ (рус.). Проверено 18 сентября 2023.
  9. Обзор языка программирования С++ (рус.). Проверено 18 сентября 2023.
  10. Выбираем язык программирования: что нужно знать о С++ (рус.). Проверено 18 сентября 2023.

Литература[править]

  • Microsoft Corporation. Разработка приложений на Microsoft Visual C++ 6.0. — Москва: Издательско-торговый дом «Русская Редакция», 2000. — 576 стр.
  • Мейерс С. Эффективное использование С++. 35 новых рекомендаций по улучшению ваших программ и проектов. — Москва: ДМК Пресс, 2014. — 294 с.
  • Прата С. Язык программирования C++ (C++11). Лекции и упражнения, 6-е издание — Москва: Вильямс, 2012. — 1248 с.
  • Страуструп Б. Язык программирования С++. Специальное издание. — Москва: Издательство Бином, 2011. — 1136 с.
  • Элджер Дж. C++. Библиотека программиста. — Санкт-Петербург: Питер, 2000. — 320 с.

Ссылки[править]

 
Используемые
в разработке

Ада A+ APL Atlast Forth AWL Язык ассемблера ActionScript ABAP/4 AutoIt AWK BeanShell Бейсик Си Кобол C++ C# Clarion Clojure ColdFusion Common Lisp D dBase Delphi DuAL Eiffel Erlang Euphoria F# Форт Фортран Gambas Go Groovy HAL/S Haskell IBM PL/S Icon IridiumJava JavaScript Limbo Lua Модула-3 Object Pascal Objective-C OCaml Oz Parser Паскаль Компонентный Паскаль Perl Pixilang PHP PowerBASIC Python ПЛ/1 Пролог Qi Ruby Scala Scheme Seed7 Smalltalk SQL PL/SQL Tcl TouchDesigner Vala Visual Basic (.NET) • X-Robot

Академические

Agda Clean Curry Idris Лого ML Оберон Planning C РЕФАЛ Симула

IEC 61131-3

Instruction List ST FBD Ladder Diagram (LD) • SFC

Прочие

Алгол Алгол 68 Модула-2 Миранда Hope НОРМИН Санда

Эзотерические

HQ9+/HQ9++ • INTERCAL Brainfuck Befunge Malbolge Piet Spoon Unlambda Whitespace FALSE LOLCODE Глагол

Визуальные

G (LabVIEW) • Microsoft VPL Sikuli VisSim Алиса ДРАКОН Скретч

Прочее

ДинамическиеКомпилируемыеС ключевыми словами не на английском языке С C-style синтаксисом СинтаксисYoptaScript

Категория Языки программирования

 
1
по
9999
10000
по
19999
20000+

См. также: Список статей, начинающихся с «ISO»

Znanie.png Одним из источников этой статьи является статья в википроекте «Знание.Вики» («znanierussia.ru») под названием «C++», находящаяся по адресам:

«https://baza.znanierussia.ru/mediawiki/index.php/C++»

«https://znanierussia.ru/articles/C++».

Материал указанной статьи полностью или частично использован в Циклопедии по лицензии CC-BY-SA 4.0 и более поздних версий.
Всем участникам Знание.Вики предлагается прочитать материал «Почему Циклопедия?»