Показать сообщение отдельно
  #44  
Старый 01.04.2014, 23:21
Аватар для Bargest
Bargest Bargest вне форума
Профессионал
 
Регистрация: 19.10.2010
Адрес: Москва
Сообщения: 2,390
Версия Delphi: XE3/VS12/FASM
Репутация: 14665
По умолчанию

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