LINUX.ORG.RU

История изменений

Исправление 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 сдизайнить не смогу, потому что не хочу))