Привет.
Может кто-нибудь объяснить, почему языки используют виртуальные машины, исполняющие байт-код, а не компилируются в C?
Например, JVM, Erlang, Ruby?, Python?
В C есть dlfcn.h, позволяющий динамически подгружать код из предварительно скопмилированных файлов.
Чем плох такой подход? Или он просто неудобен, т.к. будет плодиться куча *.so файлов?
Подгрузка кода в ран-тайме — очень весёлая задача, нормально её только Erlang решает. Даже в Java это танцы с бубном, если нужна полноценная система плагинов. А в C/C++ сломать таблицу символов — раз плюнуть.