aadz
и не тот компилятор, и не те цели
саша
И это плохо
Чем? Дока протухает, а необходимость лезть в реализацию снижает читаемость
саша
К тому же компилятор не может проверить код на то, что все контракты исполнены
Alexey
Не будешь! Просто учи SQL
Это потому что все ORM в Go не очень? Или вы фанат голого SQL. Мне как-то не очень хочется отказываться от уровня абстракции
კაცი
🏳️ Phil
Чем? Дока протухает, а необходимость лезть в реализацию снижает читаемость
Если дока протухает, то ничего не поможет. Читаемость кода как раз чнижают абстракции
aadz
Это потому что все ORM в Go не очень? Или вы фанат голого SQL. Мне как-то не очень хочется отказываться от уровня абстракции
все ORM в Go не очень. Если ты не искусственный интеллект. И все эти ORM написаны не искусственым интеллектом. :(
🏳️ Phil
Даже плохо написанную простыню читать легче, чем средненькое абстрагирование
саша
Если дока протухает, то ничего не поможет. Читаемость кода как раз чнижают абстракции
Читаемость кода снижают текучие абстракции и оверинжиниринг
Алексей
Дженерики, ADT и тайпклассы позволяют писать код в котором большинство контрактов выражены в сигнатурах, вместо того, чтобы искать их в доке или реализации
Большинство, но далеко не все. Тот же хаскель к примеру, насколько я знаю, не проверяет выполнение всяких монадических и функторных законов.
aadz
Да и не только в Go
Andrei 🦉
Я буду рад если посоветуете другую ORM. Правда вы возможно скажете что ORM вовсе не нужно использовать. Но я бы хотел делать миграции на основе описанных структур и операции над БД совершать тоже через модели
орм норм, но в го советую искать орм на кодогенерации, рефлексия под капотом зло, или использовать билдеры запросов типа https://github.com/Masterminds/squirrel
саша
Даже плохо написанную простыню читать легче, чем средненькое абстрагирование
Субъективное, люди испокон веков используют абстракции для борьбы со сложностью. Читаемость снижают только те не текущие абстракции, которые вы не понимаете
саша
Иначе бы вы писали на ассемблере, ибо там нет абстракций
aadz
Когда смотришь, какие запросы генерит тот же Django ORM - просто стыднор становится. Django ORM на Python тоже не роботы делали :)
Алексей
Причём у многих используемых языков не так уж и много абстракций.
саша
Без абстракций мы бы так и сидели в пещерах, а еду бы добыли охотой
Антон
Большинство, но далеко не все. Тот же хаскель к примеру, насколько я знаю, не проверяет выполнение всяких монадических и функторных законов.
Это да, но можно валидировать внешней системой доказательств типа Coq + написать property для quickcheck тестов
саша
А ещё знаете ли вы, что она достигнута уже очень давно
aadz
да, Сингулярность - это в мозгу, когда читаешь Манускрипт мертвой птицы. А в жизнь из это й сингулярности ничего не выходит.
саша
Нет ни одного человека, способного полностью понять работу всех человеческих технологий. Мы только благодаря абстракциям и идём вперед технически
aadz
А уже пятница?
Алексей
Вообще надо бы вернуться к вопросу о том, достаточное ли количество и уровень абстракций в Go. На мой взгляд - нет.
aadz
нет, не пятница, а то я бы и не то сказал :)
саша
Вообще надо бы вернуться к вопросу о том, достаточное ли количество и уровень абстракций в Go. На мой взгляд - нет.
Очевидно, что нет. Более того, в го практически невозможна композиция абстракций
саша
Хотя и в ООП с ней сложно ибо неконтролируемая мутабельность
aadz
А программирование это не "композиция абстракций"?
саша
А программирование это не "композиция абстракций"?
В том числе. В го программирование - это по большей части описание конкретных алгоритмов
саша
Используя встроенные абстракции
aadz
вот и хорошо!
Vadim
Думаю, корректнее сравнивать абстракции мира, и функции либ, которые программист может вызывать, вообще не понимая, что творится под капотом.
Vadim
"Вообще не понимая" и "понимая достаточно, чтобы пользоваться" - разные вещи
В реальном мире, мы тоже понимаем вещи достаточно, чтобы пользоваться, а не вообще не понимая.
саша
А вообще считаю данный спор бессмысленным, если никто из местных противников дженериков ничего сложнее хеллоуворлда на хаскеле или хотя бы расте не писал.
саша
Ибо сложно понять зачем нужен инструмент, когда ты им по сути нормально и не пользовался
Алексей
причём тут хаскель?
Алексей
хаскель слишком отличается от Go чтобы нормально сравнивать
Алексей
я вообще в плане дженериков люблю сравнивать Go и Java, потому что Go тупо повторяет путь Java
саша
причём тут хаскель?
Без хаскеля сложно понять что такое нормальные дженерики, ADT, абстракции
Алексей
там тоже изначально не было дженериков и был Object (аналог interface{} из Go)
Alexander
ох уж эти женерики. го, кстати, путь явы не повторяет) никто не позиционировал его как язык для микроволновок и для веб-апплетов. а джявка начиналась именно с этого
Mike
Без хаскеля сложно понять что такое нормальные дженерики, ADT, абстракции
может без хаскеля еще по русски говорить и дышать сложно?
Алексей
я про путь в плане дженериков сейчас
Алексей
в джаве была такая же ситуация с их отсутствием как сейчас в Go
Alexander
а появятся же, не? мне казалось что в 2.0 анонсировали
саша
Зачем ADT тащить в императивный язык?
Чтобы не кастить интерфейс к хуй пойми чему, а доставать значение из типа суммы паттерн матчингом, не?
Алексей
Чтобы не кастить интерфейс к хуй пойми чему, а доставать значение из типа суммы паттерн матчингом, не?
Так у меня ща бомбить начинает. Такой вопрос на адекватность: на кой хер превращать Go в хаскель?
Алексей
Причём я не против дженериков, а всеми руками за.
саша
Алексей
я вот что-то сильно сомневаюсь в пользе адт для go
Алексей
очень сильно сомневаюсь
Алексей
и удастся ли их вообще нормально впихнуть
Алексей
если дженерики нормально до сих пор впихнуть не могут
саша
я вот что-то сильно сомневаюсь в пользе адт для go
Да хотя бы нормально ошибки можно будет возвращать
𝚄𝚜𝚖𝚊𝚗
будет Go++ )))))
Алексей
Да что там дженерики, если не прдиётся больше писать каждый раз if err != nil { return err }, то это уже будет прогресс огромный.
саша
Добавить нормальные кортежи и типы суммы
саша
И все
aadz
О! Кстати Go++ это будет хороший вариант при условии хорошего пиара
𝚄𝚜𝚖𝚊𝚗
aadz
куча народу на Go++ заработает кучу денежек :)
Заур
О Боже, неужели хипишь про дженерики до сих пор идёт
aadz
Сегодня с утра читал рекламный прост на хабре, про некий цветок Linux, где нет ничего лишнего. Даже systemd нет. Лишнее - это работа! Но статья хорошая
саша
можно пример кода?
(a, b, c) - кортеж type SType enum { Int int String string Nothing } s := SType.Int(5) switch s { case SType.Int(i): ... case SType.String(str): ... case SType.Nothing: ... }
aadz
жяль, что не все понимают, что лишнее (не нужное) - это тоже тяжелая работа :(