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