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