Ivan
Коллеги, а есть у кого-то примеры передачи через cgo char**?
Ivan
нужно из сишки салоцированую строку вернуть
Евгений
Вот это наброс на вентилятор
https://go.googlesource.com/proposal/+/master/design/go2draft-generics-overview.md
A
Чем вам включение типов не наследование
A
A
Я же правильно понимаю, предок должен быть осведомлён о потомке, и мочь вызывать его методы и всякое такое?
Anonymous
Anonymous
что-то навскидку лучше не нагуглилось, а сам не могу что-то адекватное придумать)
A
arkady
коллеги, скажите пожалуйста, какие инструменты мне нужно знать, чтобы претендовать на должность мидла?
Евгений
Roman
Daniel
вообще - пока даже задачу, в которой генерики были бы уместны (кроме коллекций) никто не сформулировал
Daniel
последняя попытка была про тип-сумму, а не про генерики
Roman
Daniel
да вот я не очень понимаю, зачем они нужны именно в генерализованном виде
Daniel
это же про code reuse
Roman
самое главное уже завезли, т.е. версионирование. С ошибками могу жить, со стандартныим генериками пока-что тоже
Roman
было бы конечно прикольно если они придумали языковую конструкцию для сокращения кода обработки ошибок, но я чёт пока это вообще не представляю, как это возможно и возможно ли вообще
Мерль
да вот я не очень понимаю, зачем они нужны именно в генерализованном виде
пока они не нужны вообще — то конечно не нужны и в генерализованном типе
вы их не видите, потому что на Go их никто не пишет почти, кроме некоторых фанатиков
а как только нужны какие-нибудь графы направленные, где у тебя ноды могут быть ещё и разного типа, так у тебя Go превращается в мешанину кастов, тайп свитчей и пустых интерфейсов
да и просто можно поглядеть на такие прекрасные конструкции как map[string]interface{} на каждом месте, где надо работать с динамическими данными, и которые взрывается потому что где-то в глубине вместо int кто-то положил json.Number и ты не поймёшь в чём дело пока не пересмотришь большую часть кода приложения глазами
а писать самому под конкретный тип бывает нетривиальной задачей в случае некоторых алгоритмов
я понимаю что для CRUD это не нужно, но невозможность писать такие вещи просто и приятно как раз и ограничивает Go в CRUD
Мерль
Мерль
и нет, обычно авторы пакетов с нужными алгоритмами никакими кодогенераторами не заморачиваются
Мерль
ну а вообще, то конечно дженерики и типы суммы не нужны, так же как и непустые интерфейсы
нет ничего такого, чего нельзя было бы сделать с помощью interface{}, switch и рефлексии
вопрос в том, сколько убитых нервов и часов работы будет стоить вам отладка всего этого недо-питона
Мерль
ну и кто смотрел на kubernetes с его рантайм дженериками — тот больше в цирке не смеётся, а плачет
Roman
Daniel
Daniel
но
Daniel
не будет ли лекарство горше болезни?
Daniel
я, в общем, очень ценю возможность легко понять, где же именно определено поведение того объекта, на который я сейчас гляжу
Daniel
а если нашим уважаемым коллегам дать в руки генерики - они же понапишут такой херни, что будет у нас и вправду новый php
Daniel
Мерль
Daniel
а вот с этим плохо
Daniel
Daniel
по большей части этот код все же генерируется
Daniel
если глянуть на тот код, который генерирует protobuf - все недостатки go как языка сразу видны
Мерль
Daniel
но радость в том, что можно и не глядеть :)
Мерль
ИМХО в го нету дженериков-на-кодогенераторах и вообще нормальной общепринятой инфраструктуры кодогенераторов потому что, давайте согласимся, при всей офигенности изкоробочных пакетов парсинга кода, писать кодогенераторы довольно сложно, громоздко и ненадёжно
а какого-то эталонного тулинга для этого нет
Мерль
ну кроме Stringer )
Daniel
я знаю, как написать генерики на кодогенераторе
Daniel
я написал несколько кодогенераторов в своей жизни, как из yaml, так и из кода с тегами
Daniel
я не написал своего генерик-генератора потому, что я очень смутно представляю себе, зачем нужны генерики
Pawel
Мерль
Pawel
Мерль
собственно ассемблер тоже прекрасный язык, если у тебя есть время на пару месяцев трассировки
Anonymous
Мерль
Pawel
Anonymous
Anonymous
Зачем нам самолеты, если есть велосипеды
Pawel
просто оно не так часто надо
Мерль
скоро мы научим писать компилятор тесты за нас, чтобы он проверял что мы пихаем в interface{}
Мерль
я даже придумал специальный синтаксис подсказок для компилятора чтобы подсказывать типы
Anonymous
Мерль
смотрите
var ints = make(Set<int>)
Мерль
удобно!
Мерль
не то что ваши дженерики
Pawel
ну и для своего обощённого кода я научился таки писать кодогенераторы, сбасибо Александру Валялкину с его quicktemplate. Оч полезный скил
Алексей
Наконец-то более-менее нормальный проброс ошибок будет!!!!
Алексей
Это куда важнее каких-то там дженериков
Алексей
Many people have concluded (incorrectly) that the Go team’s position is “Go will never have generics.”
Да и дженерики вдруг оказались не так уж ненужны.
Vladimir
Michael
Ссылки на статьи выше есть
Vladimir
Ну и хорошо
саша
Ну что, все уже переобулись?