Начала программирования
Авторы - Александр Степанов, Пол Мак-Джоунс
В книге Александра Степанова и Пола Мак-Джоунса "Начала программирования" применяется дедуктивный подход к программированию, основанный на объединении программ с абстрактными математическими теориями, которые обеспечивают их работу. Представлены вместе описания этих теорий, алгоритмы, записанные в терминах этих теорий, а также теоремы и леммы, описывающие их свойства. Реализация алгоритмов на реальном языке программирования является центральной темой книги. Теоретические описания адресованы людям, поэтому в них научная строгость должна сочетаться с некоторой неформальностью; код предназначен для компьютера, поэтому должен быть абсолютно точным, даже если он имеет общее назначение.
Как и в других областях науки, в программировании наиболее подходящей основой является дедуктивный метод. Он обеспечивает декомпозицию сложных систем на компоненты с математически обоснованным поведением. Создание таких компонентов, в свою очередь, служит необходимой предпосылкой разработки эффективного, надежного, безопасного и экономически эффективного программного обеспечения. Эта книга предназначена для тех, кто стремится глубже понять суть программирования, будь то профессиональные программисты или ученые и инженеры, для которых программирование составляет важную часть их профессиональной деятельности. Книга предназначена для чтения от начала и до конца. Читатели смогут достичь понимания материала, только изучая код, доказывая леммы и выполняя упражнения. Кроме того, предлагаются несколько проектов, причем решения не известны.
Изложение в книге является кратким, но внимательный читатель в конечном итоге сумеет обнаружить связь между ее частями и понять, чем мы руководствовались при выборе материала. Читатель должен поставить перед собой цель — раскрыть принципы построения книги. Предлагается наличие способности выполнять элементарные алгебраические манипуляции. Предполагается, что читатель знаком с основной терминологией логики и теории множеств на уровне базовых университетских курсов по дискретной математике; в приложении А приведены сводные данные об используемой системе обозначений. Приводятся определения некоторых понятий абстрактной алгебры, необходимых для формулировки алгоритмов. Предполагается также наличие развитых навыков программирования и понимания архитектуры ЭВМ и знакомство с элементарными алгоритмами и структурами данных. В качестве примеров авторы выбрали язык С++, поскольку в нем механизмы абстракции сочетаются с точным представлением существующей машины. В книге используется небольшое подмножество языка и записываются требования как структурированные комментарии. Авторы очень надеются, что следовать за изложением в книге смогут и читатели, не знакомые с языком С++. Подмножество языка, используемое в книге, определено в приложении В. Везде, где имеется различие между математической системой обозначений и языком С++, типографский шрифт и контекст определяют, приведено ли описание математического обоснования или кода С++. У многих концепций и программ из этой книги есть параллели в STL (Standard Template Library — стандартная библиотека шаблонов С++), но некоторые решения, принятые в книге, отличаются от таковых в STL. В книге также игнорируются проблемы, которые должны быть решены в реальной библиотеке, такой как STL: пространства имен, видимость, встроенные директивы и т. д.
В главе 1 приведено описание значений, объектов, типов, процедур и концепций. Главы 2-5 посвящены алгоритмам на алгебраических структурах, таких как полугруппы и полностью упорядоченные множества. В главах 6-11 описываются алгоритмы на абстрактных представлениях памяти. В главе 12 рассматриваются объекты, содержащие другие объекты. В послесловии представлены размышления о подходе, изложенном в книге.
Издательство – Вильямс
Год издания – 2011
Формат книги - PDF
Размер - 17,7 Мб
СКАЧАТЬ с gigapeta.com
|