Алексей
И компиляция в нативный код
Алексей
Конечно надо платить, за GC тоже надо платить, за интерфейсы тоже надо платить какие-то копейки производительности.
Алексей
Вот только за оператор проброс ошибки вверх по стеку и собственно замену копипасты одним-двумя символами платить то как раз не надо
aadz
GC кстати можно выключить переменной окружения, что очень хорошо для недолгоиграющих приложений
Алексей
Причём самое обидное, что для меня это пожалуй единственный критичный недостаток Go
aadz
нет в жизни счастья :)
Алексей
Я и без дженериков смогу обойтись, без перегрузки функций
aadz
Что ж поделаешь?
Алексей
ничего не поделаешь, вот в чём проблема
Алексей
я бы и рад перейти на язык аналогичный Go, но избавленный от такого недостатка работы с ошибками, да вот только нет такого
aadz
это не проблема. Это просто то, как все есть. Еще будда Шакьямуни об этом говорил :)
aadz
2500 лет назад :)
Алексей
так и есть, пока что
aadz
угу
Алексей
но надеюсь у Go скоро появятся конкуренты в его области с подобной ему моделью горутин
aadz
и этих конкурентов тут же купит себе микрософт
саша
саша
но гугл их не пиарил и бабки в них не вкладывал
Алексей
ну вот да
Алексей
причём crystal же вроде довольно новый, а D уже вроде кучу лет существует и вообще хотел стать убийцей C++
Алексей
и вот у меня почему то такое ощущение, что и Go встал бы в ряд этих не очень популярных языков, если бы не гугл
саша
Алексей
он же вроде там опциональный?
Алексей
или я ошибаюсь?
Алексей
а, понятно
Алексей
тогда действительно очевидна причина провала на поприще замены крестам
🏁Александр
каким крестам?
Алексей
🏁Александр
а тфу
Pawel
вот этот плачь Ярославны про ужасы проверок if err != nil в исполнеии юзера @a_alexei_0 я слышу регулярно от начинающих в Го оладухов с низким левелем. Заканчивается всё одинаково. Оладух начинает пропускать ошибки, рано или поздно ревьюер и checkerr его не одёрнут, в проде код ломается, оладух получает пиздюлей и осознаёт что способ обработки ошибок в голанге не таку ж и плох, плач прекращается
Vladimir
Алексей
Алексей
но вот опять же в логгер ошибки летят обычно на самой вершине стека, а значит надо руками пробрасывать их наверх
Алексей
Алексей
точнее даже так: для того, чтобы вернуть ошибку из функции неужно сделать больше телодвижений, чем просто заглушить ошибку
Vladimir
Vladimir
func foo() (res []byte, error) {
<...>
if err != nil {
return nil, err
}
...
}чо тут сложного?
Алексей
в каком месте?
val, err := something()
if er != nil {
return nil, err
}
vs
val, _ := something()
Vladimir
Vladimir
ужас та какой
Алексей
не сложно вообще
Алексей
но код раздувается
Алексей
появляется код, который вообще не несёт смысловой нагрузки
Алексей
Причём самое интересное то, что пожалуй Go - единственный из популярных языков в котором работа с ошибками столь топорно сделана.
.
Чем она плоха?
.
Я вот вообще не понимаю что вам не нравится в обработке ошибок в Го
Aleksei
когда ж надоест-то про обработку ошибок одно и то же обсуждать? у того, кого не устраивает обработка ошибок в го, есть три пути - 1) в команду девелоперов го и там всё менять, 2) понять, простить, использовать 3) выкинуть и забыть как страшный сон. четвертый путь - нытье в чатике - наиболее бессмысленный.
Алексей
aadz
Это все через стек вызовов передается, если я ничего не путаю. А это не сильно напряжно.
Алексей
причём тут стек, я вообще не про это сейчас, я про сам код на Go
и я не писал, что вернуть ошибку из функции как-то очень сложно, я писал про то, что проще заглушить и не вернуть, чем вернуть, и кода меньше будет
aadz
В общем, как и со всеми языками. Кто умеет программировать - пользуется, Остальные ноют по сторонам.
Алексей
aadz
такое чувство, словно сегодня все же пятница...
🏁Александр
https://play.golang.org/p/6Ovq6C2O6Wo
🏁Александр
как вам такое дерьмо?
🏁Александр
🙂
aadz
парни, о чем вы спорите?
Евгений
Так есть же несколько костыльно-человеческих реализаций через iota , кодогенерацию и пр
aadz
давайте лучше готовиться к пятничным баталиям про голубого сурка! Патриотично это или нет? Как вобще можно писать на таком языке, попирающем скрепы казацкой и КГБ-шной жизни?
Алексей
Алексей
Я сейчас серьёзно спрашиваю.
Je
Плюсую
aadz
посреди флуда серьезно спрашивать бесполезно
Viacheslav!
Можно ли в t.Execute передать вторым параметров не структуру а просто key:value?
t, _ := template.ParseFiles(tempDir+"adminka/index.html")
t.Execute(w, &page{Title: "adminka", Msg: "test2"})
Viacheslav!
если у мнея много страниц с разными полями - надо для каждой структуру делать со своим набором ключей получается?
aadz
структуру передать нельзя, только указатель. Тернарного условного оператора тоже нет
Viacheslav!
тоесть вместо указателя можно сразу написать {"title": 'ffff'j, "Msg": "fff"} вот так как нибуь можно?
aadz
ты пробовал так написать?
Алексей
aadz
Алексей
Viacheslav!
ты пробовал так написать?
t.Execute(w, {Title: "adminka", Msg: "test2"})
syntax error: missing operand