Как определить и описать эти разные моменты времени? - PullRequest
0 голосов
/ 17 февраля 2010

Справочная информация: Элдридж попросил меня объяснить, в чем разница между фазами разницы во времени, когда речь идет о написании и развертывании кода.

Он хочет знать:

  • 1) в чем разница между: 1) временем проектирования; 2) время компиляции; 3) время выполнения?
  • 2) Каковы конкретные примеры того, что программист не сможет жестко связать со своим кодом и не узнает до времени выполнения?
  • 3) лучше ли языки сценариев с множеством «хитростей» во время выполнения (кроме личных предпочтений) для людей, которым нужна большая гибкость во время выполнения?

Вопрос:

Хотя у меня есть ответы для Eldrige, основанные на моих собственных взглядах на программирование, казалось хорошей идеей получить разные перспективы, чтобы не дать «необъективного» ответа. ... Итак, какой непредвзятый ответ вы можете дать, чтобы объяснить эти вещи (при условии, что язык (и)).

Ответы [ 2 ]

2 голосов
/ 17 февраля 2010

Хорошо, так как никто не пытался, я возьму это на себя.

Время разработки - это время, потраченное на создание исходных файлов. Код в текстовых файлах, определения форм и т. Д.

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

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

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

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

И статические, и динамические языки (лично я ненавижу описание "языки сценариев") имеют место в вычислительной технике. Динамический язык не может ничего сделать, чего не может статический язык; единственное отличие заключается в количестве кода, необходимого для реализации функциональности.

1 голос
/ 17 февраля 2010

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

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

const int SecsInDay = 60 * 60 * 24; 

Run-Time - для вещей, которые могут быть определены только во время работы программы (например, виртуальной машиной). Сюда входит любой пользовательский ввод, настройки динамической конфигурации и т. Д.

Языки сценариев более гибки в создании изменяющейся логики, поскольку могут обходить компиляцию и создавать новое поведение, основанное на вводе и логике во время выполнения, например, Оператор Java Script eval () может выполнять любой произвольный JavaScript-код, введенный пользователем или возвращенный через веб-сервис и т. Д.

...