Пожалуй, эти изменения отражали в миниатюре происходящее в то время в биологии в целом. Я был молод, еще не утвердился на собственном пути и действовал по принципу: “Не можешь победить – присоединяйся”. Поэтому я стал учиться теории управления у инженеров и математиков, среди которых теперь оказался. А ведь лучший способ чему-либо научиться – заняться этим на практике. Поэтому я вернулся к своей страсти (или вредной привычке) – к программированию и написал для цифрового компьютера (“моего собственного” PDP-8) программу, которая позволяла ему вести себя как аналоговый компьютер. Для этого я разработал еще один язык программирования, который назвал SysGen .
В отличие от выполняемых последовательно команд обычных языков программирования, таких как Фортран, команды языка SysGen выполнялись “одновременно” ( на самом деле , разумеется, не одновременно, потому что в основе работы любого цифрового компьютера лежит последовательное выполнение операций, но записать такие команды можно было в любом порядке). Работая над программой-интерпретатором SysGen Interpreter , я ставил перед собой задачу заставить цифровой компьютер вести себя так, как если бы он выполнял операции одновременно, то есть создать виртуальный аналоговый компьютер. Результаты работы при этом отображались, как и положено аналоговому компьютеру, в виде набора кривых на экране осциллографа.
Не знаю, насколько практичным был SysGen , но создание этого языка и написание для него программы-интерпретатора, несомненно, помогли мне разобраться не только в теории управления, но и в интегральном исчислении и позволили намного лучше понять суть интегрирования. Я помнил, что мой дедушка по материнской линии рекомендовал мне книгу “Математический анализ в доступном изложении” Сильвануса Томпсона (излюбленные слова которого – “Что может один дурак, может и другой” – я уже цитировал). В этой книге Томпсон начинает объяснение интегрирования с еще одной запомнившейся мне фразы: “Итак, давайте не будем терять времени и немедленно научимся интегрировать”. На уроках Эрни Дау я разобрался в интегрировании лишь отчасти, а работа над языком SysGen позволила мне вникнуть в этот предмет на практике, что всегда способствует пониманию.
Исходя из похожих соображений, я попытался на практике разобраться и в лингвистических теориях школы Ноама Хомского, что оказалось намного проще и отняло у меня намного меньше времени. Для этого я написал компьютерную программу, генерирующую случайные предложения – быть может, не особенно осмысленные, но всегда грамматически корректные. Сделать это нетрудно (что само по себе говорит о многом), если использовать язык программирования, позволяющий процедурам (подпрограммам) рекурсивно обращаться к самим себе. К таким языкам относился Алгол-60, ставший к тому времени моим любимым языком программирования под влиянием Роджера Эбботта, блестяще преуспевшего в написании программы-компилятора, которая позволяла использовать Алгол на компьютере PDP-8. Подпрограммы Алгола могли обращаться к самим себе, в отличие от подпрограмм современной версии разработанного корпорацией IBM Фортрана – этого традиционного орудия программистов, работающих в естественных науках. По поводу Фортрана мне вспоминается удачная программистская шутка, которую я услышал от Терри Винограда – одного из первопроходцев в области искусственного интеллекта. В семидесятых годах я как-то раз был в Кембридже на интереснейшей конференции, посвященной последним успехам программирования в этой области. Самым почетным гостем той конференции был именно Виноград, и в ходе своего доклада он с отменным сарказмом заметил: “Хотя, быть может, вы из тех, кто говорит: «Фортран устраивал моего дедушку , устроит и меня»”.
Пользуясь языком программирования, позволяющим процедурам рекурсивно обращаться к самим себе, очень легко – просто загляденье как – написать программу, которая будет генерировать грамматически корректные предложения. В написанной мною программе процедуры назывались NounPhrase (ГруппаСуществительного), AdjectivalPhrase (ГруппаПрилагательного), PrepositionalClause (ПредложнаяГруппа), RelativeClause (ОпределительноеПридаточное) и так далее, и любая из них могла обращаться к любой другой, в том числе к самой себе. Эта программа позволяла генерировать случайные предложения, такие как следующее:
(Прилагательное существительное (прилагательного существительного (которое наречно наречно глаголилось (в существительном (существительного (которое глаголилось))))) наречно глаголилось)
Читать дальше
Конец ознакомительного отрывка
Купить книгу