Приведу примеры. Допустим, я «стреляю из пистолета» с друзьями на стадионе, если хотите, «нажимаю на спусковой крючок». Эта инструкция из тех, которые имеют значение: первое, что приходит в голову то, что значением инструкции будет «выстрел». Можно в самом деле указывать на зависимость, даже функциональную, между моделями пистолета и собственно «выстрелом» по дальности и другим параметрам. Но, допустим, я стреляю из пистолета в районе стадиона, где к старту приготовилась группа спортсменов. Я выстрелю, а они побегут. Старт группы спортсменов будет таким же значением инструкции «стрелять из пистолета» как и «выстрел». И дело здесь как раз не в том, что спортсмены реагируют на «выстрел», а не на стрельбу из пистолета, что «выстрел» предшествует старту. На практике мы сталкиваемся с фальш-стартами. В конце концов пистолет может дать осечку, но это вызовет старт. Таким образом то, что спортсмены стартуют является точно таким же значением инструкции «стрелять из пистолета» как и «выстрел». Выстрелив из пистолета может раздаться выстрел и последовать старт, а может последовать только одно значение, а может не последовать ни одного. Данное соответствие не является функциональным.
Допустим, я постоянно покупаю вино в одном магазине. Для того, чтобы получить бутылку вина я расплачиваюсь. Речь идет о соответствии между суммой денег и бутылкой вина определенной марки. Это соответствие также функциональным не является. Во-первых, это вино постоянно дорожает как в зависимости от инфляции так и по неизвестным мне причинам, так что когда я составляю домашний бюджет одному и тому же вину соответствует несколько сумм денег. Как-то раз под Новый год хозяин магазина сделал мне как постоянному покупателю подарок – он подарил мне бутылку. Я никогда с точностью не знаю на какую сумму мне рассчитывать, чтобы купить вино, сколько мне нужно выложить продавцу, чтобы получить бутылку.
В конце концов я выкладываю сумму денег в магазине за какой-либо товар, предполагая получить не только товар, но и сдачу. Моей сумме денег соответствует два значения– «товар» и «сдача». Но таким образом это действие не является функцией. Однако если спросить человека в здравом уме является ли это действие чем-то «единым», «одним», является ли для него естественным заплатить сумму денег за товар и получить товар и сдачу или он считает, что он совершает два разных действия, то, я полагаю, человек в здравом уме согласится, что это одно действие. Это действие я называю инструкцией и противопоставляю функции.
Допустим, я играю на рулетке. Предполагая выиграть, я делаю ставку. «Делать ставку» это инструкция, которая очевидно может иметь два значения – выигрыш и проигрыш. Любой здесь заявит: «да в данном случае мы не имеем дело с функцией».
Однако все эти соответствия могут быть формализованы, для них могут быть заданы алгоритмы.
Допустим
(z, y) = 2x
при z=2x, если x-четное,
y=2x, если x-нечетное.
Скажут, вы в данном случае задали две функции, для четных и нечетных чисел. Я этого не делал. Я просто записал одну инструкцию. Надеюсь, эта инструкция совершенно интуитивно ясна человеку в здравом уме, однако термина для нее в математике не существовало.
Фундаментальной идеей, с которой вы должны ознакомиться, является не идея функции, как функционального соотвествия, а машина Тюринга-Поста. Этот термин действительно имеет фундаментальное значение для математики, программирования, а, как я убежден, и общенаучный смысл. Я изложу его содержание.