Я всегда слышал, что языки времени компиляции (Java, C ++ и т. Д.) Являются статически типизированными, а интерпретируемые языки (PHP, Python и т. Д.) Динамически типизированы, но вопрос в том, почему это так, почему язык времени компиляции не может быть динамически типизированным и наоборот. наоборот?
Почему языки с динамическим типом интерпретируются, а языки со статическим типом являются языком времени компиляции?
comment
Есть языки с динамической типизацией, которые компилируют код. stackoverflow.com/questions/2555063/
- person ernest_k   schedule 19.12.2018
comment
Например, Джулия.
- person user2357112 supports Monica   schedule 19.12.2018
comment
Другими словами, ваша посылка неверна.
- person martineau   schedule 20.12.2018
comment
Возможный дубликат Есть ли скомпилированный * язык программирования с динамической, может быть, даже слабой типизацией?
- person Oleksii Filonenko   schedule 20.12.2018
Ответы (2)
Это зависит строго от языка, например. В Java есть смешанный режим, в котором код, который выполняется реже, только интерпретируется. Компиляция кода может быть дорогостоящей, поэтому, если скомпилированный код не выполняется много раз после компиляции, затраченные на компиляцию усилия не окупятся.
person
Karol Dowbecki
schedule
19.12.2018
Это не совсем так. Байт-коды Java можно интерпретировать, на самом деле они интерпретировались только до версии JDK 1.1.5ish. JavaScript часто компилируется.
Однако интерпретатор динамического языка действительно легко написать. Может, попробуй. Статически типизированные языки немного сложнее, так что вы все равно можете его скомпилировать. С другой стороны, для разумной компиляции динамического языка требуются определенные усилия.
person
Tom Hawtin - tackline
schedule
19.12.2018