Цитата:
Стековая машина как стековая машина. Где там в байт-коде наследование, например?
|
Класс (т.е. файл .class для джавы) описывается как наследник другого класса, поэтому всегда создается дерево классов. Далее на примере далвик, т.к. его помню почти наизусть, в жабе все аналогично.
new-instance создает непосредственно объект. Далее есть instance-of, проверяющий, является ли объект экземпляром класса или его наследником. Во все invoke-и и getfield/putfield передается строка с именем класса или же экземпляр класса, от которого в случае несущестовования метода/поля будет браться родитель и искаться соответствующий метод/поле. Ну и интерфейсы еще прилеплены. Таким образом, на уровне архитектуры машины может быть построено дерево классов и происходить работа с ним.
Полноценная реализация наследования (статического, разумеется).
Цитата:
А где "низкое быстродействие" и "конечная память" в структурной теореме, например?
|
Структурная теорема не призывает создавать абстракции от абстракций, притянутые за уши к понятию объекта. Фактически структурное программирование требует строить четкий алгоритм из относительно независимых блоков. Просто метод создания кода в том виде, в каком его удобно проектировать и поддерживать. Он не накладывает
никаких ограничений на сам алгоритм, кроме того, что это не должно быть спагетти. Поэтому и работа со всеми ресурсами компьютера на нем легка.
ООП же требует, чтобы весь алгоритм был взаимодействием объектов, что вообще-то идет поперек принципа работы машины - последовательного выполнения действий. Понятно, что взаимодействие объектов
можно описать последовательностью действий, но это уже выход за рамки ООП и переход к реализации, так сказать, "движка ООП".