generics

  • ХабрахабрФото Обобщай это, обобщай то

    Обобщай это, обобщай то

    В рамках этой статьи я вновь попытаюсь аккуратно стереть границы между абстрактной алгеброй и объектно-ориентированным программированием, чтобы посмотреть на то, что получится на стыке. Ознакомиться с предыдущими трудами на эту тему можно по ссылкам: раз и два. На этот раз мы остановимся на связи между алгебраическими кольцами и алгоритмом поиска выпуклой оболочки множества точек (convex hull). ▍ Алгебраическое отступление Мои…

    Читать далее »
  • ХабрахабрФото Сказка о типизации

    Сказка о типизации

    В некотором царстве, в некотором государстве жил был царь. Как-то раз объявил царь всему народу - "Кто решит три моих задачки, тот сам сможет царём стать". И даже контракт метода опубликовал, всё честь по чести. public interface ЦарёвУказ1844 void setЦарь(Человек<? extends РешилВсеЗадачи> новыйЦарь); Человек<?> getЦарь();} Пришёл к царю кузнец, в разных делах дока, и говорит: "Давай свои задачки" Царь руки…

    Читать далее »
  • ХабрахабрФото Generico! Дженерики в go или стоит ли оно того

    Generico! Дженерики в go или стоит ли оно того

    15 марта 2022 года. Был морозный весенний день. Ветер старался доказать, что он не промах и залезть под куртки, кофты и прочие принадлежности гардероба, чтобы из первых рук, куда уж придется, принести весеннее настроение через свежесть. Не очень-то у него это получалось. Причем при любом раскладе. Если попадалась хорошая куртка и не пускала незваного гостя - ветру рассказать о весне…

    Читать далее »
  • ХабрахабрФото Go: обобщенные алгоритмы и типы

    Go: обобщенные алгоритмы и типы

    Предисловие До недавнего времени у тех, кто пишет на Go было два пути: копипаста и кодогенерация. Фанатом ни первого, ни второго я не являюсь, однако к моей радости, теперь и в Go есть обобщенные типы. Казалось бы, проблема решена! Но не тут-то было, дженерики Go имеют весьма специфические ограничения, которые, портят всю малину. С одним из них мне и захотелось…

    Читать далее »
  • ХабрахабрФото [Перевод] Как сгенерировать UUID в качестве первичных ключей при помощи Hibernate

    [Перевод] Как сгенерировать UUID в качестве первичных ключей при помощи Hibernate

    Большинство разработчиков предпочитают числовые первичные ключи, потому что они эффективны в использовании и их легко сгенерировать. Но это не означает, что первичный ключ должен быть числом. Например, в последние годы приобрели популярность UUID (англ. universally unique identifier — «универсальный уникальный идентификатор»). Основным преимуществом UUID является его (практическая) глобальная уникальность, которая дает огромное преимущество для распределенных систем. Если используется типичный числовой…

    Читать далее »
  • ХабрахабрФото Получение generic-типа в runtime

    Получение generic-типа в runtime

    src В Java 5 появились generic-типы, а вместе с ним и концепция type erasure, которая буквально означает стирание информации о generic-типе после компиляции. Действительно, во многих случаях это просто синтаксический сахар, помогающий писать типо-безопасный код на уровне компиляции, и в runtime с такими типами работать нельзя. Например, невозможно получить тип T внутри ArrayList<T>, поэтому он в своей реализации создает массив…

    Читать далее »
  • ХабрахабрФото Потоковая обработка данных в go

    Потоковая обработка данных в go

    При использовании языка Go чувствуется нехватка хорошей библиотеки для работы с потоками данных. Имеющиеся библиотеки в основном написаны во времена до дженериков и имеют не очень удобный интерфейс. С выходом Go 1. 18 появилась возможность реализовать библиотеку потоковой обработки данных goio, вдохновлённую превосходными Scala-библиотеками cats-effect и fs2. Потребности потоковых программ При обработке данных, объём которых превышает объём памяти вычислительного узла,…

    Читать далее »
  • ХабрахабрФото Golang пощупаем дженерики

    Golang пощупаем дженерики

    Скоро выйдет релиз 1. 18 в котором появятся долгожданные дженерики. Они позволят сделать универсальные методы. Я написал пару примеров для себя. Может быть они будут интересны кому-нибудь ещё. Интерфейсы any, comparable, constraints. и ~ Появились новые ключевые слова any - аналог interface. Это ключевое слово можно использовать в любом месте. Например при определении типа переменной или при опрредении типа поля…

    Читать далее »
  • ХабрахабрФото Как устроен вывод Generic-типов в Java

    Как устроен вывод Generic-типов в Java

    Добрый день! Меня зовут Владислав Верминский, я отвечаю за развитие профессии JVM-разработчика в Райффайзенбанке. В этой статье я расскажу про неоднозначность вывода типов в Java. На первый взгляд с ним всё очевидно, но когда сталкиваешься со странным поведением, возникают вопросы — начинает казаться, что какие-то части кода работают неправильно. Однако, после анализа становится понятно, что всё очень непросто, но при…

    Читать далее »
  • ХабрахабрФото Дженерики в языке Go

    Дженерики в языке Go

    func Map[F, T any](s []F, f func(F) T) []T return r} Как вы уже наверняка знаете, proposal по дженерикам в Golang принят (официально это называется type parameters) и будет имплементирован в go 1. 18. Бета будет доступна уже в конце этого года. А это значит, что пора разобраться, на чём в итоге остановились разработчики языка — ведь черновик type parameters…

    Читать далее »


Кнопка «Наверх»