Текст книги "Научная фантастика и научная реальность в информатике"
Автор книги: Эдсгер Дейкстра
сообщить о нарушении
Текущая страница: 2 (всего у книги 2 страниц)
Другое противоречие в развитии инженерии программного обеспечения всплывает, как только инженер-информатик задаётся вопросом, каким образом стать лучше, как искусство, мастерство или практика инженерии программного обеспечения могут быть улучшены. Он немедленно обнаружит, что вынужден обратиться к дисциплине, которую отверг. Приняв в качестве хартии «Как программировать, если не можешь этого делать», инженерия программного обеспечения загнала себя в неприемлемую позицию, в позицию, которой информатика может избежать, лишь отказавшись от компромисса, придерживаясь своей собственной формальной дисциплины и не прикидываясь чем-то большим.
Чуть раньше я упомянул плохую документацию системы как внутреннее ограничение надёжности, с которой система может быть использована механически в более широком контексте. Теперь самое время указать, что привлечение технического писателя редко является выходом из положения; в сущности, это не более как признание того, что разработчики системы в некотором роде функционально безграмотны. Обычно даже целая армия технических писателей не может справиться с задачей, поскольку система становится столь сложной, что не поддаётся точному описанию.
Выдающийся пример этого явления недавно продемонстрировала Ada. Если Ada собирается выдать стандарт, желательно, чтобы он был недвусмысленно документирован. По меньшей мере две группы попытались сделать это; в результате обе выдали около 600 страниц формального текста. Это гораздо больше, чем необходимо, чтобы удостовериться в невозможности хотя бы твёрдо установить, что оба документа определяют один и тот же язык.
Ошибка очевидной неуправляемости этих двух документов кроется ни в двух группах, составивших их, ни в принятом ими формализме, а лишь в самом языке: сами не обеспечив формального определения, могут ли его разработчики скрыть, что они предлагают неуправляемого монстра. То, что Ada уменьшит проблемы программирования и увеличит надёжность наших разработок до приемлемых границ, – это лишь одна из тех сказок, в которые могут поверить только люди с военным образованием. Самое лучшее, что я могу сказать об этом, – это упорные слухи, что даже военного образования недостаточно, чтобы поддерживать веру в этот Философский Камень. Я упомянул про Ada, поскольку это замечательный пример того, на что я указывал в начале доклада: её принятие – это политический процесс, в котором информатике, предостережения которой рассматривались как досадная помеха, не было дозволено оказывать никакого влияния. Следовательно, даже простое согласие с чьим-то обоснованным сомнением на этот счёт, даже без вмешательства в контроль и намерения, становится действием с политическим душком.
Я ещё не говорил об искусственном интеллекте. Что ж, этот предмет связан с другими политическими осложнениями, поскольку он стал частью заокеанской полемики: этот вопрос никогда не поднимался в Европе. В течение первых двух послевоенных десятилетий этому существовало простое финансовое объяснение. Искусственный интеллект был дорог, а Европа была бедна; к тому же искусственный интеллект финансировался почти исключительно министерством обороны, которое направило свои усилия на субсидирование – не могу сказать «поддержку» – американских исследований. Но одна лишь финансовая сторона не объясняет всего, поскольку, когда Европа стала достаточно богатой, чтобы финансировать собственные исследования в области искусственного интеллекта, об этом по-прежнему не велось и речи. На самом деле подобная участь постигла и другие отрасли науки программирования.
Моё заключение таково: это лишь один из аспектов намного более существенных культурных различий. Европейский разум поддерживает большее различие между Человеком и Машиной и ждёт меньшего от обоих.
Он менее склонен описывать человеческую психику в механистических терминах; он также менее склонен описывать бездушные машины антропоморфной терминологией; следовательно, он считает вопрос, может ли машина мыслить, столь же уместным, сколь вопрос, может ли субмарина плавать. Это общество очевидно менее тяготеет к разным техническим штучкам, отчасти потому, что не ждёт от них слишком многого, тем более спасения. Наоборот, попытка имитировать человеческий разум вызывает у них лишь комментарий: «А может, попробуете скопировать что-нибудь получше?».
Обычно мне не нужно говорить об искусственном интеллекте, поскольку это всего лишь специфическая область потенциального применения машин и поскольку она находится за пределами собственно информатики.
Впрочем, я вынужден делать это, как только высказывается мнение, что с применением техники искусственного интеллекта машины справятся с проблемами программного обеспечения, которые нам самим не по зубам. Нашей первой реакцией на Проект Пятого Поколения был вздох облегчения в таком духе: «Что ж, если японская промышленность пытается вложиться в искусственный интеллект, уж он-то позаботится о японской конкурентоспособности». Примерно через неделю пришло грустное понимание, что западному миру, похоже, не хватит силы духа удержаться и не примкнуть к этому поветрию.
В самом деле, он примкнул к этому поветрию, и, следовательно, опять входит в моду мысль: «не правда ли, как было бы мило, если бы наши машины были настолько умны, чтобы их можно было программировать на естественном языке?». Что же, естественные языки лучше всего подходят для своей основной цели, а именно быть неоднозначным, передавать шутки и признания в любви, но совершенно не подходят для хотя бы скольконибудь немного разумной точности. И если вы не верите этому, попытайтесь прочесть современный правовой документ, и вы тут же увидите, как необходимость в точности создаёт самые неестественные языковые обороты; либо попытайтесь почитать одно из первоначальных словесных доказательств Евклида (желательно на греческом). Это исцелит вас и заставит понять, что формализмы вводятся не для того, чтобы усложнить вещи, а для того, чтобы сделать их возможными. И если вы всё ещё верите, что нам легче всего изъясняться на наших родных языках, вас следует приговорить к прочтению пяти студенческих рефератов. Проблема с «умными» машинами остаётся той же, что и со всеми «опциями» языков программирования: каждый последующий слой «дружественности к пользователю» затуманивает спецификацию и тем самым делает систему более рискованной для использования.
И в заключение. Это не предмет моего доклада, однако в эти политические дни если я сам не подниму этот вопрос, он будет поднят в обсуждении: как насчёт программного обеспечения для Стратегической Оборонной Инициативы, более известной как «Звёздные войны»? Что ж, я уверен, что не смог бы его разработать, к своему удовлетворению.
Благодарю за внимание.