Почитал я вот этот тред, и (может быть ошибочно) понял, что участники дискуссии разделились на 2 лагеря. Первый — за emulek-style, другие против.
Взгляд emulek на процесс заключается, насколько я понял, в следующем. Поскольку строки представлены для проца маш кодом, можно считать их скомпилированными прогами. Поэтому, можно взять компилятор, вызвать из него интерпретатор, исполнить этим интерпретатором код, понятный этому интерпретатору, и, вуаля, у нас скомпилированная прога, в виде строки выхлопа интерпретатора (представленая в машкоде).
Давайте оформим эту мысль вот так. Есть 2 ЯП l1 и l2. Есть транслятор с l1 в l2 — это компилятор, назовем его К, и есть транслятор с l1 в l1 — это интерпретатор — И.
Представим себе, что мы выполнили текст на языке l1 c помощью И
text(l1) --> И --> text(l1)
text(l1) --> K --> text(l2)
(text(l1) --> И --> text(l1)) --> И --> text(l1)
Может ли транслятор K сделать то же самое? Только с помощью костылей, типа макросов и препроцессоров. Но есть тонкий момент. Что если нам нужно сделать
((text(l1) --> И --> text(l1)) --> И --> text(l1)) --> И --> text(l1)
Тут у нас всплывает, ИМХО, суть того, что принято называть мощностью ЯП.
А Вы за Emulek-style или против?:)