РуЛиб - онлайн библиотека > Фелляйзен Маттиас > Околокомпьютерная литература > Как проектировать программы

Читаем онлайн «Как проектировать программы»

RESCUER
Маттиас Фелляйзен
Роберт Брюс Финдлер
Мэтью Флэтт
Шрирам Кришнамурти
Как проектировать
программы
How to Design Programs
An Introduction to Programming and
Computing
Second Edition
Matthias Felleisen
Robert Bruce Findler
Matthew Flatt
Shriram Krishnamurthi
The MIT Press
Cambridge, Massachusetts
London, England
Как проектировать программы
Введение в программирование
и компьютерные вычисления
Маттиас Фелляйзен
Роберт Брюс Финдлер
Мэтью Флэтт
Шрирам Кришнамурти
Москва, 2022
УДК 004.2
ББК 32.97
Ф37
Фелляйзен М., Финдлер Р. Б., Флэтт М., Кришнамурти Ш.
Ф37 Как проектировать программы / пер. с англ. А. Н. Киселева; под ред.
П. Б. Иванова, А. Д. Чичигина, Ю. А. Сыровецкого, С. В. Бронникова. – М.:
ДМК Пресс, 2022. – 724 с.: ил.
ISBN 978-5-97060-926-2
Эта книга повествует о методах «хорошего программирования» – то есть о таком
подходе к созданию программного обеспечения, который опирается на системное
мышление, планирование и понимание задач разработчика на каждом этапе.
В числе рассматриваемых тем – фундаментальные понятия систематического
проектирования, типы данных, способы записи объемных данных, создание
и использование абстракций, тестирование программ и функций и др.
Издание адресовано профессионалам и энтузиастам программирования, не
имеющим прежнего опыта систематического проектирования программ, а также
преподавателям технических вузов, которые могут использовать представленный
материал в рамках учебного курса.
УДК 004.2
ББК 32.97
The rights to the russian launguage edition obtained thougth Alxander Korgzhenevski Agency
(Moscow). All rights reserved.
Все права защищены. Любая часть этой книги не может быть воспроизведена в какой бы то ни было форме и какими бы то ни было средствами без письменного разрешения
владельцев авторских прав.
ISBN 978-0-26253-480-2 (англ.)
ISBN 978-5-97060-926-2 (рус.)
© Massachusetts Institute of Technology, 2018
Illustrations © Torrey Butzer, 2000
© Перевод, оформление, издание, ДМК Пресс, 2022
Содержание
От редакторов..................................................................................................................... 10
От издательства.................................................................................................................. 11
Вступление.......................................................................................................................... 12
Пролог: как писать программы........................................................................................ 29
I
Д АННЫЕ ФИКСИРОВАННОГО РА ЗМЕРА .........................................55
1
Арифметика. ............................................................................................................... 56
1.1. Арифметика чисел................................................................................................ 57
1.2. Арифметика строк................................................................................................ 59
1.3. А теперь все смешаем........................................................................................... 61
1.4. Арифметика изображений................................................................................... 63
1.5. Арифметика логических значений...................................................................... 66
1.6. Смешанные операции с логическими значениями........................................... 67
1.7. Предикаты: знай свои данные.............................................................................. 69
2
Функции и программы. ............................................................................................. 72
2.1. Функции................................................................................................................. 72
2.2. Вычисления........................................................................................................... 76
2.3. Композиция функций........................................................................................... 80
2.4. Глобальные константы.......................................................................................... 83
2.5. Программы............................................................................................................ 85
3
Как проектировать программы................................................................................ 98
3.1. Проектирование функций.................................................................................... 99
3.2. Практические упражнения: функции.................................................................106
3.3. Знание предметной области...............................................................................106
3.4. От функций к программам..................................................................................107
3.5. О тестировании....................................................................................................108
3.6. Проектирование интерактивных программ......................................................110
3.7. Миры виртуальных питомцев.............................................................................120
4
Интервалы, перечисления и детализация.............................................................122
4.1. Программирование с условиями........................................................................122
4.2. Условные вычисления..........................................................................................124
4.3. Перечисления.......................................................................................................127
4.4. Интервалы............................................................................................................131
4.5. Детализация.........................................................................................................135
4.6. Проектирование с использованием детализации.............................................143
4.7. Миры с конечными состояниями........................................................................146
5
Добавляем структуру................................................................................................154
5.1. От позиций к структурам posn............................................................................154
5.2. Вычисления со структурами posn.......................................................................155
5.3. Программирование с