Здравствуйте, Кодт, Вы писали:
К>Здравствуйте, d Bratik, Вы писали:
DB>>Речь идет не об интерпретируемом байт-коде, а о промежуточном языке (Intermediate Language — IL) и динамической компиляции. Языки Lisp и Smalltalk по природе своей интерпретируемы. Сделать все это эффективно в императивном языке, на котором написать потом операционную систему удалось только Вирту и Ко.
К>Lisp может быть компилируемым. Smalltalk — тоже. К>В самом простом виде, можно оттранслировать байткод в команды реального процессора.
Я сказал "императивный", а хотел сказать "строго типизированный". Ни Lisp, ни Smalltalk строго типизироваными не являются. Для выполнения Lisp- и Smalltalk-программ по определению нужна виртуальная машина и интерпретация.
Оттранслировать байт-код в команды процессора конечно можно, но большого толка от этого не будет, ибо архитектуры виртуальных машин Lisp и Smalltalk сильно отличаются от аппаратной архитектуры современных компьютеров. Поэтому программы на Lisp и Smalltalk всегда будут сильно уступать по производительности программам, написанным на Oberon, Pascal, C/C++ и др. строго типизированных императивных языках.