
УМП Технологические подходы к разработке ПО 90
выполнения, и прямое соответствие между этими сущностями установить трудно или не-
возможно.
32
Это противоречие между статикой и динамикой.
С одной стороны, в распоряжении программиста находится неограниченное количество
экземпляров атомарных и композитных объектов, которые он может комбинировать про-
извольным образом, конструируя программу. Таким образом, качественных ограничений
на возможные комбинации, характерных для реального мира, в идеальном мире про-
граммных объектов не существует. Это порождает эффект "комбинаторного взрыва", с
которым программисту справиться не просто, поскольку количественные возможности
комбинаторного мышления человека чрезвычайно ограничены.
33
С другой стороны, ком-
пьютер способен выполнить программу неограниченного объема и сложности — количе-
ственных ограничений практически не существует. Более того, интерес представляют
именно большие программы, которые программист не может в полном объеме единовре-
менно обозреть и не может выполнить вручную. В то же время компьютер качественно
ограничен в своих возможностях выполнения программы — выполнение носит строго де-
терминированный характер.
34
Коротко говоря, цель программирования (выполнение про-
граммы) превосходит по объему непосредственные количественные возможности про-
граммиста. Это противоречие между количеством и качеством.
Фактически известен только один метод разрешения этих противоречий — принцип "раз-
деляй и властвуй". Суть этого метода применительно к программированию состоит в на-
ложении на программу внешней структуры, которая бы обеспечивала отслеживание соот-
ветствия между статикой и динамикой и позволяла бы справиться с количеством рассмат-
риваемых комбинаций.
Прежде чем рассматривать различные внешние структуры, нужно определить точку зре-
ния для рассмотрения. Программирование можно рассматривать как науку, как искусство
и как ремесло.
35
5.1.1. Наука программирования
Программирование является интеллектуальной деятельностью и обладает некоторыми
признаками науки. Наука программирования в России и Франции называется информати-
ка,
36
а в прочих странах Computer Science. Информатика сравнительно молода и не устоя-
лась как научная дисциплина: ее предмет плохо определен, а методы заимствованы из
смежных дисциплин, в первую очередь из математики.
Замечание
Классическими образцами научных исследований в программировании, которые доступны
начинающим без специальной подготовки, являются монографии Э. Дейкстры Дисциплина
программирования, Д. Гриса Наука программирования и А.П. Ершова Введение в теорети-
ческое программирование.
Хотя информатика стремительно развивается и некоторые успехи налицо, но в настоящий
момент влияние информатики на практику программирования пренебрежимо мало ввиду
незрелости
37
самой науки. Дисциплина программирования не предназначена для изучения
учеными программистами.
32
Приведенный абзац является кратким упрощенным пересказом некоторых положений знаменитого письма Дейкстры
GO TO statements considered harmful, которое положило начало технологии программирования, как самостоятельному
направлению программистской мысли (см. разд. 1.2.2).
33
Объем и сложность программы, которую может воспринять любая система программирования, намного превосходят
объем и сложность программы, которую может написать любой программист.
34
Подразумевается компьютер традиционной (морально устаревшей) архитектуры с центральным процессором, адре-
суемой линейной памятью и хранимой в памяти программой.
35
В последние годы расцвело, в особенности в нашей стране, спортивное программирование. Соотношение между спор-
тивным программированием и промышленным профессиональным программирование спорно и неоднозначно. Спор-
тивное программирование здесь не рассматривается.
36
Формальным признаком того, что информатика считается наукой, является наличие отделения информатики и вычис-
лительной техники в структуре Российской академии наук.
37
Признаком зрелости науки является наличие достаточного количества результатов (открытых законов природы, дока-
занных теорем). Обычно пороговым значением считают число 50.