А чем вообще различаются языки, если "снять" с них синтаксис? Во всех широко используемых языках один "суповой набор" — объекты, переменные, функции, алгоритмы, компайлтайм и рантайм. Может быть, с отделением семантики отвалятся и кажущиеся различия?
Возьмем, например, ТруООП язык, тот же смоллток. Добавим юнит-тесты и JIT — компиляцию тех кусков, которые возможно.
Есть ли хоть что-то в каком-нибудь языке, что нельзя этим проэмулировать?
Классы — легко. Строгая типизация — покрывается юнит-тестами. Присобачить поле "тип" к каждому объекту, юнит-тесты на автомате проверяют соответствие, в релизе эти поля можно и выкинуть. Полиморфизм — автоматом, наследование-реализацией объекта "Класс", инкапсуляция — автоматом и теми же юнит-тестами.