саша
Pawel
понял, спасибо
если бы вы видили в какой говнокод превращается работа со значениями таких типов на практике - развесистый паттернматчинг, ужасы с отбивкой пробелами при рефакториге, десяток враперов для простого инта и т.д. -, вы бы не благодарили
Alexander
на вики пишут, что это Дизъюнктное объединение, то есть общая часть отбрасывается и остается то, чего нет в первой + то , чего нет во второй?
саша
конечные автоматы - тоже хороший пример
саша
Ещё один канонический пример - AST
Alexander
Alexander
саша
Anonymous
Anonymous
Pawel
обычные проверки в сишном стиле вкупе с операторами if break return читаются на много проще чем паттерн матчинг типов сум. ФП в принципе не может ничего упростить - строго только усложнить. И для задач его применяют соответствующих
Vladislav
Pawel
нет, не видел. А что не так?
саша
Vladislav
Ну так посмотрите. Там объявление интерфейса с приватным методом, который ничего не делает. Потом на нужных типах эти методы «реализуют». И все для того чтобы в качестве аргумента можно было передать только конечное множество типов. А внутри касты интерфейсов к типам.
саша
саша
Даже в сишке это делается не так костыльно
Vladislav
А в сочетании с утиной типизацией вообще невозможно найти все типы которые можно передать внутрь.
Anonymous
Anonymous
Daniel
Pawel
Vladimir
Vladimir
Свитчем?? И кастом значения из "* void*?
Daniel
погодите
Daniel
вам по-любому нужен там switch или пачка if
Pawel
Вот именно. Можно подумать паттернамтчинг чем то лучше
Daniel
потому как параметр вы получили, но на разные параметры вам нужна разная обработка, правда?
саша
Vladimir
Vladimir
Так если тот же свитч, только безопасный, в чём не читабельность?
Pawel
Я так регулярно делаю в случаях работы с деревьями с разнотипными нодами. Switch, даункаст из интрфейса (не пустого). Ни разу проблем не возникало. Никакие стат. гарантии на фиг не впёрлись. Проблема высасона из пальца
Daniel
но вот то, как именно реализуется этот самый тип-сумма в го - это мерзко. я вот только что (позавчера) нарисовал сообщения, которые у меня уходят в канал, и каждое реализует пустой метод IAmCommand
Michael
саша
Vladimir
Vladimir
Но ладно, раз стат гарантии не нужны - тут все понятно, зачем тогда вообще брать язык компилируемый? На питончике ж быстрее кодится, ещё меньше гарантий
Daniel
коллега, хватит вот этого, а?
Daniel
нет, на питончике не быстрее
Daniel
и нет, не всем нужны эти самые гарантии
Pawel
Daniel
вожно понимать, зачем нам вообще нужна статическая строгая типизация
Daniel
вот вам - зачем?
Vladimir
вот вам - зачем?
Сильная типизация позволяет часть контрактов протолкнуть на уровень компилятора
Pawel
Если вы меня спрашиваете - то мне проще код читать со стат. гарантиями.
Daniel
Daniel
саша
это общие слишком слова
тогда
> Сильная типизация позволяет часть контрактов протолкнуть на уровень компилятора
благодаря этому мне проще писать, читать и поддерживать код, т.к. контракты описанные в документации устаревают(если они вообще описаны), а без контрактов в языке компилятор просто не скомпилирует код
Daniel
понятно
Daniel
так вот
Daniel
существует масса способов написать херню
Daniel
и, к сожалению, 90% херни появляются на этапе модификации ПО
Vladimir
это самоцель?
Ну вообще это промежуточный уровень. Дальше логика такая же как с любыми контрактами - код присказуемее, легче расширять, легче интегрировать.
саша
Daniel
и статическая строгая - она часть этой херни написать не позволяет
Daniel
самую простую херню она останавливает
Daniel
но - останавливает
Daniel
путем - та-дам - УСЛОЖНЕНИЯ написания кода
Daniel
не облегчения, и увеличения удобста
Daniel
усложнения самого процесса создания ПО
Daniel
ы?
Daniel
всех 100%
Vladimir
Ну смотри, кто-то написал вебырецмворк, у которого есть метод "ендпоинт" с внутренними контрактами, но эти контракты не покрыты, он написал его очень быстро, но при этом все юзера страдают. Ну и такое же представь, только альтернативный вариант.
Daniel
и, в общем, похер уже, как именно выглядит конкретный синтаксис конкретного языка
саша
всех 100%
Но строгая статическая типизация упрощает написание и рефакторинг кода, когда кода становится много
Daniel
совместимую херню при этом можно продолжать писать, ни что не мешает
Pawel
Если конмпелятор гарантирует целостность switch-а по всем веткам - это хорошо, Но в Го он всё равно не гарантирует, даже в случае IAmComand. Не сказал бы я что это вызывает сильную боль
Daniel
и?
саша
и?
Если бы не компилятор, который подсказал мне где и что не так, то я бы потратил на это значительно больше времени, отлавливая баги в рантайме.