БЕСЕДЫ О ПРОГРАММИРОВАНИИ

        

Питер Коффи

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

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

Нынешнее состояние дел в программировании роботостроения можно сравнить с работой обычного паука - во всяком случае так утверждает Ханс Моравек в своей книге "Mind Children" ("Размышляют дети"). Вам нужен человекоподобный робот, способный по-человечески реагировать на непрограммируемую ситуацию? Подождите пятнадцать лет и выписывайте чек на десять миллионов долларов или подождите еще двадцать, и тогда вы сможете купить его меньше чем за тысячу - об этом говорят сделанные Мораве-ком расчеты, основанные на подробном и хорошо аргументированном анализе тенденций и проблем развития технологии.

Но даже сегодня, если думать о приложениях так, как будто мы создаем роботы, можно улучшить качество кода за счет надежного модульного конструирования и четко определенных функций. Принципиальной разницы между ребенком, определяющим поведение "черепашки" на языке Лого, и авиационным инженером, работающим над системой реакции на особую ситуацию на языке Ада, нет. Было бы прекрасно, если бы существовало больше бизнес-приложений, в которых, например, после ввода данных осуществлялась бы проверка достоверности этого ввода. Еще лучше, если это приложение могло бы использовать знания о других полях или содержание внешней базы данных, для того чтобы предлагать пользователю варианты поведения.

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

Если вы сумеете посмотреть на приложение не как на набор экранов и запросов, а как на живое существо, с которым надо уметь поддерживать беседу, значит, вы сумеете творчески подойти и к вопросу о том, как заставить код более чутко реагировать на самые разные проблемы пользователя и в то же время сделать методы его использования более естественными.

Билл Госпер из лаборатории искусственного интеллекта Массачусетского технологического института однажды спросил: "Почему мы должны ограничивать получаемую компьютером информацию той ложью, которую люди сообщают ему при помощи клавиатуры?" Идея предоставить программам необходимые ресурсы, для того чтобы они могли находить нужную им информацию сами, довольно соблазнительна.

"Почему мы должны ограничивать получаемую компьютером информацию той ложью, которую люди сообщают ему при помощи клавиатуры?"

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

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

Связаться с Питером Коффи можно через MCI Mail по адресу: 357-1756 или через CompuServe по адресу: 72631,113.      

ПИТЕР КОФФИ