Алексей
И компиляция в нативный код
Constantine️
Мне вот он нужен для моего проекта, потому что у него есть замечательные и нужные мне горутины
ночью социалки парсил, каунтеры шар собирал, за час порядка 100к урлов за нефиг делать без оптимизации воркеров (нужно было срочно)
aadz
Мне вот он нужен для моего проекта, потому что у него есть замечательные и нужные мне горутины
ну и не ной тогдва :) Не ты же компилятор писал, а люди, которые знают, что за все надо платить.
Алексей
Конечно надо платить, за GC тоже надо платить, за интерфейсы тоже надо платить какие-то копейки производительности.
Алексей
Вот только за оператор проброс ошибки вверх по стеку и собственно замену копипасты одним-двумя символами платить то как раз не надо
aadz
GC кстати можно выключить переменной окружения, что очень хорошо для недолгоиграющих приложений
Алексей
Причём самое обидное, что для меня это пожалуй единственный критичный недостаток Go
aadz
нет в жизни счастья :)
Алексей
Я и без дженериков смогу обойтись, без перегрузки функций
aadz
Что ж поделаешь?
Алексей
ничего не поделаешь, вот в чём проблема
Алексей
я бы и рад перейти на язык аналогичный Go, но избавленный от такого недостатка работы с ошибками, да вот только нет такого
aadz
это не проблема. Это просто то, как все есть. Еще будда Шакьямуни об этом говорил :)
aadz
2500 лет назад :)
Алексей
так и есть, пока что
aadz
угу
Алексей
но надеюсь у Go скоро появятся конкуренты в его области с подобной ему моделью горутин
aadz
и этих конкурентов тут же купит себе микрософт
саша
но гугл их не пиарил и бабки в них не вкладывал
Алексей
ну вот да
Алексей
причём crystal же вроде довольно новый, а D уже вроде кучу лет существует и вообще хотел стать убийцей C++
Алексей
и вот у меня почему то такое ощущение, что и Go встал бы в ряд этих не очень популярных языков, если бы не гугл
Алексей
он же вроде там опциональный?
Алексей
или я ошибаюсь?
саша
он же вроде там опциональный?
ага, а вместе с GC опциональна стандартная библиотека и все сторонние пакеты
Алексей
а, понятно
Алексей
тогда действительно очевидна причина провала на поприще замены крестам
🏁Александр
каким крестам?
🏁Александр
а тфу
Pawel
вот этот плачь Ярославны про ужасы проверок if err != nil в исполнеии юзера @a_alexei_0 я слышу регулярно от начинающих в Го оладухов с низким левелем. Заканчивается всё одинаково. Оладух начинает пропускать ошибки, рано или поздно ревьюер и checkerr его не одёрнут, в проде код ломается, оладух получает пиздюлей и осознаёт что способ обработки ошибок в голанге не таку ж и плох, плач прекращается
Алексей
но вот опять же в логгер ошибки летят обычно на самой вершине стека, а значит надо руками пробрасывать их наверх
Алексей
точнее даже так: для того, чтобы вернуть ошибку из функции неужно сделать больше телодвижений, чем просто заглушить ошибку
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
ужас та какой
Алексей
не сложно вообще
Алексей
но код раздувается
Алексей
появляется код, который вообще не несёт смысловой нагрузки
Алексей
Причём самое интересное то, что пожалуй Go - единственный из популярных языков в котором работа с ошибками столь топорно сделана.
.
Чем она плоха?
.
Я вот вообще не понимаю что вам не нравится в обработке ошибок в Го
Aleksei
когда ж надоест-то про обработку ошибок одно и то же обсуждать? у того, кого не устраивает обработка ошибок в го, есть три пути - 1) в команду девелоперов го и там всё менять, 2) понять, простить, использовать 3) выкинуть и забыть как страшный сон. четвертый путь - нытье в чатике - наиболее бессмысленный.
Алексей
aadz
точнее даже так: для того, чтобы вернуть ошибку из функции неужно сделать больше телодвижений, чем просто заглушить ошибку
> точнее даже так: для того, чтобы вернуть ошибку из функции неужно сделать больше телодвижений, чем просто заглушить ошибку Нет не правда. Чтобы вернуть ошибку из функции надо не так уж много
aadz
Это все через стек вызовов передается, если я ничего не путаю. А это не сильно напряжно.
Алексей
причём тут стек, я вообще не про это сейчас, я про сам код на Go и я не писал, что вернуть ошибку из функции как-то очень сложно, я писал про то, что проще заглушить и не вернуть, чем вернуть, и кода меньше будет
aadz
В общем, как и со всеми языками. Кто умеет программировать - пользуется, Остальные ноют по сторонам.
Алексей
В общем, как и со всеми языками. Кто умеет программировать - пользуется, Остальные ноют по сторонам.
Опять не в тему сообщение вообще. Тут уметь/не уметь вообще не причём. Совершенно.
aadz
такое чувство, словно сегодня все же пятница...
🏁Александр
https://play.golang.org/p/6Ovq6C2O6Wo
🏁Александр
как вам такое дерьмо?
🏁Александр
🙂
Pawel
но вот опять же в логгер ошибки летят обычно на самой вершине стека, а значит надо руками пробрасывать их наверх
это ещё зачем? если обработка ошибки сводится к тому чтобы её залоггировать, это делается на месте без пробрасывания на верх
Pawel
Но ты прав в одном - в go пропустить ошибки легче лёгкого.
в го пропустить ошибки можно только по злому умыслу. Это надо постараться чтобы одновременно обмануть сперва checkerr потом ещё и ревьюера.
aadz
как вам такое дерьмо?
нормальный говнокод, как у всех :)
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
ты пробовал так написать?
Pawel
Всё таки было бы здорово узнать в какой компании ты работаешь, чтобы никогда-никогда туда не попадать.
ты каждый раз приходишь сюда чтобы обсасывать одни и те же глупые и ни кому не интересные темы. При чём делаешь это настолько занудно и уныло, что я бы на месте админов давно забанил тебя нафиг
Viacheslav!
ты пробовал так написать?
t.Execute(w, {Title: "adminka", Msg: "test2"}) syntax error: missing operand