Я частично соглашусь, и частично возражу. Да, это не средство реализации полиморфизма вообще, но это средство, позволяющее делать вывод типов. Можешь называть это статическим контролем - но таков уж язык джава; я не знаю, во что бы его превратили программисты-практики, если бы не было статического контроля. Мы вот тут перекатываем некоторое количество софта с пайтона на джаву - не потому, что джава лучше пайтона, а потому, что на джаве "за программистом контроль имеется". Меньше шансов увековечить бред. Дженерики как раз мешают строить коллекции из разнородных элементов, с последующей "проверкой типа".
Недавно у меня была дискуссия с человеком, который хотел изготовить что-то вроде следующего:
class SingletonCache {
T get(class<T> cls) {
...
}
}
ну конечно, он исхитрился такой класс изготовить, но... но слава богу, что обычная публика предпочитает легкие пути.
А уровень, на который дженерики выводят джаву - это более упорядоченный образ мышления программиста, когда он начинает где-то мыслить не циклами и присваиваниями, а в терминах коллекций. Конечно, не сравнить с эффектом темплейтов в си++; без них язык, в голове программиста, вообще состоял из битов и байтов - да таблиц "виртуальных функций". Но сишные темплейты, хоть им сто лет уже, всё равно, имхо, остаются чуждыми языку, экзотической надстройкой. А в джаве и коллекции и дженерики вписались только так. Дай бы бог ещё Гафтеру протащить closures (что маловероятно), тогда бы вообще можно было не тужить джавщикам, что переучиваться придется.
no subject
Date: 2007-02-12 08:00 pm (UTC)Недавно у меня была дискуссия с человеком, который хотел изготовить что-то вроде следующего:
ну конечно, он исхитрился такой класс изготовить, но... но слава богу, что обычная публика предпочитает легкие пути.
А уровень, на который дженерики выводят джаву - это более упорядоченный образ мышления программиста, когда он начинает где-то мыслить не циклами и присваиваниями, а в терминах коллекций. Конечно, не сравнить с эффектом темплейтов в си++; без них язык, в голове программиста, вообще состоял из битов и байтов - да таблиц "виртуальных функций". Но сишные темплейты, хоть им сто лет уже, всё равно, имхо, остаются чуждыми языку, экзотической надстройкой. А в джаве и коллекции и дженерики вписались только так. Дай бы бог ещё Гафтеру протащить closures (что маловероятно), тогда бы вообще можно было не тужить джавщикам, что переучиваться придется.