Введение в C++. Философия C++

Содержание

Слайд 2

Введение в C++

С++ сочетает в себе три различных принципа программирования:
Процедурное

Введение в C++ С++ сочетает в себе три различных принципа программирования: Процедурное
программирование, представленное языком С и позволяющее создавать библиотеки функций;
Объектно-ориентированное программирование (ООП), представленное таким понятием как класс и позволяющее разрабатывать библиотеки классов;
Обобщенное программирование, представленное шаблонами языка С++ и его стандартными библиотеками.

Слайд 3

Язык С++ был создан в начале 80 годов в компании Bell Laboratories

Язык С++ был создан в начале 80 годов в компании Bell Laboratories
Бьерном Страуструпом с целью повышения эффективности языка программирования. Страуструп выбрал в качестве основы язык С, так как он был кратким, хорошо подходил для системного программирования и был широко доступен. Страуструп добавил в язык С элементы ООП и обобщенного программирования, не меняя при этом существенно сам язык С. Таким образом, язык С++ был разработан как расширение языка С.

Слайд 4

Философия C++

Получить универсальный язык со статическими типами данных, эффективностью и переносимостью языка

Философия C++ Получить универсальный язык со статическими типами данных, эффективностью и переносимостью
C.
Непосредственно и всесторонне поддерживать множество стилей программирования. Дать программисту свободу выбора, даже если это даст ему возможность выбирать неправильно.

Слайд 5

Избегать особенностей, которые зависят от платформы или не являются универсальными.
Избежать разночтений между

Избегать особенностей, которые зависят от платформы или не являются универсальными. Избежать разночтений
C и C++
Не требовать слишком усложнённой среды программирования.
Не платить за то, что не используется.

Слайд 6

Достоинства

Высокая совместимость с языком Си : код на Си может быть с минимальными

Достоинства Высокая совместимость с языком Си : код на Си может быть
переделками скомпилирован компилятором C++.
Как следствие предыдущего пункта — вычислительная производительность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы. Имеется возможность работы с памятью на низком уровне.
Поддержка различных стилей программирования: традиционное императивное программирование (структурное, объектно-ориентированное), обобщённое программирование, функциональное программирование.

Слайд 7

Автоматический вызов деструкторов объектов в адекватном порядке (обратном вызову конструкторов) упрощает и

Автоматический вызов деструкторов объектов в адекватном порядке (обратном вызову конструкторов) упрощает и
повышает надёжность управления памятью и другими ресурсами (открытыми файлами, сетевыми соединениями, соединениями с базами данных и т. п.).

Слайд 8

Шаблоны C++ дают возможность построения обобщённых контейнеров и алгоритмов для разных типов данных. Попутно шаблоны

Шаблоны C++ дают возможность построения обобщённых контейнеров и алгоритмов для разных типов
дают возможность производить вычисления на этапе компиляции.
Возможность встраивания предметно-ориентированных языков программирования в основной код.
Доступность. Язык имеет высокий порог вхождения, но среди всех языков такого рода обладает наиболее широкими возможностями.
Перегрузка операторов позволяет кратко и ёмко записывать выражения над пользовательскими типами в естественной алгебраической форме.

Слайд 9

Недостатки

Отсутствие системы модулей. C++ унаследовал от Си подключение заголовочных файлов с помощью

Недостатки Отсутствие системы модулей. C++ унаследовал от Си подключение заголовочных файлов с
препроцессора. Это вынуждает дублировать описания объектов, порождает неочевидные требования к коду и увеличивает объём компилируемого текста, а значит и время компиляции.
Наличие более чем одного механизма для выполнения одних и тех же задач, что усложняет язык и приводит к неоптимальному и небезопасному кодированию.
Шаблоны порождают объёмный и не всегда оптимальный код. Частичное определение шаблонов усложняет как сам язык, так и программы, где оно используется.

Слайд 10

Сложный синтаксис и объёмная спецификация языка затрудняют его изучение.
Язык не поощряет создание

Сложный синтаксис и объёмная спецификация языка затрудняют его изучение. Язык не поощряет
надёжного, легко читаемого и удобного в сопровождении кода, вместо этого зачастую предлагая выбор между короткими и простыми, но опасными средствами, унаследованными от Си, и новыми, объёмными и сложными, но более безопасными механизмами.
Сложная и постоянно разрастающаяся стандартная библиотека, затрудняющая изучение языка.