Фредерик П. Брукс

Вид материалаДокументы
Анализ Харела
Мысленный эксперимент Харела.
Подобный материал:
1   ...   32   33   34   35   36   37   38   39   ...   48

Анализ Харела


Дэвид Харел (David Harel) в статье 1992 года "Кусая серебрянную пулю"предпринимает самый тщательный анализ "СПН" из всех опубликованных.9

Пессимизм против оптимизма и реализма. Харел рассматривает как "СПН",так и статью Парнаса 1984 года "Программные аспекты стратегическихоборонительных систем"10 как "слишком унылые". Он намеревается высветитьболее яркую сторону проблемы, предпосылая статье подзаголовок "К светломубудущему порграммных разработок". Так же, как и Кокс, Харел считает "СПН"пессимистической, говоря: "Если взглянуть на те же факты с другой точкизрения, возникают более оптимистические выводы". Оба они неправильновоприняли тональность статьи.

Прежде всего, моя жена, коллеги и редакторы считают, что я гораздо чащевпадаю в неоправданный оптимизм, чем в пессимизм. В конце концов я попроисхождению программист, а оптимизм - это профессиональная болезнь данногоремесла.

В "СПН" прямо сказано: "Вглядываясь в предстоящее десятилетие, мы невидим серебряной пули... Однако скептицизм не есть пессимизм... Нет царскогопути, но путь есть". Она предсказывает, что нововведения, происходящие в1986 году, будучи разработаны и использованы, в совокупности действительнопозволят достичь роста производительности на порядок. Десятилетие 1986-1996подходит к концу, и это предсказание оказывается, скорее, слишкомоптимистичным, а не мрачным.

Даже если бы все без исключения считали "СПН" пессимистической, что вэтом худого? Является ли утверждение Эйнштейна о том, что ничего не можетперемещаться со скоростью, большей скорости света, "унылым" и "мрачным"? Акак насчет результатов Геделя о том, что некоторые вещи невычислимы? "СПН"пытается утверждать, что "сама сущность программного обеспечения делаетмаловероятным открытие "серебряных пуль" когда-либо в будущем". Турский всвоем отличном ответном докладе на конференции IFIP красноречиво заявил:

Из всех попыток науки продвинуться в ложном направлении наиболеевозвышенны те, которые были направлены на поиск философского камня -вещества, с помощью которого предполагалось обращать простые металлы взолото. Высшая цель алхимии, к которой с рвением стремились поколенияисследователей, щедро финансировавшиеся светскими и духовными правителями, -это в чистом виде стремление принимать желаемое за действительное иобщепринятое мнение, что вещи таковы, какими мы хотели бы их видеть. Этоочень по-человечески. Нужно сделать над собой большое усилие, чтобысмириться с существованием неразрешимых проблем. Стремление вопреки всемунайти выход, даже когда доказано, что его не существует, очень и оченьсильно. И в большинстве своем мы с большим сочувствием относимся к этимхрабрецам, которые пытаются достичь невозможного. Это продолжается и по сейдень. Пишутся сочинения о квадратуре круга. Стряпаются лосьоны длявосстановления утраченных волос - и неплохо продаются. Рождаются методыповышения производительности программирования - и хорошо расходятся.

Мы слишком часто склонны доверять своему оптимизму (или эксплуатировать оптимистические надежды своих спонсоров). Мы слишком часто не хотимприслушиваться к голосу рассудка и обращаем много внимания на продавцовпанацей, поющих голосами сирен.11

Турский, как и я, предупреждает, что мечтательность тормозит движениевперед и ведет к пустой трате сил.

"Мрачные" темы. Харел считает, что мрачность "СПН" придают три темы:

- Резкое разделение между сущностью и второстепенным.

- Изолированное рассмотрение каждого кандидата в "серебряные пули".

- Прогноз лишь на ближайшие 10 лет, а не на срок, в течение которогоможно ожидать "существенных улучшений".

Что касается первого, то в это вся соль статьи. Я по-прежнему считаю,что такое разделение необходимо для понимания того, почему трудно создаватьпрограммное обеспечение. И это верное указание, куда должен быть направленудар.

Что касается изолированного рассмотрения кандидатов в "серебряныепули", то это правда. Разные кандидаты предлагались поочередно и непомернымипретензиями на собственное всесилие. Правомерно и рассматривать ихпоочередно. Я возражаю не против самих технологий, но против ожидания от нихчуда. Гласс, Весси и Конджер (Glass, Vessey, Conger) в своей статье 1992года представили многочисленные свидетельства того, что бесполезные поискисеребряной пули все еще продолжаются.12

Что касается выбора в качестве периода предсказаний 10, а не 40 лет, точастично это признание того, что наши предсказания на больший срок никогдане были удачными. Кто из нас в 1975 году предсказал микрокомпьютернуюреволюцию 80-х?

