Скажут: «вы все равно никуда не денетесь от высказываний вроде «HP LaserJet 1020» это принтер». Пусть так, но я интерпритирую его не иначе, как соответствие, а именно соответствие тождества:
HP LaserJet 1020 | HP LaserJet 1020 |
Философы интерпритируют высказывание «HP LaserJet 1020» это принтер» как обращение к более общему и более фундаментальному – к общей идее. Я в ответ на это скажу: простите, но прежде всего должен заметить вам, что «HP LaserJet 1020» это прежде всего «HP LaserJet 1020». «HP LaserJet 1020» это сначала «HP LaserJet 1020», а только потом, на основании этого – «принтер».
Как видно из вышесказанного я в конце концов примирился с классическим типом определения через род и видовое отличие, но понимаю их совершенно особым образом. Если говорится: «Вольво»– автомобиль семейного класса», то говорится, я полагаю, следующее: «Вольво» это «Вольво», но ему поставлено в соответствие «семейный класс» и это соответствие как для «Вольво» и «семейного класса» так и другие мы называем «автомобиль». Дедуктивное определение понимается мною как индуктивное и является не определением понятия, а заданием соответствия.
Итак, я отрицаю «общие идеи», т. е. роды и таким образом определения через род и видовое отличие. Единственные «общие идеи», которые я согласен признать это соответствия.
Функция и инструкция.
В математике термин «род» давно потеснен. Когда говорят «2 это число» мыслят в сущности архаично. Формальный математический язык сегодня реформирован в соответствии с теоретико-множественной концепцией Кантора. Сегодня уже все чаще говорят «2 это элемент из множества натуральных чисел». Термин «множество» оказывается не менее фундаментальным, чем термин «число». Подход Кантора– либерален и фундаментален, достаточно сказать «2 это элемент множества». В том-то и дело, что мы открываем в себе способность оперировать объектами и характеризовать объекты, которые не можем подвести под общее имя, но можем перечислить: человек, лягушка, бутылка вина. Есть множество, заданное простым перечислением. Мы можем охарактеризовать это множество, заявив, что это множество мощности три. Мы можем оперировать им: рассмотрим множество (человек, лягушка, бутылка вина). Далее: рассмотрим множество (статуя, лягушка). Возьмем пересечение этих множеств. Получим: множество (лягушка). Речь идет о фундаментальной математической операции, не предполагающей ссылки на какое-либо «качество», возможной без представления «общей идеи».
В пределах современной, практикующей теоретико-множественный подход, математики стремительно развивается такое понятие как функция. Это сравнительно новый термин в математике введенный только в 17 веке Бернулли, но если сегодня просмотреть философскую, математическую, физиологическую, психологическую литературу, то можно заметить, что это едва ли не самый популярный из математических терминов. Особую роль термин функция играет в программировании. В так называемом классическом программировании, о программе говорят, что она – последовательное вычисление функций. Современное определение функции следующее: функция это функциональное соответствие.
Эта идея функции как соответствия между элементами двух множеств, т. е. того, что не предполагает общей идеи для аргумента и значения все еще очень «свежа» так как ранее математики не могли при определении функции обойтись без общих идей. Бернулли определял функцию следующим образом: «функцией переменной величины называют количество, образованное каким угодно способом из этой переменной величины и постояных». Ученик Бернулли Эйлер: «Функция переменного количества есть аналитическое выражение, составленное каким-либо образом из этого количества и чисел или постоянных количеств». Речь здесь идет об общей идее «количества». Так понимали функцию на протяжении почти всего 18 века Даламбер, Лагранж, Фурье и другие видные математики. Только в 1837 году немецкий математик П. Л. Дирихле так сформулировал общее определение понятия функции: «y есть функция переменной x (на отрезке a (x (b), если каждому значению x на этом отрезке соответствует совершенно определенное значение y, причем безразлично каким образом установлено это соответствие– аналитической формулой, графиком, таблицей либо даже просто словами». И здесь присутствует «общая идея»– «переменная». Но здесь во всяком случае уже не предполагается «общей идеи» для аргументов и значений. «Общая идея» предполагается только для аргументов. Я же настаиваю на том, что и для аргументов и для значений может не быть общих идей.
Вслед за термином «функция» стал актуален термин «алгоритм», который, впрочем, древнее чем термин инструкция и введен еще Аль-Хорезми. Говорят, что алгоритм– вычисляет функцию.
Однако при построении теории алгоритмов многие математики замечают, что алгоритм более фундаментальное понятие, чем множество. При построении теории алгоритмов замечают, что понятие множества не фундаментально, его нельзя рассматривать как первичное. Этот подход в математике называется «конструктивным». Представителем этого подхода в Советском Союзе был Марков, который в качестве первичного ввел понятие «конструктивного объекта». «Конструктивный объект» определяется с помощью некоторой моделирующей процедуры, т. е. собственно, алгоритма. Вместо терминов «множество» и «элемент» вводятся такие термины как «слово» и «буква». Т. е. множество задается некоторым алгоритмом, который позволяет записать букву, стереть букву, добавить букву в слово с правой стороны и т. п.
«Конструктивизм» в математике делает понятие алгоритма первичным, более основательным, чем понятие множества ибо конструктивизм рассматривает множество (т. е. то, что может быть задано перечислением без определения) как порожденное алгоритмом.
Я долгое время размышлял над проблемой соотношения этих терминов – «множество», «функция», «алгоритм», «конструктивный объект» пока собственно не придумал своего – «инструкция» (и последующих). Я намерен заинтересовать этим термином и дальнейшей терминологией, математиков, программистов, психологов, философов и менеджеров.
Итак, предположим, алгоритм – наиболее фундаментальное понятие математики. Но проанализируем алгоритм. Заметим, что мы можем выделить некоторые элементарные термины, а именно – «записать букву», «стереть букву», «добавить букву к слову справа». Эти термины пока не проанализированы, однако все их можно обобщить в понятии инструкции.
Итак, я дам первое, предварительное понятие инструкции, которое буду расширять на протяжении работы: инструкцией я называю то, что может быть выражено в традиционном языке как связь глагола и существительного.
В самом деле ошибочно заявлять: «алгоритм вычисляет функцию», «программа есть последовательное вычисление функций». Простейший пример этого мы можем почерпнуть из робототехники. Мы программируем робота, заставляя его «взмахнуть рукой». Мы действительно на это способны, но это не функция ибо нет никакого соответствия между рукой и чем-то еще. «Взмахнуть рукой» это не какое-то соответствие, тем более не соответствие функциональное. Вообще это эссе является результатом упорных размышлений как раз над понятием «функции», с помощью которого я когда-то хотел перестроить философию, так что я с иезуитской изобретательностью пытался втиснуть то, что сейчас называю «инструкцией» в понятие функции. Я убеждал себя в том, что «взмахнуть рукой»– функция. Я спрашивал себя: «следует ли считать высказывание «взмахнуть рукой» функцией? Если счесть что «рука» аргумент, то о каком функциональном соответствии может идти речь, что является значением функции? Та же рука, только вздернутая кверху. О функции говорится, если элементу из множества области определения соответствует элемент из множества значений, но в данном случае к этим множествам относится один и тот же предмет. Если «взмахнуть рукой» функция, то она задает преобразование a в b, при том, что a и b фиксируются субъект-предикатно «опущенная рука», «вздернутая рука». Функциональное преобразование задает, что a стало b. Верно ли считать функцией ситуацию, при которой аргумент и значение есть один и тот же объект и различия между ними могут быть заданы лишь предикатами? Определенное упрямство заставит отвечать: «да, верно», хотя этот подход сопровождается определенными трудностями. Я вообще полагаю, что математическое определение функции и математический подход задания слишком узки для этой работы. Отстаивая представление, что «взмахнуть рукой»– функциональное соответствие можно утверждать примерно следующее. Взгляд на то, что «взмахнуть рукой» имеет дело с одним и тем же объектом, относящимся как к области определения так и к области значения является поверхностным. Рука, которой взмахнули – принципиально иной объект, чем та опущенная рука с которой мы имели дело как с аргументом. Это не значит, что «вздернутая рука» и «опущенная рука» не выражаются одним словом в языке. Тем не менее они отличаются друг от друга как окунь и форель отличаются друг от друга оставаясь рыбами.» Сейчас я пришел к убеждению, что это, разумеется, не так. В программировании часто говорят: «программа есть последовательное выполнение команд». «Команд», а не «функций». Я же скажу, что программа есть последовательное выполнение «инструкций».