Глава 11 Наука и математика
Глава 11
Наука и математика
11.0. Введение
Язык программирования C++ хорошо подходит для решения научных и математических задач из-за своей гибкости, выразительности и эффективности. Одно из самых больших преимуществ применения C++ для выполнения численных расчетов связано с тем, что он помогает избегать избыточности.
Исторически сложилось так, что написанные на многих языках программы, реализующие численные расчеты, обычно снова и снова повторяют алгоритмы для различных числовых типов (например, для коротких чисел, для длинных чисел, для чисел с одинарной точностью, для чисел с двойной точностью, для специальных числовых типов и т.д.). В C++ проблема такой избыточности решается с помощью шаблонов. Шаблоны позволяют писать алгоритмы, которые не зависят от представления данных, — этот подход широко известен под названием «обобщенное программирование».
Нельзя сказать, что C++ не имеет недостатков, которые проявляются при реализации численных расчетов. Самым большим недостатком С++, отличающим его от специализированных математических и научных языков программирования, являются ограниченные возможности стандартной библиотеки в отношении поддержки алгоритмов и типов данных, характерных для программирования численных расчетов. Возможно, самым большим упущением стандартной библиотеки является отсутствие матричных типов и целых типов произвольной точности.
В данной главе я приведу решения распространенных задач численного программирования и продемонстрирую методы обобщенного программирования при написании эффективного программного кода, реализующего численные расчеты. В подходящих случаях я буду рекомендовать широко используемые библиотеки с открытым исходным кодом, имеющие дружественные коммерческие лицензии и подтвержденный послужной список. В этой главе рассматриваются основные методы обобщенного программирования, причем это делается постепенно, переходя от одного рецепта к другому.
Многие программисты, использующие С++, все же с недоверием относятся к шаблонам и обобщенному программированию из-за очевидной их сложности. Когда шаблоны впервые были введены в язык, они не были хорошо реализованы, а программисты и разработчики компиляторов не очень хорошо их понимали. В результате многие программисты, включая автора, избегали пользоваться обобщенным программированием на C++ в течение нескольких лет, пока эта технология не достигла зрелости.
В настоящее время обобщенное программирование рассматривается как мощная и полезная парадигма программирования, которая поддерживается в большинстве популярных языков программирования. Более того, технология разработки компиляторов C++ очень сильно усовершенствовалась, и работа современных компиляторов с шаблонами стала гораздо более эффективной и стандартизованной. В результате современный C++ стал очень мощным языком программирования научных и численных приложении.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
SeoPult: математика под капотом
SeoPult: математика под капотом Значительную часть конкурентных преимуществ системы SeoPul обеспечивает направление -. «Конструкторская» ветвь укрыта внутри самого холдинга, а научноисследовательская частично представлена собственными специалистами, частично – лучшими
Математика
Математика gmp_factВычисляет факториал.Синтаксис:resource gmp_fact(resourse x)Возвращает факториал числа, заданного в параметре x.gmp_sqrtВычисляет квадратный корень.Синтаксис:resource gmp_sqrt(resourse x)Возвращает квадратный корень числа, заданного в параметре x.gmp_sqrtrmВычисляет квадратный корень с
Глава 1. Точная математика
Глава 1. Точная математика MySQL 5.1 обеспечивает поддержку для точной математики: числовая обработка значения, которая приводит к чрезвычайно точным результатам, и высокой степени контроль над недопустимыми значениями. Точность основана на этих двух свойствах:SQL-режимы,
ИДЕИ: Математика обмана: Можно ли победить мошенничество? и какой ценой?
ИДЕИ: Математика обмана: Можно ли победить мошенничество? и какой ценой? Автор: Константин БогдановЧеловек всесилен, и могущество его проистекает от общества, в котором он живет. На протяжении всей своей жизни мы используем и преумножаем достижения человеческого
13-я КОМНАТА: Математика этих сетей
13-я КОМНАТА: Математика этих сетей Сначала два слова о навигации по номеру. Активный отклик, как у читателей, так и у некоторых авторов, вызвали тема «Фантастика!» и колонка выпускающего редактора «Гагарин и пустота» в «КТ» #603. Поэтому материалы Михаила Ваннаха и Василия
Софтерра: Компьютеры, математика и свобода
Софтерра: Компьютеры, математика и свобода Автор: Вадим ЖитниковВ давние, давние времена компьютеры занимались только своими прямыми обязанностями: они считали. Складывали и вычитали, решали системы уравнений, интегрировали и дифференцировали. Рассчитывали траектории
Кафедра Ваннаха: Математика по Арнольду и Джефферсону Ваннах Михаил
Кафедра Ваннаха: Математика по Арнольду и Джефферсону Ваннах Михаил Опубликовано 18 ноября 2010 года То, как программное обеспечение, попав на приличное «железо» способно создавать весьма красочные, очень даже зримые, хотя и невесомые миры, знает
Математика как ресурс: На каком наследии работает отрасль информационных технологий Михаил Ваннах
Математика как ресурс: На каком наследии работает отрасль информационных технологий Михаил Ваннах Опубликовано 12 марта 2013Наша страна экспортирует практически только два вида высокотехнологической продукции, только два вида того, что делается руками и мозгами. Это
Пальчиковые игры и математика
Пальчиковые игры и математика Дети используют пальцы для счета еще до того, как начинают размышлять о цифрах. Счет на пальцах был обычным делом уже в Древнем Египте. Практически во всех культурах дети учатся считать при помощи пальцев: они всегда перед глазами и доступны,
Василий Щепетнёв: Тайная математика
Василий Щепетнёв: Тайная математика Автор: Василий ЩепетневОпубликовано 04 июня 2012 годаЯ так и не обзавёлся домашней цифровой метеостанцией. На стене висит барометр времён пятилетки качества, за окном китайский термометр, главное же – компьютер практически не