Есть и другие причины ограничиться десятилетием: все кандидатыпретендовали на получение результатов немедленно. Я не помню ни одного,который бы сказал: "Если сегодня вы сделаете инвестиции в предлагаемое мнойсредство, то по прошествии 10 лет начнете пожинать плоды". Более того, задесятилетие соотношение производительность/цена для компьютеров выросло,наверное, в сотни раз, и неизбежно подсознательно производится сравнение,которое совершенно недопустимо. Мы наверняка достигнем большего прогресса запредстоящие 40 лет. Рост за 40 лет на порядок едва ли покажется чудом.

Мысленный эксперимент Харела. Харел предлагает мысленный эксперимент, в котором "СПН" была написана в 1952 году, а не в 1986, но содержала бы те же утверждения. Он хочет использовать это в качестве доказательства отпротивного в борьбе против попыток отделить сущность от акциденции.

Это доказательство неверно. Во-первых, "СПН" начинается с утверждения,что для программирования в 1950-х характерно значительное преобладаниетрудностей в акциденциях над трудностями в сущности. Этого преобладаниябольше не существует, что привело к росту производительности на порядкивеличин. Переносить это доказательство на 40 лет назад бессмысленно: никтоне стал бы в 1952 году утверждать, что не трудности акциденций ответственныза большую часть затрачиваемых усилий.

Во-вторых, Харел неточно представляет положение дел в 1950-х:

Это было время, когда вместо того, чтобы разрабатывать большие сложныесистемы, программисты писали обычные однопользовтельские программы, которыена современных языках программирования заняли бы 100-200 строк, и которыедолжны были выполнять скромные алгоритмические задачи. При существовавшихтогда технологиях и методологиях такие задачи тоже были очень трудными.Сплошь и рядом были неудачи, ошибки, нарушение сроков.

Затем он описывает, как за последние 25 лет упомянутые неудачи,ошибки, нарушенные сроки в обычных маленьких одновользовательских программахбыли улучшены на порядок.

Но в действительности в 1950-х годах вершиной технологии были немаленькие однопользовательские программы. В 1952 году Univac был занятобработкой данных переписи 1950 года с помощью сложной программы, которуюразрабатывали примерно восемь программистов.13 Другие машины применялись вхимической динамике, расчетах рассеяния нейтронов, расчетах полета ракет ит.д.14 Повседневно использовались ассемблеры, перемещающие компоновщики изагрузчики, системы интерпретации с плавающей точкой и т.п.15

К 1955 году уже создавались программы для бизнеса объемом от 50 до 100 человеко-лет.16 В 1956 году на заводе Дженерал Электрик в Льюисвиллеработала программа размером более 80 000 слов. В 1957 году в течение ужедвух лет в системе противовоздушной обороны работал компьютер SAGE ANFSQ/7,и на 30 площадках действовала система реального времени, использовавшаятелекоммуникации и дублирование в целях отказоустойчивости, объемом 75 000команд.17 Едва ли можно придерживаться мнения, что развитие технологий дляоднопользовательских программ - главная характеристика усилий в техникепрограммного обеспечения после 1952 года.

ВОТ ОНА. Харел продолжает, предлагая собственную серебряную пулю,технологию моделирования под названием "Vanilla Framework" ("ванильнаяструктура"). Сам подход описан недостаточно подробно, чтобы его можно былооченить, но есть ссылка на статью и технический отчет, который в свое времядолжен быть опубликован в виде книги.18 Моделирование касается сущности,правильной разработки и отладки понятий, поэтому технология может оказатьсяреволюционной. Надеюсь, что это так. Кен Брукс сообщает, что эта методологияоказалась полезной, когда он попытался применить ее к реальной задаче.

Незримость. Харел энергично доказывает, что значительная частьконцептуальной конструкции программного обеспечения является по своейприроде топологической задачей, и эти взаимосвязи находят соответствие впространственно-графических представлениях:

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

Некоторые грани процесса моделирования не столь легко поддаютсяхорошей визуализации. Например, алгоритмические операции над переменными иструктурами данных, возможно, останутся текстуальными.

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

Я вполне разделяю его энтузиазм по поводу использования диаграмм каквспомогательного средства при обдумывании и проектировании. Долгое время ялюбил задавать кандидатам на работу программистом вопрос: "Где находитсяследующий ноябрь?". Если вопрос кажется загадочным, то в другом виде:"Какова ваша мысленная мысленная модель календаря?" У действительно хорошихпрограммистов хорошее чувство пространства, у них обычно есть геометрическаямодель времени, и они часто без труда понимают первый вопрос. Их моделиочень индивидуальны.