компьютер пользователь.


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



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


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


Компьютер и мозг хорошо взаимодополняют друг друга, хотя при этом они концептуально различны. В основе компьютера лежит централизованный процессор, исполняющий внешнюю программу, а мозг – децентрализованная система из множества динамических элементов, у которой нет конечной цели, a поведение является реакцией на внешние возбуждения. Различия между компьютером и человеком наглядны, но совсем не ясно, как может помочь программисту знание основ симфонической музыки, или наоборот, какая польза от теории информации, автору при работе над книгой? На первый взгляд, между этими понятиями нет прямых связей. Впрочем, если допустить, что знание, которое автор или программист создают и публикуют, является объектом с определенными свойствами, которые можно измерить, и этот объект воспринимает и интерпретирует некая система (компьютер или человек), то такую модель уже можно анализировать.