Выполнение в компьютерной и программной инженерии - это процесс, с помощью которого компьютер или виртуальная машина читает и действует в соответствии с инструкциями компьютерной программы . Каждая инструкция программы - это описание определенного действия, которое необходимо выполнить для решения конкретной проблемы. Поскольку исполняющая машина следует инструкциям, определенные эффекты производятся в соответствии с семантикой этих инструкций.
Программы для компьютера могут быть выполнены в периодическом процессе без вмешательства человека или пользователь может вводить команды в интерактивном сеансе в качестве переводчика . В этом случае «команды» - это просто программные инструкции, выполнение которых связано друг с другом.
Термин « бег» используется почти как синоним. Связанное значение как «запустить», так и «выполнить» относится к конкретному действию пользователя, запускающего (или запускающего или вызывающего ) программу, как в «Пожалуйста, запустите приложение».
Контекст исполнения
Контекст, в котором происходит исполнение, имеет решающее значение. Очень мало программ выполняется на голой машине . Программы обычно содержат неявные и явные предположения о ресурсах, доступных во время выполнения. Большинство программ выполняются с поддержкой операционной системы и библиотек времени выполнения, специфичных для исходного языка, которые предоставляют важные услуги, не предоставляемые непосредственно самим компьютером. Эта поддерживающая среда, например, обычно отделяет программу от прямого управления периферийными устройствами компьютера, вместо этого предоставляя более общие абстрактные службы.
Процесс
Перед выполнением необходимо сначала написать программу. Обычно это делается в исходном коде , который затем компилируется во время компиляции (и статически связывается во время компоновки ) с исполняемым файлом. Затем этот исполняемый файл вызывается, чаще всего операционной системой, которая загружает программу в память ( время загрузки ), возможно, выполняет динамическое связывание , а затем начинает выполнение, перемещая управление в точку входа программы; все эти шаги зависят от двоичного интерфейса приложения операционной системы. С этого момента начинается выполнение, и программа входит в режим выполнения . Затем программа работает до тех пор, пока не завершится, либо нормальное завершение, либо сбой .
Устный переводчик
Система, выполняющая программу, называется интерпретатором программы. Грубо говоря, интерпретатор на самом деле делает то, что программа говорит делать. Это контрастирует с языковым переводчиком, который переводит программу с одного языка на другой. Наиболее распространенными языковыми переводчиками являются компиляторы . Переводчики обычно преобразуют свой исходный текст с высокоуровневого, удобочитаемого языка в язык более низкого уровня (иногда даже на собственный машинный код ), который проще и быстрее для процессора для непосредственного выполнения. Идея состоит в том, что соотношение выполнений и переводов программы будет большим; то есть программу нужно скомпилировать только один раз, и ее можно запускать любое количество раз. Это может дать большое преимущество при переводе по сравнению с прямым устным переводом на исходный язык. Один компромисс заключается в том, что время разработки увеличивается из-за компиляции. В некоторых случаях необходимо перекомпилировать только измененные файлы. Затем необходимо заново связать исполняемый файл. Для некоторых изменений исполняемый файл необходимо перестраивать с нуля. По мере того, как компьютеры и компиляторы становятся быстрее, этот факт становится все меньше препятствий. Кроме того, скорость конечного продукта обычно более важна для пользователя, чем время разработки.
Переводчики обычно выдают абстрактный результат, который не полностью готов к исполнению. Часто операционная система преобразует объектный код переводчика в окончательную исполняемую форму непосредственно перед началом выполнения программы.