Слайд 2Введение в C++
С++ сочетает в себе три различных принципа программирования:
Процедурное
программирование, представленное языком С и позволяющее создавать библиотеки функций;
Объектно-ориентированное программирование (ООП), представленное таким понятием как класс и позволяющее разрабатывать библиотеки классов;
Обобщенное программирование, представленное шаблонами языка С++ и его стандартными библиотеками.
Слайд 3Язык С++ был создан в начале 80 годов в компании Bell Laboratories
Бьерном Страуструпом с целью повышения эффективности языка программирования. Страуструп выбрал в качестве основы язык С, так как он был кратким, хорошо подходил для системного программирования и был широко доступен. Страуструп добавил в язык С элементы ООП и обобщенного программирования, не меняя при этом существенно сам язык С. Таким образом, язык С++ был разработан как расширение языка С.
Слайд 4Философия C++
Получить универсальный язык со статическими типами данных, эффективностью и переносимостью языка
C.
Непосредственно и всесторонне поддерживать множество стилей программирования. Дать программисту свободу выбора, даже если это даст ему возможность выбирать неправильно.
Слайд 5Избегать особенностей, которые зависят от платформы или не являются универсальными.
Избежать разночтений между
C и C++
Не требовать слишком усложнённой среды программирования.
Не платить за то, что не используется.
Слайд 6Достоинства
Высокая совместимость с языком Си : код на Си может быть с минимальными
переделками скомпилирован компилятором C++.
Как следствие предыдущего пункта — вычислительная производительность. Язык спроектирован так, чтобы дать программисту максимальный контроль над всеми аспектами структуры и порядка исполнения программы. Имеется возможность работы с памятью на низком уровне.
Поддержка различных стилей программирования: традиционное императивное программирование (структурное, объектно-ориентированное), обобщённое программирование, функциональное программирование.
Слайд 7Автоматический вызов деструкторов объектов в адекватном порядке (обратном вызову конструкторов) упрощает и
повышает надёжность управления памятью и другими ресурсами (открытыми файлами, сетевыми соединениями, соединениями с базами данных и т. п.).
Слайд 8Шаблоны C++ дают возможность построения обобщённых контейнеров и алгоритмов для разных типов данных. Попутно шаблоны
дают возможность производить вычисления на этапе компиляции.
Возможность встраивания предметно-ориентированных языков программирования в основной код.
Доступность. Язык имеет высокий порог вхождения, но среди всех языков такого рода обладает наиболее широкими возможностями.
Перегрузка операторов позволяет кратко и ёмко записывать выражения над пользовательскими типами в естественной алгебраической форме.
Слайд 9Недостатки
Отсутствие системы модулей. C++ унаследовал от Си подключение заголовочных файлов с помощью
препроцессора. Это вынуждает дублировать описания объектов, порождает неочевидные требования к коду и увеличивает объём компилируемого текста, а значит и время компиляции.
Наличие более чем одного механизма для выполнения одних и тех же задач, что усложняет язык и приводит к неоптимальному и небезопасному кодированию.
Шаблоны порождают объёмный и не всегда оптимальный код. Частичное определение шаблонов усложняет как сам язык, так и программы, где оно используется.
Слайд 10Сложный синтаксис и объёмная спецификация языка затрудняют его изучение.
Язык не поощряет создание
надёжного, легко читаемого и удобного в сопровождении кода, вместо этого зачастую предлагая выбор между короткими и простыми, но опасными средствами, унаследованными от Си, и новыми, объёмными и сложными, но более безопасными механизмами.
Сложная и постоянно разрастающаяся стандартная библиотека, затрудняющая изучение языка.