Закоулки мозга

Книга посвящена описанию различных систем программного синтаксиса, анализу перехода от набора алгоритмов к программному коду. Значительное место уделяется обсуждению набора "элементарных программ", использующихся в качестве элементов конструкции программ более высоких уровней сложности, оптимизации соотношения их "веса" и эффективности. Особое внимание авторы уделяют анализу проблемы взаимодействия компьютера как физического объекта и программного кода, обеспечивающего информационную составляющую вычисления. Книга будет полезна всем, кому приходится иметь дело с программированием, в том числе и в гуманитарных областях знания.

Абельсон Х., Сассман Д. Д. Структура и интерпретация компьютерных программ / Х. Абельсон, Д. Д. Сассман, 2-е изд., Москва: Добросвет КДУ, 2006. 608 c.

Глава 1. Построение абстракций с помощью процедур

Действия, в которых ум проявляет свои способности в отношении своих простых идей, суть главным образом следующие три: 1) Соединение нескольких простых идей в одну сложную; так образовались все сложные идеи, 2) Сведение вместе двух идей, все равно, простых или сложных, и сопоставление их друг с другом так, чтобы обозревать их сразу, но не соединять в одну; так ум приобретает все свои идеи отношений, 3) Обособление идей от всех других идей, сопутствующих им в реальной действительности; это действие называется “абстрагированием”, и при его помощи образованы все общие идеи в уме.

Джон Локк. “Опыт о человеческом разуме” (1690)

В соответствии с этой цитатой из #ЛоккДжон авторы выделили три специальных механизма, которые должны присутствовать в каждом языке программирования:

  • элементарные выражения, представляющие минимальные сущности, с которыми язык имеет дело;
  • средства комбинирования, с помощью которых из простых объектов можно составить сложные;
  • средства абстракции, с помощью которых сложные объекты можно называть и обращаться с ними, как с единым целым.

Сложные программы конструируются методом построения шаг за шагом вычислительных объектов возрастающей сложности

Если развернуть это выражение “в обратную сторону”, то получится то, к чему пришел #Дийкстра, когда определил, что можно декомпозировать алгоритмы до простых (и главное, доказуемых) функций.