Общеизвестный факт.
И при программировании "без ООП в языке", как в Обероне, будут ручные виртуальные таблицы указателей на процедуры.
Также и на С многие библиотеки в около-объектном стиле написаны.
А без полиморфизма вообще путную архитектуру не построишь.
Т.е. у Оберона херовая архитектура? O_o
ilovb - но хоть вы то , немного подумайте.. причем здесь Оберон.. или Хаскель.. в том случае, когда речь идет об процедуре которая использует РОДОВОЙ метод у обьекта который СОЗДАЕТСЯ ВОВРЕМЯ ВЫПОЛНЕНИЯ (и его фактический тип определятся тогда же).. - то ВСЕГДА стоит задача поиска подходящего метода для ФАКТИЧЕСКОГО вызова...- тут даже не надо знать OOP просто немного здравого смысла. Заметьте, что в данном случае "вы попали плевком в небо" .
Может быть я чего-то недопонимаю... Но при создании объекта
определённого типа/класса во время выполнения делается простая привязка к его VMT, а далее следуют косвенные вызова без какого-либо поиска.
Иное дело... сообщения, но и там задача решается довольно изящно, в подавляющем числе случаев. Так как, сообщения описываются при написании программы, то в их описание включается и адрес (прямой/косвенный) обрабатывающего метода. Включение происходит непосредственно при компиляции программы/модуля. Во время работы в сообщение могут подставляться какие-то параметры, не изменяющие тип сообщения... Но могут быть, конечно, ситуации, когда сообщение создаётся непосредственно во время исполнения, и заранее тип сообщения неизвестен. Тогда нужен поиск, который ускоряется либо за счёт древовидного списка типов сообщений, либо за счёт хэширования. Но, тем не менее, поиск в таких ситуациях нужен... только часто ли возникают подобные ситуации?..