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