@KnightForce

Загрузка кода в память на разных языках программирования?

Где-то читал, но не нашел снова, что весь код JS загружается в оперативную память и потом работает. Что логично.

В других языках также или есть отличия?

Интересуют C, C++, Java, C#, PHP.
  • Вопрос задан
  • 216 просмотров
Решения вопроса 2
sergey-gornostaev
@sergey-gornostaev
Седой и строгий
Самые примитивные интерпретаторы, например bash, считывают файл скрипта с диска построчно и одновременно выполняют каждую считанную строку. Обычные интерпретаторы читают файл, анализируют код, строят AST и уже его выполняют. Современные продвинутые интерпретаторы (такие как PHP, CPython и Javascript V8) после построения AST компилируют его в байткод и выполняют уже байткод. Чаще всего у интерпретируемых языков этот байткод остаётся только в памяти и не сохраняется на диск. В отличии от них, в Java и C# этапы анализа кода и компиляции его в байткод отделены от этапа выполнения байткода. Скомпилированный код сохраняется в файлах и после выполняется виртуальной машиной. Компилируемые языки (C, C++ и прочие) компилируют AST не в байткод, а сразу в машинные инструкции. Впрочем, и они в последнее время всё чаще используют LLVM.
Ответ написан
Комментировать
@remzalp
Программер чего попало на чем попало
Для компилируемых языков:
1. Бывают оверлейные структуры, которые подгружаются по потребности в память, но это тех времён, когда DOS был
2. Бывают плагины, которые лежат в dll и не обязательно загружаются при запуске программы

Для интерпретируемых - вроде бы логично, что загрузили в память и поинтерпретировали.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы