От математики к обобщенному программированию, Степанов А.А., Роуз Д.Э., 2016.
В этой основательной и вместе с тем доступной книге авторы объясняют принципы обобщенного программирования и стоящее за ними понятие математической абстракции.
Любой достаточно квалифицированный программист, умеющий логически мыслить, уже обладает достаточными знаниями для прочтения этой книги. Авторы на удивление доходчиво сообщают необходимые сведения из общей алгебры и теории чисел. Они объясняют, какие проблемы должны были разрешить математики, и показывают, как найденные ими решения переводятся на язык обобщенного программирования и позволяют создать эффективный и элегантный код.
Читая эту книгу, вы освоите мыслительный процесс, необходимый для правильного программирования, и научитесь обобщать найденные для частного алгоритмы с целью расширить область их полезного применения без потери эффективности. Вы также постигнете, в чем состоит ценность математики для программирования, — и это понимание пригодится вне зависимости от того, на каком языке вы пишете и какую парадигму применяете.

Программирование и математика.
Так откуда же проистекает обобщенное отношение к программированию и как ему научиться? Проистекает оно из математики, а точнее, из ее раздела, называемого общей алгеброй. Чтобы помочь вам разобраться в этом подходе, мы дадим краткое введение в общую алгебру, сосредоточившись на том, как рассуждать об объектах в терминах абстрактных свойств операции над ними. Обычно этот предмет изучается на математических факультетах университетов, но мы полагаем, что он исключительно важен для понимания обобщенного программирования.
Вообще, многие фундаментальные идеи программирования берут начало в математике. Знания о том, как эти идеи возникли и развивались, поможет при обдумывании проекта программы. Например, «Начала» Евклида, написанные больше 2000 лет назад, и по сей день остаются одним из лучших примеров построения сложной системы из мелких, простых для понимания элементов.
ОГЛАВЛЕНИЕ.
Благодарности.
Об авторах.
От авторов.
Предисловие автора к русскому изданию.
Глава 1. О чем эта книга.
1.1. Программирование и математика.
1.2. Исторические справки.
1.3. Требования к читателю.
1.4. План книги.
Глава 2. Первый алгоритм.
2.1. Египетское умножение.
2.2. Улучшение алгоритма.
2.3. Заключительные мысли.
Глава 3. Теория чисел в Древней Греции.
3.1. Геометрические свойства целых чисел.
3.2. Просеивание простых чисел.
3.3. Реализация и оптимизация кода.
3.4. Совершенные числа.
3.5. Пифагорейская программа.
3.6. Фатальный изъян в программе.
3.7. Заключительные мысли.
Глава 4. Алгоритм Евклида.
4.1. Афины и Александрия.
4.2. Алгоритм Евклида нахождения наибольшей общей меры.
4.3. Тысяча лет без математики.
4.4. Странная история нуля.
4.5. Алгоритмы нахождения частного и остатка.
4.6. Повторное использование кода.
4.7. Доказательство правильности алгоритма.
4.8. Заключительные мысли.
Глава 5. Зарождение современной теории чисел.
5.1. Простые числа Мерсенна и Ферма.
5.2. Малая теорема Ферма.
5.3. Сокращение.
5.4. Доказательство малой теоремы Ферма.
5.5. Теорема Эйлера.
5.6. Применение арифметики по модулю.
5.7. Заключительные мысли.
Глава 6. Абстракция в математике.
6.1. Группы.
6.2. Моноиды и полугруппы.
6.3. Некоторые теоремы о группах.
6.4. Подгруппы и циклические группы.
6.5. Теорема Лагранжа.
6.6. Теории и модели.
6.7. Примеры категоричных и некатегоричных теорий.
6.8. Заключительные мысли.
Глава 7. Вывод обобщенного алгоритма.
7.1. Осмысление требований к алгоритму.
7.2. Требования к A.
7.3. Требования к N.
7.4. Новые требования.
7.5. От умножения к возведению в степень.
7.6. Обобщение операции.
7.7. Вычисление чисел Фибоначчи.
7.8. Заключительные мысли.
Глава 8. Еще об алгебраических структурах.
8.1. Стевин, полиномы и НОД.
8.2. Геттинген и немецкая математика.
8.3. Нётер и рождение общей алгебры.
8.4. Кольца.
8.5. Умножение матриц и полукольца.
8.6. Приложение: социальные сети и кратчайшие пути.
8.7. Евклидовы кольца.
8.8. Поля и другие алгебраические структуры.
8.9. Заключительные мысли.
Глава 9. Организация математических знаний.
9.1. Доказательства.
9.2. Первая теорема.
9.3. Евклид и аксиоматический метод.
9.4. Альтернативы евклидовой геометрии.
9.5. Формалистический подход Гильберта.
9.6. Пеано и его аксиомы.
9.7. Построение арифметики.
9.8. Заключительные мысли.
Глава 10. Основные понятия программирования.
10.1. Аристотель и абстракции.
10.2. Значения и типы.
10.3. Концепции.
10.4. Итераторы.
10.5. Категории, операции и характеристики итераторов.
10.6. Диапазоны.
10.7. Линейный поиск.
10.8. Двоичный поиск.
10.9. Заключительные мысли.
Глава 11. Алгоритмы перестановки.
11.1. Перестановки и транспозиции.
11.2. Обмен диапазонов.
11.3. Циклическая перестановка.
11.4. Использование циклов.
11.5. Обращение.
11.6. Пространственная сложность.
11.7. Алгоритмы, адаптирующиеся к объему памяти.
11.8. Заключительные мысли.
Глава 12. Обобщения НОД.
12.1. Аппаратные ограничения и более эффективный алгоритм.
12.2. Обобщение алгоритма Штайна.
12.3. Теорема Безу.
12.4. Расширенный алгоритм Евклида.
12.5. Применения НОД.
12.6. Заключительные мысли.
Глава 13. Реальное приложение.
13.1. Криптология.
13.2. Проверка простоты.
13.3. Тест Миллера–Рабина.
13.4. Алгоритм RSA: как и почему он работает.
13.5. Заключительные мысли.
Глава 14. Заключение.
Дополнительная литература.
Приложение А. Обозначения.
Приложение В. Стандартные приемы доказательства.
B.1. Доказательство от противного.
B.2. Доказательство по индукции.
B.3. Принцип Дирихле.
Приложение С. Язык С++ для программистов на других языках.
C.1. Шаблонные функции.
C.2. Концепции.
C.3. Синтаксис объявлений и типизированные константы.
C.4. Объекты-функции.
C.5. Предусловия, постусловия и утверждения.
C.6. Алгоритмы и структуры данных STL.
C.7. Итераторы и диапазоны.
C.8. Использование using для псевдонимов типов и функций типов в C++11.
C.9. Списки инициализаторов в C++11.
C.10. Лямбда-функции в C++11.
C.11. Замечание о ключевом слове inline.
Библиография.
Предметный указатель.
Купить .
По кнопкам выше и ниже «Купить бумажную книгу» и по ссылке «Купить» можно купить эту книгу с доставкой по всей России и похожие книги по самой лучшей цене в бумажном виде на сайтах официальных интернет магазинов Лабиринт, Озон, Буквоед, Читай-город, Литрес, My-shop, Book24, Books.ru.
По кнопке «Купить и скачать электронную книгу» можно купить эту книгу в электронном виде в официальном интернет магазине «Литрес», если она у них есть в наличии, и потом ее скачать на их сайте.
По кнопке «Найти похожие материалы на других сайтах» можно найти похожие материалы на других сайтах.
On the buttons above and below you can buy the book in official online stores Labirint, Ozon and others. Also you can search related and similar materials on other sites.
Теги: учебник по программированию :: программирование :: Степанов :: Роуз :: алгоритм :: теорема Ферма











