Но в любом случае, абсолютно ноль целых ноль десятых смысла в идее писать компилятор, компилирующий любой язык, в котором нет типов, в Native-код.
Потому что код (суммарно) получится очень большим по объёму (на два порядка больше, чем аналогичный псевдокод).
Код будет состоять из повторяющихся почти одинаковых (очень друг-на-друга похожих) кусков, размером где-то 50—100 инструкций, которые будут производить кучу проверок и производить элементарное (в позиции языка) действие, вроде сложения двух операндов или вызова «функции».
Этот код даже выполняться будет медленнее, чем псевдокод на аналогичной виртуальной машине, потому что в этом случае процессорный кеш не даст никаких преимуществ, а во-втором случае (в случае виртуальной машины) процессорный кеш закешируют постоянно повторно выполняемые куски кода, являющиеся реализацией элементарных действий виртуальной машины.
Но вот если в языке есть типы, тогда его однозначно нужно делать компилируемым в Native-код. Потому что это даст выгоду.