> -- Цитата:
> В частности, паттерн «родовая шина сообщений» в Java вообще не может быть реализован эффективно, из-за отсутствия стековых полиморфных структур данных.В .Net тоже самое что в Java: тоже нет "стековых полиморфных структур данных". Размерные типы данных в дотнете нерасширяемы. Впрочем это не самое главное. Для передачи сообщений между разными потоками всё равно сообщения нужно размещать в динамической памяти. Так что есть структуры или их нет, расширяемы они или не расширяемы это для межпоточного взаимодействия становится не важным. Тормоза возникают в другом месте: в Java и в .Net выяснение динамического типа переменной занимает в несколько раз больше времени чем в Обероне/Компонентном Паскале. Например, если в Компонентном Паскале операция "IF msg IS MyMessage THEN" выполняется в среднем менее чем за 3 такта, то в .Net операция "if (msg is MyMessage)" выполняется в среднем за 15 тактов. Это связано с тем, что в Java и в .Net есть "интерфейсы" и множественное "интерфейсное" наследование. При наличии множественного наследования (пусть и "интерфейсного"), реализовать быструю операцию выяснения динамического типа нельзя. Можно было бы возразить, что, мол, множественное наследование "интерфейсов" на столько полезно, что ради него можно смириться с потерей производительности. Ничего подобного, мой личный опыт программирования говорит об обратном: множественное наследование "интерфейсов" -- бестолковое средство.