Активные данные. Философское программирование - Сергей Федорович Толкачев 4 стр.


Грезят на подобные темы не только программисты. Странные картины мира привычны также и физикам, например у Р. Фейнмана, вселенная  это «атомы с сознанием, материя с любопытством.». А если уж продолжить фантазировать вместе с физиками совсем по-настоящему, то можно представить себе модель рекуррентногоСоздателя. Ведь когда один Создатель породил итеративный процесс, который привел к появлению другого Создателя, и тот, в свою очередь, породил следующий итеративный процесс, который А что, если был Создатель, который придумал язык, в котором алфавит состоит из атомов (см. таблицу Менделеева), а слова-молекулы образуются путем многомерной конкатенации букв этого алфавита. Затем, с помощью первоначальной загрузки (Большой Взрыв), он запустил универсальный процесс, и в результате из физического алфавита и слов, образуются молекулярные предложения, из которых и получается ВСЁ, что с точки зрения конструктивного программиста, вполне логичная система рекуррентных отношений. И вернувшись к своей программе, конструктивный программист добавил к ней ещё одну строчку, ещё одну маленькую итерацию к процессу Великой Эволюции, и кто знает, может быть, когда-то нечто подобное делал другой Программист?  «Но довольно»


Последние два слова  пример того, как глубоко различны все мы в восприятии и понимании! Этими словами заканчивается знаменитый монолог Гамлета в переводе Б. Пастернака и у того, кто читал и помнит эту версию, они определённо вызовут какую-нибудь, возможно, что и весьма глубокую, ассоциацию. Но для того, кто не читал или не помнит, реакция после прочтения этих двух слов будет совсем другой. Слово всё в начале этой главы, вместе со словом ВСЁ в конце, объединяют не логика, а принципиально иные по своей природе, глубокие ассоциативные связи, о которых и пойдет речь в этой книге.


Книга о программировании без примеров программ, так же неполна, как и книга о математике без математических формул. Можно много фантазировать и интересно рассуждать о знаниях, программах и компьютерах, но практическая цель этой книги будет достигнута только тогда, когда программисты смогут применить результаты этих рассуждений в своих работах, и чтобы помочь в этом, все демонстрационные примеры, приведенные в этой книге, включая библиотеки подпрограмм и объектов, доступны в GitHub:


https://github.com/stolkachev

От слов к делу

В самом начале была Буква,

затем появилось Слово,

и уже потом Дело.


Формальные грамматики

Мы живем в мире машин, которые постоянно что-то делают: перевозят, разогревают, фрезеруют  или, если сформулировать более точно, выполняют определенные действия, которые можно измерить и описать в физических терминах: работа, мощность, КПД, энергия и пр. Здесь разносторонний программист обязательно должен добавить: «Класс машин, помимо энергетических, должен включать подкласс информационныхмашин, которые тоже умеют кое-что делать». Эх, как было бы удобно всё формализовать в виде классов, методов и отношений, если бы объектно-ориентированный подход приняли в качестве основы для рассуждений все остальные непрограммисты! Мечты


Из повседневного опыта известно, что слова могут быть декларативными или императивными, и они могут определять или инициировать действия. Например, набор слов: «Чтобы разогреть воду, включи плиту» будет понятен любому современному человеку, и даже компьютеру, хотя несколько столетий назад, эта фраза вызвала бы недоумение  ведь в то время для того, чтобы разогреть воду, нужно было разжечь огонь. Естественно, что один и тот же результат может быть получен в итоге различных последовательностей действий. А слова, как виртуальный мостик, связывают исполнительные механизмы, способные к конкретным действиям, с одной стороны, с процедурами или знаниями, задающими эти последовательности, с другой. Но и суть программирования заключается в формулировании чего бы то ни было  словами! Будь то математическая формула или экономическая модель, программист обязан передать их описание компьютеру при помощи комбинации слов. Желательно только не забывать при этом, о чем на основании своего опыта предупреждают известные мастера слов  математики: «Слова  орудия опасные» (Герман Вейль).

Мы употребляем подобные слова повсеместно и никаких сомнений не возникает, пока мы не зададимся вопросом, а что, собственно, есть действие, и чем знание отличается от данных и информации? Рассуждая над смыслом слов, нужно быть готовым к тому, что, как бы глубоко и формально мы не старались уточнить их определения, всё равно, согласно К. Гёделю и В. Гейзенбергу, они будут недостаточно точными, неполными или противоречивыми. Общепринятый подход к получению более «точных определений» основан на использовании более строгих математических формализаций. Мы же, напротив, будем рассчитывать на неформальное и интуитивное понимание, основанное на «глубоком многослойном обучении». Сравнительно недавно появилась новая теория  «Intelligent Learning» и один из её авторов, Владимир Вапник, высказал предположение, что если фактические знания передаются в сочетании с ассоциативно связанными «посторонними» идеями, то обучение происходит более эффективно, модификация знаний о предметной области не разрушает модель, а адаптация к новому происходит быстрее и легче.


Слово делать относится как раз к такой категории интуитивно понятных, и положительный ответ на вопрос «Может ли машина делать?», особенно если речь идет о физических действиях, не должен вызвать каких-либо сомнений (разве что филологических). Но и у программистов не видно серьезных оснований для возражений по поводу способности информационных машин  ведь стоит загрузить программу в компьютер, как в нем начинаются действия. Как в физике, так и в информатике, действие всегда приводит к изменению состояния, и это изменение в энергетической машине может быть измерено в джоулях, а в информационной  в битах. Мы не будем здесь углубляться в сравнение свойств физических и информационных систем, например закона сохранения энергии с его информационным аналогом, или определения работы в физических и информационных системах. Однако если эта тема заинтересует любопытного читателя, то можно быть уверенным, что его ждут интересные и неожиданные открытия.


Но ведь и человек способен к делу, равно как и множество живых существ, которые тоже совершают самые разнообразные осмысленные, и не очень, действия. Почему бы не расширить класс машин, добавив к нему биологические системы? При этом у нас появляется возможность изучить связи между информационными действиями и соответствующими физиологическими реакциями, на целом спектре разнообразных организмов, поскольку биологическая эволюция предоставила нам последовательный ряд: от примитивного червяка-нематоды C. еlegans, до человека разумного, в которых связи между информационными и физическими органами уже достаточно хорошо изучены и описаны.



Если сравнить рефлекторные реакции в ответ на возбуждения в простейших организмах, с тем, как анализирует вопросы и генерирует ответы человек в процессе диалога, то можно проследить, как видоизменяются биологические системы, созданные с применением одного и того же базового конструктивного элемента  нейрона. Правда, проводить измерения внутри живых организмов дело тонкое и вряд ли в скором времени мы сможем создать универсальную структурно-функциональную модель, в которой для каждого органа будут получены энерго-информационные характеристики в джоулях и битах. Но характерные особенности и отличия в структурах различных по сложности организмов, могут дать хорошую пищу для рассуждений.


А «Может ли машина мыслить?»  с этого вопроса начинается, одна из самых популярных в истории вычислительной техники, статья А. Тьюринга «Вычислительные машины и разум». Этот вопрос вызвал бесконечное количество дискуссий и безусловно до сих пор, он является одним из самых интересных теоретических вызовов для многих программистов, и не только. Но если сформулировать его несколько иначе  «Как машина может помочь человеку мыслить?», то из области сложных формальных проблем, с которыми столкнулся Тьюринг и его последователи, мы переходим к инженерным системам и техническим определениям, где результат должен быть конкретен и может быть измерен понятным способом, например, как КПД физической машины, заменяющей ручной труд человека.

Назад Дальше