Hacker News Digest

Тег: #generics

Постов: 3

Novo Nordisk's Canadian Mistake (science.org) 🔥 Горячее 💬 Длинная дискуссия

by jbm • 19 октября 2025 г. в 20:39 • 396 points

ОригиналHN

#patents#pharmaceuticals#generics#novo-nordisk#semaglutide#canada#brazil#usa

Комментарии (210)

  • Патент на семаглутид в Канаде истёк из-за того, что Novo Nordisk не заплатил за его продление, что привело к тому, что теперь в Канаде могут производить дженерики.
  • Это означает, что в США нет патентной защиты, но в то же время в Канаде дженерики могут быть экспортированы в США, что может привести к снижению цен.
  • В Бразилии патент на семаглутид истечёт в июле 2026 года, и правительство уже объявило, что будет предоставлять дженерики бесплатно.
  • В Канаде дженерики будут доступны уже в 2026 году, и это может привести к тому, что американцы будут ездить в Канаду за дешёвым лекарством.

Go subtleties (harrisoncramer.me)

Статья представляет собой сборник 15 тонкостей и малоизвестных возможностей языка Go, собранных автором за год работы с языком. Начиная с Go 1.22, можно использовать range с целыми числами для простого создания циклов. Интересно, что оператор ~ позволяет ограничивать универсальные типы, что полезно для типизированных констант. Пакет embed позволяет встраивать файлы прямо в бинарник, упрощая развертывание. Однако есть и подводные камни: len() со строками возвращает количество байтов, а не символов, что может привести к неожиданным результатам при работе с Unicode.

Особенно коварна работа с nil-интерфейсами: даже если значение nil, тип переменной остается ненулевым интерфейсом, что делает проверку a == nil ложной. Это может серьезно затруднить отладку кода, возвращающего интерфейсы. Также стоит отметить возможность переименования целых пакетов через LSP и индексированную строковую интерполяцию для уменьшения повторений. Функция time.After в сочетании с select предоставляет элегантный способ установки таймаутов для горутин.

by darccio • 13 октября 2025 г. в 07:42 • 191 points

ОригиналHN

#go#golang#nil#interfaces#unicode#goroutines#generics#error-handling#string-interpolation#lsp

Комментарии (144)

  • Go-разработчики обсуждают, что язык не даёт уверенности в надёжности кода из-за непредсказуемого поведения nil и интерфейсов, а также отсутствия нормального обработчика ошибок.
  • Сообщество отмечает, что вместо удобства чтения кода ради скорости компиляции выбрали неинтуитивную интерполяцию строк, что делает отладку тяжелее.
  • Разработчики делятся личными историями о том, как нулевые указатели и интерфейсы ведут себя непредсказуемо, и это продолжает подстерегать даже опытных разработчиков.
  • Обсуждение также затрагивает, что Go в целом поощряет писать простой код без изощрённых абстракций, что ведёт к быстрому и легкому ПО, но в то же время лишает разработчика выразительных средств.
  • Некоторые участники признают, что отсутствие обобщённых дженериков до недавнего времени и отсутствие перечислений кроме как iota и error в качестве встроенных типов делает язык менее выразителен, чем он мог бы быть.

PHP compile time generics: yay or nay? (thephp.foundation)

Кратко:
PHP-фонд предлагает реализовать только компиляторные обобщения (generics) для интерфейсов и абстрактных классов.
Синтаксис:

interface Repository<Item> {
    public function find(int $id): Item;
}

class UserRepo implements Repository<User> { … }
  • Все проверки типов происходят на этапе компиляции.
  • Ошибки ловятся до запуска кода.
  • new Repository<User>() по-прежнему невозможно, но и не усложняется.

Почему не полные обобщения?
Полноценные runtime-generics требуют сложного вывода типов и резко замедляют работу, особенно при объединённых типах и массивах.

Откуда идея?

  • 2023-2024: эксперименты Arnaud Le Blanc показали, что 80 % пользы можно получить без 80 % сложностей.
  • 2025: Gina Banyard разрабатывала «ассоциированные типы» и поняла, что их легко переформулировать как ограниченные обобщения.

Вопрос сообществу:
Поддержите ли вы такой вариант и проголосуете ли «за»?

by moebrowne • 07 августа 2025 г. в 11:49 • 86 points

ОригиналHN

#php#generics#compile-time#interfaces#abstract-classes#type-checking#c##java

Комментарии (50)

  • В обсуждении разбираются плюсы и минусы добавления дженериков в PHP.
  • Участники спорят, не приведёт ли это к «размагничиванию» типов, и объясняют разницу между reified (типы сохраняются в рантайме, как в C#) и erased (типы стираются, как в Java) дженериками.
  • Поднимается вопрос: почему class Repo<T> {} труднее реализовать, чем class BlogPostRepo extends BaseRepo<BlogPost> {}.
  • Многие разработчики просят хотя бы строго типизированные массивы, считая их более полезными, чем полноценные дженерики.
  • Часть команды уже использует PHPStan и strict_types, считая этого достаточным без изменений ядра языка.