Есть такой учёный в Стенфорде,
Терри Виноград, известный специалист по человеко-машинным интерфейсам. В его честь названа
Winograd Schema Challenge (альтернатива теста Тьюринга), а в молодости Терри прославился созданием программы
SHRDLU. Она была результатом его диссертации в MIT AI Lab и представляла собой систему управления виртуальной средой с помощью команд на английском языке. На экране отображалось пространство, содержащее разные объекты (кубы, шары, конусы, ...), и оператор мог отдавать команды вида "возьми большой шар" и "положи его на синий куб". Система отвечала на вопросы о расположении блоков, обрабатывала команды перемещения, сносно справлялась с разрешением анафор по контексту, отвечала на вопросы о предыдущих действиях, отрабатывала базовую физику — что на чём может лежать и т.п.. (SHRDLU можно считать первым примером interactive fiction, жанра,
о котором я уже как-то писал.) Всю эту магию Терри опубликовал в конце шестидесятых, чем вызвал хайп вокруг исследований в области AI и NLP, обернувшийся позже некоторым разочарованием. Оно во многом было связано с тем, что в SHRDLU так хорошо были выбраны параметры среды (типы объектов, их характеристики, словарь команд), что система легко справлялась с редуцированным пространством задач и воспринималась, как универсальная, но все попытки как-то развить её и сделать что-то более полезное, чем пирамидки на кубиках, проваливались. Чуть ли не с этого началась первая
AI winter, а сам Виноград,
разочаровавшись, решил заниматься человеко-машинными интерфейсами в более широком смысле.
Код SHRDLU был написан на языке Micro-Planner, реализованным на
MacLisp на компьютере DEC
PDP-6 с ОС
ITS. Язык
Плэнер разрабатывался тем же самым Виноградом и его коллегами, и представлял из себя смесь Лиспа с некоторыми идеями, которые позднее вошли в Пролог. (Успех SHRDLU стал основой для распространения Плэнера, по слухам оказавшего определённое влияние на авторов Пролога). Страшнее зверя, чем этот Плэнер, лично я среди языков, пожалуй, не встречал. Кроме того, как было принято в те лихие времена, SHRDLU был самомодифицирующимся, т.е. при обработке команды он мог переписывать и перезапускать свой код. Но самое главное, в классическом ночном угаре перед сдачей диссера Терри пришлось внести несколько патчей прямо в машинный код своего интерпретатора Лиспа. В итоге получилось, что выполнить код SHRDLU можно было только этим конкретным модифицированным бинарником, для которого не было исходного кода. Это никого не напрягало, и программа разошлась в народе более чем десятком копий (а в мире было всего
23 компьютера PDP-6). Но по мере того, как операционная система ITS обновлялась, совместимость этого модифицированного бинарника с осью постепенно терялась, и по воспоминаниям Дейва Макдональда (студента Терри Винограда) через несколько лет SHRDLU совсем перестал работать —
код сохранился, но не было железа+OS, чтобы его запустить. Сохранилось
видео работы, сохранился также
транскрипт диалога с программой, использованного в диссертации ("SHRDLU demo"). С тех пор люди время от времени пытаются восстановить работу алгоритма,
существует много довольно похожих на оригинал клонов, но ни один из них не даёт в точности те же ответы, что приведены в SHRDLU demo.
О названии
Терри пишет, что хотел выбрать "ненастоящую" аббревиатуру, и первое, что пришло в голову, было слово SHRDLU, которое он в юности встречал в журналах типа
Mad Magazine, где оно использовалось для обозначения бессмыслицы. Эта традиция пришла со времён, когда наборщики на
линотипах заполняли этими буквами ошибочные строки — кнопки backspace на линотипе не было, и, сделав ошибку, проще было забить строку до конца мусором, чтобы её потом отбраковал корректор; иногда, однако, корректоры пропускали такие строки и SHRDLUSHRDLUSHRDLU попадало в печать. Почему именно эти буквы?
Кнопки на линотипе были отсортированы по частоте использования в английском языке (а не как
в истории с QWERTY), первый ряд был
ETAOIN, а второй — SHRDLU. Вот такая история.