Здравствуйте ZORK, Вы писали:
ZORK>По сути, у меня все свелось к двум вопросам:
ZORK>- есть ли какое-нить, хотя бы империческое, доказательство того что нельзя построить компилятор, который будет делать то же что и generic types, просто основываясь на коде, в котором используется тип Object и тех интерфейсах к которому переменный типа Оbject приводят
Империческое доказательство? А как насчет позднего связывания, когда алгоритм выполнения программы определяется в Run time, что компилятор будет оптимизировать если он незнает какого типа обьект будет следующим. А знает он только точку входа в VT для твоего класса, производного от Object. Сильно сомневаюсь что компилятор с прогнозированием, для этого случая поможет.
ZORK>- не являются ли generic types средством решения изночальной кривизны, возможно неизбежной, заложенной в языки программирования (C++, Java, С#): наличие примитивных типов (int, long, String и т.д.) и не примитивных типов, у которых есть интерефейсы и прочие, что не позволяет написать эффективно написать код, который мог бы работать одновременно с переменный из обоих этих групп. Так что, бы интересно узнать про какую-нить теорию насчет примитивных типов, и их необходимости.
По моему не в кривизне дело, просто это способ обеспечит проверку соответствия типов на этапе компиляции. Об этом у Буча довольно много написано, советую ознакомиться.