2

Искал инфу по языку программирования 1С, и там такая строчка была. Гугл, кроме ещё большего смятения, ничего не дал - "предварительно компилируемый" пишут не только для 1С. Так что же это всё таки такое?

Nicolas Chabanovsky
  • 51,426
  • 87
  • 267
  • 507
DizzWebS
  • 185

5 Answers5

7

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

К ним же относятся и такие интерпретируемые (скриптовые) языки, как Python, Perl, Ruby, ибо компиляция (так называемая "прекомпиляция", или "компиляция на лету") у них происходит автоматически перед выполнением программы самим интерпретатором. Здесь результатом предкомпиляции будет "байт-код".

Языки динамического разбора, напротив же, считывают инструкции из файла программы минимально требующимися блоками, и исполняют эти блоки, не читая дальнейший код. Например shell (sh и прочая), command.com.

FoxManiac
  • 466
  • 1
  • 4
  • 10
  • Во! Огромное спасибо:) В принципе так и думал:) – DizzWebS Sep 09 '11 at 15:34
  • В данном ответе смешиваются понятия AOT (ahead of time) компиляции (C, C++, Go, Rust и т.д.) и JIT (just in time). Поэтому утверждение, что Python, Ruby, Perl и т.д. стоят в одном ряду с AOT компилируемыми языками не верно. – Aleksandr K. Jan 19 '17 at 15:23
3

Про 1C ничего не знаю, но во всяких C/C++ есть такая штука, как precompiled headers. Заголовочные файлы заранее компилятся в промежуточный формат, чтобы при компиляции сэкономить время. Это, конечно, догадка «пальцем в небо», но, возможно, речь про это?

drdaeman
  • 9,253
  • 1
  • 20
  • 37
1

Это значит что перед запуском программы которую ты написал, она переводиться в машинный код

java91
  • 21
  • А чем, в таком случае, отличается обычная компиляция от этой? Или я не совсем правильно понял? К примеру по шагам при компиляции (урезанно). Пишем код, компилируем (код переводится в машинный, создается экзешник, к примеру), запускаем прогу, работает. А тут - написал код, сохранил (создалось приложение, ГРУБО ГОВОРЯ пусть тоже .exe), запустил, он переводит код в машинный (компилируется?) и работает? Так? – DizzWebS Sep 08 '11 at 10:13
1

Думаю, что это компиляция в байт-код. Касаемо языка 1С - насколько я знаю, это они купили лицензию VBA

renegator
  • 3,978
0

В процессе разработки платформа 1С производит предварительную компиляцию в Байт - код. Это еще не машшинный код, но уже и не "человеческий". В этот момент происходит формирование блоков кода с разделением мест исполнения, только клиент, клиент/сервер, только сервер, web/thin-client, внешнее соединение.

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

AOkipniy
  • 174