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

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

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

ТехнологииПрограммирование+1
Иван Мельников
  ·   · 13,7 K
Программист, разработчик ПО.  · 19 дек 2016

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

def some_function(a):
--if (a == 3):
----return a
--else:
----return "ololo"

а потом:
number = random(какой-то диапазон)
result = some_function(number)

print result

Какой тип имеет result? Строка? Число? Как это понять на этапе компиляции?
Ответ - сложно. В этом заключается смысл динамической типизации - тип определяется на этапе исполнения программы, в этом же кроется и проблема - тип неизвестен. Да, в теории можно пытаться вывести тип из того, что написано в программе, но это довольно трудоемкая задача, разработка компилятора будет крайне сложной.
К слову, языки со статической типизацией могут быть интерпретируемыми (Haskell, например).
Более подробно о типизации:
https://habrahabr.ru/post/161205/

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

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