Вычислительная машина и мозг - Джон фон Нейман
Эти вопросы, по-видимому, очень важны для понимания структуры нервной системы, но большинство из них пока остаются без ответа. Мы знаем основные активные органы нервной системы (нервные клетки). Есть все основания полагать, что с этой системой связана память очень большой емкости. Но мы определенно не знаем, к какому типу физических объектов принадлежат основные компоненты этой памяти.
Цифровые и аналоговые части нервной системы
Отметив вышеописанные фундаментальные и пока не решенные вопросы, связанные с проблемой памяти, можно перейти к другим, не связанным с памятью свойствам нервной системы. Однако прежде позвольте мне сказать несколько слов об одной, менее важной особенности памяти. Речь идет о взаимосвязи между аналоговыми и цифровыми (или смешанными) частями нервной системы.
Я хочу сказать следующее: процессы, которые происходят в нервной системе, могут, как я уже отмечал ранее, неоднократно менять свой характер с цифрового на аналоговый и обратно на цифровой. Нервные импульсы, т. е. цифровая часть, могут управлять определенной стадией такого процесса, например сокращением некой мышцы или выделением некоего химического вещества. Данное явление относится к аналоговому типу, но может служить источником последовательности нервных импульсов, возникновение которых обусловлено его восприятием соответствующими внутренними рецепторами. Когда возникают такие нервные импульсы, мы снова возвращаемся к цифровому типу. Как уже упоминалось выше, такие переходы от цифрового процесса к аналоговому и обратно к цифровому могут происходить несколько раз. Таким образом, цифровая часть системы, связанная с нервными импульсами, и аналоговая часть, связанная с химическими изменениями или мышечными сокращениями, способны, чередуясь друг с другом, придавать любому процессу смешанный характер.
Роль генетического механизма
В данном контексте генетические явления играют особенно типичную роль. Сами гены, несомненно, являются элементами цифровой системы компонентов. Однако их функции состоят в стимулировании образования специфических химических веществ, а именно – определенных ферментов, характерных для данного гена. Следовательно, они относятся к аналоговой сфере. Таким образом, и здесь наблюдается чередование аналоговых и цифровых процессов, о котором я упоминал выше.
Коды и их роль в управлении машиной
Перейдем к вопросам, касающимся других аспектов нервной системы. В частности, я имею в виду некоторые принципы организации логических команд, которые играют важную роль в функционировании любого сложного автомата.
Прежде всего позвольте мне ввести термин, необходимый в данном контексте. Система логических инструкций, которую может выполнять автомат и которая заставляет автомат решать некую определенную задачу, называется кодом. Под логическими командами я понимаю нервные импульсы, появляющиеся на соответствующих аксонах, а также любые другие явления, которые заставляют цифровую логическую систему (такую, как нервная система) функционировать воспроизводимым, целенаправленным образом.
Понятие полного кода
Говоря о кодах, нельзя не отметить следующее различие. Код может быть полным, т. е. (применительно к нервной системе) содержать последовательность, в которой нервные импульсы появляются на определенных аксонах. Это, разумеется, будет полностью определять поведение нервной системы или (продолжая сравнение) соответствующего искусственного автомата. В вычислительных машинах такие полные коды представляют собой наборы команд, заданные со всеми необходимыми подробностями. Если машине предстоит решить некую задачу посредством вычисления, то она должна управляться такими полными кодами. В основе применения современных вычислительных машин лежит способность человека разрабатывать и формулировать полные коды для любой задачи, которую должна решить машина.
Понятие сокращенного кода
Помимо полных кодов существуют коды другого типа, которые лучше всего называть сокращенными кодами. Они основаны на следующей идее.
В 1937 году английский логик А. М. Тьюринг показал (и с тех пор специалисты в области вычислительной техники применяют это на практике самыми разными способами), что можно разработать такие системы кодовых инструкций для вычислительной машины, которые заставят ее вести себя так, как если бы это была некая другая вычислительная машина. Системы инструкций, которые заставляют одну машину имитировать поведение другой, известны как сокращенные коды. Позвольте мне более подробно остановиться на типичных вопросах применения и разработки таких коротких кодов.
Вычислительная машина управляется, как я уже отмечал выше, кодами, последовательностями символов (обычно двоичных символов), т. е. цепочками битов. В любом наборе инструкций, которые управляют работой конкретной вычислительной машины, должно быть ясно указано, какие цепочки битов представляют собой команды и что они должны заставить машину делать.
Для двух разных машин значимыми могут оказаться разные цепочки битов; в любом случае их воздействие на их работу может оказаться совершенно различным. Так, если ввести в машину набор команд, предназначенных для другой машины, то некоторые из них могут оказаться для нее бессмысленными, а именно – цепочки битов, которые не принадлежат к семейству значимых для данной машины команд или которые заставят ее производить действия, не являющиеся частью заранее заданного плана по решению поставленной задачи или, вообще говоря, не имеющие к нему никакого отношения.
Функция сокращенного кода
Код, который, согласно схеме Тьюринга, заставляет одну машину вести себя так, как если бы это была другая машина (т. е. заставляет первую машину имитировать вторую), должен содержать понятные для этой машины инструкции (детализированные части кода), чтобы она изучила каждую получаемую команду и определила, соответствует ли ее структура структуре команд второй машины. Следовательно, такой код должен содержать команды (представленные в значимой для первой машины форме), которые подвигнут первую машину производить действия, которые обычно выполняет вторая машина.
Важный результат, полученный Тьюрингом, заключается в том, что таким образом можно заставить первую машину имитировать поведение любой другой машины. Структура команд, которые она при этом будет выполнять, может в корне отличаться от структуры команд, которые она выполняет обычно. Так, структура команд второй машины может носить гораздо более сложный характер, чем структура команд, характерных для первой машины. Например, команда второй машины может включать несколько операций, сложные итеративные процессы, многократные действия любого рода и т. д. Говоря в целом, все, что первая машина может выполнить за любой промежуток времени и под управлением всех возможных систем команд любой степени сложности, теперь может выполняться так, как если бы речь