Концепция Программы Жизни

Как мы можем определить концепцию жизни программы? Жизнь программы может быть описан повторяющейся последовательностью конечных процессов в компьютере, выполняемых в контексте выбранной предметной области.

Определенно окончательное, в какой-то разумный период времени.



дизайн

Когда появится программа? Скорее всего, программа появляется в голове дизайнера/разработчика, можно назвать ее время разработки .

Но поскольку этот момент находится вне контроля компьютера (пока), будем считать, что момент появления программы является моментом создания минимально работоспособного (о подробном значении этого термина стоит поговорить отдельно) исходного кода.

В контексте модульных языков или языков с ООП программа рождается при появлении минимального модуля/класса.

Дальнейшее рассмотрение будет проводиться для модульных систем, поскольку в немодульных/скриптовых системах определенные этапы обычно сводятся/объединяются в один этап.

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

Здесь можно описать автозаполнение, автоподсветку (как уже реализованные программы), программирование макросов IDE, генерацию схем баз данных и схем DRAGON и так далее.



компилировать

Затем, после этапа написания программного кода, программа передается компилятору.

Компилятор предоставляет так называемые время компиляции время компиляции .

В результате процесса компиляции мы получаем компиляцию (то есть прямой результат обработки нашего исходного кода).

Во время компиляции наш исходный код влияет на работу компилятора по определенным законам, которые выражены в коде компилятора.

При этом никто не мешает контролировать действия компилятора (точнее, исполнителя в целом) на этапе компиляции не косвенно, через написание текста нашей программы, а напрямую, через написание кода общего назначения, который будет выполняться компилятором .

То есть такой код, который хоть и относится к намеченной программе, но не транслируется напрямую компилятором в компиляцию.

Так называемые ХТФ? , но в более общем смысле.

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

Здесь можно отметить, что выполнение любого процесса жизненного цикла подразумевает наличие результата либо явно, либо неявно.



нагрузка

После получения компиляции на ней должен быть выполнен процесс привязки или компоновки либо немедленно, либо с задержкой.

Поскольку компиляция обычно хранится в файле, происходит время загрузки время загрузки .

В это время могут выполняться дополнительные преобразования при компиляции в код целевой платформы, и в это время может выполняться код времени загрузки, например, обработка компиляции оптимизирующим компилятором.

На данный момент известна только одна технология WebAssembly ( тонкие двоичные файлы ), поздняя генерация кода на целевой платформе, которая хоть как-то описывает время загрузки.



связь

Обычно связывание необходимо, поскольку компилятор всегда компилирует один модуль для прямого выполнения на целевой машине.

Однако в реальной модульной системе на машине одновременно будут выполняться несколько модулей.

Такая ситуация в многомодульной системе приводит к необходимости компоновки.

В старых системах компоновку можно было выполнить сразу после компиляции, но мы не рассматриваем этот ухудшенный случай.

Итак, возникает время связывания , или время соединения .

О выполнении кода во время компоновки известно мало, но ясно, что во время компоновки можно выполнить код, например Dependency Injection и динамическое наследование/прокси, так как это можно реализовать внутри jvm. Такой контроль над программным кодом, который еще не введен в эксплуатацию, но уже готов к исполнению, позволяет осуществлять автоматическую настройку и так далее.

После связывания и настройки код сразу готов к запуску.



инициализировать, запустить, закрыть

Запуск и дальнейшая работа.

Этапы, наиболее известные широкой публике.

Представлено время инициализации ( время инициализации ) И время исполнения ( время выполнения ).

По сути, результатом этого этапа жизненного цикла обычно является непосредственная цель написания программы.

Вы можете дополнительно выделить время окончания работа программы ( близкое время ).

Однако сейчас все три времени работы принято называть время выполнения и реализовать логическое разделение на три этапа в коде клиентской программы.

Такой подход снижает требования к среде выполнения, но не гарантирует выполнение того или иного этапа в необходимой последовательности из-за возможных ошибок выполнения, после которых выполнение обычно должно завершаться нештатно.



смерть

Отдельным важным моментом жизни программы является посмертное время ( время смерти ), что, вопреки распространенному мнению, также является частью жизненного цикла программы.

Объяснение здесь простое, так как целью программы обычно является определенный результат, обычно в зависимости от входных данных, которых может быть много, программы строятся с использованием методов, позволяющих итеративную обработку входных данных и выдачу выходных данных, которые можно подать на вход следующей итерации.

Обычно такие данные структурированы (БД), версионны (результат взаимодействия со сторонним API), а их содержание и интерпретация зависят от реализации запущенной программы.

То есть программа — это алгоритмы и данные, в том числе внешние, и степень связи этих внешних данных с программой никак не влияет на сам факт наличия такой связи на любом этапе жизненного цикла.

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

И если внести изменения в эти данные в тот момент, когда программа не запущена, то программа тоже будет работать по-другому, то есть, внося изменения в данные, мы программируем работу программы по-другому.

Что такое этап жизненного цикла программы?

Полученные результаты

Итак, рассмотрены этапы жизни программы: время разработки -> время компиляции -> время загрузки -> время соединения -> время инициализации -> время выполнения -> близкое время -> время смерти .

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

Сегодня не существует языка, структуры или экосистемы, в которой эти этапы были бы реализованы в полном объеме.

Науке, бизнесу и сообществу есть куда совершенствоваться.

В опросе могут участвовать только зарегистрированные пользователи.

Войти , Пожалуйста.

В какой момент вам не хватает возможности выполнять собственный код? 44% время разработки 11 28% время компиляции 7 8% время загрузки 2 4% время компоновки 1 4% время инициализации 1 20% время выполнения 5 4% время закрытия 1 20% время смерти 5 25 проголосовали пользователи.

50 пользователей воздержались.

Теги: #концепция #модуль #код #Аномальное программирование #программирование #Анализ и проектирование систем #Алгоритмы

Вместе с данным постом часто просматривают: