Теперь Кью работает в режиме чтения

Мы сохранили весь контент, но добавить что-то новое уже нельзя

Что мешает создать компилятор для python-программ и тем самым сделать Python компилируемым языком в том числе?

ТехнологииПрограммирование+1
Иван Мельников
  ·   · 12,5 K
Разработчик  · 19 дек 2016

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

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

Это невероятная гибкость, которая позволяет писать такие программы которые невозможно написать на компилирующемся Си. (окей, возможно но очень сложно)

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

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

Хотя известны случаи когда eval реализуется через компиляцию в машкод во время выполнения, а не через интерпретацию байткода, например в SBCL.

Программист, разработчик ПО.  · 19 дек 2016
Одна из главных проблем - динамическая типизация. Приведу пример, допустим есть некоторая функция: def some_function(a): --if (a == 3): ----return a --else: ----return "ololo" а потом: number = random(какой-то диапазон) result... Читать далее

Спасибо за ответ. Как я понял, наоборот, создать интерпретатор для компилируемых языков ничто не мешает?

По образованию Автоматизатор производств. По...  · 18 дек 2016
Что мешает создать компилятор для python-программ и тем самым сделать Python компилируемым языком в том числе? Первое, что необходимо понять: “Питон” – это интерфейс. Существует спецификация, описывающая, что должен делать... Читать далее
Образовательная платформа Хекслет  · 25 мая 2023  · ru.hexlet.io
Отвечает
Roman
Python уже имеет компилятор, и в некотором смысле является компилируемым языком, но в отличие от языков, которые компилируются до машинного кода (например, C или C++), Python компилируется в байт-код, который затем исполняется... Читать далее
Помогаем новичкам освоить профессию веб-разработчикаПерейти на ru.hexlet.io/webinars