История изменений
Исправление aist1, (текущая версия) :
Ахаха, знакома я тема.
Дело в том, что в C++/Rust/Go(будут) инвариантные, и это накладывает определенные ограничения на парадигму их применения. В Java — ковариантные/контрвариантные, и поэтому могут вступать в иерархии наследования. Однако, реализация таких дженериков опять попала в «трясину Тьюринга». Они оказались полны по Тьюрингу, и на них можно выразить в принципе любые отношения обобщенных типов, но реально это сделать практически невозможно (term rewriting потому что, слишком сложно для человека).
Я, после 20 лет программирования на Java, её дженерики обхожу стороной и вещи уровня Tinkerpop API сдизайнить не смогу, потому что не хочу))
Т.е. они нужны, они важны. С ними можно много чего полезного делать даже в Java (вывод типов). Но пусть этим занимаются другие люди))
Но в Go будут инвариантные момноморфные дженерики. Т.е. это совсем другая парадигма и другие юзкейсы.
Исправление aist1, :
Ахаха, знакома я тема.
Дело в том, что в C++/Rust/Go(будут) инвариантные, и это накладывает определенные ограничения на парадигму их применения. В Java — ковариантные/контрвариантные, и поэтому могут вступать в иерархии наследования. Однако, реализация таких дженериков опять попала в «трясину Тьюринга». Они оказались полны по Тьюрингу, и на них можно выразить в принципе любые отношения обобщенных типов, но реально это сделать практически невозможно (term rewriting потому что, слишком сложно для человека).
Я, после 20 лет программирования на Java, её дженерики обхожу стороной и вещи уровня Tinkerpop API сдизайнить не смогу, потому что не хочу))
Т.е. они нужны, они важны. С ними можно много чего полезного делать даже в Java (вывод типов). Но пусть этим занимаются другие люди))
Исходная версия aist1, :
Ахаха, знакома я тема.
Дело в том, что в C++/Rust/Go(будут) инвариантные, и это накладывает определенные ограничения на парадигму их применения. В Java — ковариантные/контрвариантные, и поэтому могут вступать в иерархии наследования. Однако, реализация таких дженериков опять попала в «трясину Тьюринга». Они оказались полны по Тьюрингу, и на них можно выразить в принципе любые отношения обобщенных типов, но реально это сделать практически невозможно (term rewriting потому что, слишком сложно для человека).
Я, после 20 лет программирования на Java её дженерики обхожу стороной и вещи уровня Tinkerpop API сдизайнить не смогу, потому что не хочу))