Крылатый
За кого-то
Vasily
Я, кстати, поэтому на f# и перешёл. Код проще получается
Vasily
По совокупности, если монадами не упарываться
Shub
Я, кстати, поэтому на f# и перешёл. Код проще получается
хозяйке на заметку: если добровольно ограничить себя приблизительно 30% языка, то кода получается больше и он получается сложнее
Shub
что особенно смешно, когда в компании работают зубры типа Царпалиса. Энрико или Рубена, активно агитирующие за весь объем языка и ежедневно демонстрирующих преимущества ООП части эфшарпа
Vasily
У меня с wpf в свое время было интересно
Vasily
Я когда только начинал на нем, везде пихал valueconverter
Vasily
Потом пришел к тому, что он нужен в очень редких случаях
Vasily
На f# я был очарован ce, помню. К счастью, это прошло
Андрей
я с удовольствием послушаю детальные объяснения, почему никак невозможно обойтись без тайпклассов, потому что с моей точки зрения они дают прирост менее десятка процентов относительно уже существующих средств языков.
Можно обойтись. Без генериков можно, без исключений можно, без типов совсем можно. А можно не выпендриваться и освободить народ от писания List.map, Seq.map, Option.map. Один раз написать toJson и не копипейстить её сто раз для каждого божьего рекорда. Вот хотя бы из-за этого сто пудов мне нужны тайпклассы. Распробовал прелесть раз и не хочется отказываться от неё только потому что есть в языке другие конструкции. Ну слабый отмазон это, никакой просто
Андрей
конечно про статическую, про намек на самый распространенный язык в мире. Вот в нем можно ревьюить в 4 утра просто отлично. Нет типов - нет багов, так ведь?
Anonymous
Но по-моему нынче на питоне можно аннотировать тип
Anonymous
Да и ассерты всякие тоже часто встречаются.
Bonart
Можно обойтись вообще брейнфаком. Тоже Тьюринг-полный.
Doge
из того, что я знаю про тайпклассы, следует, что есть крайне малое количество ситуаций, где тайпклассы отличаются от интерфейсов и перегрузки операторов
Ну ключевое отличие в том, что ты не можешь реализовать произвольный интерфейс для типа, которым не владеешь. (Понятное дело, что есть адаптеры, но ими не очень удобно пользоваться) А с тайпклассами таких проблем нет. Ну и вместе с тайпклассами обычно идёт механизм их автоматического вывода, что сильно бойлерплейт сокращает.
Bonart
Например, для IP-адресов не определена операция сравнения на больше-меньше
Bonart
С помощью классов типов ее можно добавить
Андрей
Всего два слова: type extensions
List.sort ipAddresses, и приехали
Doge
Всего два слова: type extensions
Проблема в том, что интерфейс через type extensions реализовать ты не можешь
Roman
Тут srtp же на помощь придет
Extensions он не умеет. Пока.
Roman
Там уже есть пр в процессе, но он даже не помечен как vnext
Roman
Я про него и говорю
Тогда главная интрига - сколько времени на него уйдет)
Doge
Тут srtp же на помощь придет
Когда доделают. Ну и тогда оно все равно скорее всего ощутимо слабее будет, т.к. не уверен, что тогда будут возможны вещи в духе (где инстанс тайпкласса требует существования другого инстанса): instance (Show a) => Show [a] where show = ... Плюс надо будет посмотреть возможно ли будет MPTC и т.п. расширения выразить. К тому же для type extensions вряд ли хоть когда-то будет доступен автоматический вывод тайпклассов, что достаточно важно для ux разработчика
Vasily
А инлайн type extension можно же будет описать?
Вот насчет этого не уверен.
Doge
Вот насчет этого не уверен.
Тогда это скорее всего как раз помешает сделать то, о чем я писал, а это важная часть тайпклассов.
Vasily
Ну сценарий вложенных констрейнтов можно сделать, по идее
Vasily
Правда, все констрейнты должны быть заданы в одном месте
Андрей
Ну сценарий вложенных констрейнтов можно сделать, по идее
А потом надо довести констрейнты до ума и назвать их тайпклассами ))
Vasily
Ваще, канеш, печалит приверженность людей определенному набору терминов, например, к ацетилсалициловой кислоте вместо аспирина
Андрей
лично меня, лично меня, больше печалит приверженность народа к определенному набору инструментов - кровопускание вместо пенициллина. И тут тайпкласс всего лишь один из длинного списка. Но как ни печалься, зерно в этом есть, целую армию быдлокодеров надо чем-то занять, чтоб получить валуи уже сегодня, а не когда они узнают, что занимались все это время херней, или даже никогда так и не узнают.
Диёр
"ну да, вам нужно развитие, а бизнесу нужен результат и он нужен сейчас": наш тимлид
Диёр
Roman
"ну да, вам нужно развитие, а бизнесу нужен результат и он нужен сейчас": наш тимлид
Ну вообще то кто за музыку платит тот и девушку танцует. Деньги платит бизнес и им нужен результат а не супер навороченый код потом
Диёр
Ну это понятно, просто это так звучало тогда будто я должен там всем наверху благодарности отсыпать, хотя казалось бы почему этот их бизнес вообще должен меня волновать
Roman
Ну это понятно, просто это так звучало тогда будто я должен там всем наверху благодарности отсыпать, хотя казалось бы почему этот их бизнес вообще должен меня волновать
Очень даже должен. ))) Благодарности отсыпать конечно не надо, но понимать текущую ситуацию и потребности бизнеса вполне себе.
Диёр
Ну я пилю фичи, они мне деньги отсыпают пару раз в месяц. И там явно не те условия чтобы я интересовался что у них там за ситуация и какие потребности
Диёр
Ну, бывает
Диёр
Мне то что?
Vasily
Ну вот у меня, например, на том же c# скорость разработки была бы скорее всего в разы ниже
Dr. Friedrich
Вообще 90% фич именно такие :)
Roman
Вообще 90% фич именно такие :)
У нас нет. Некоторые фичи вполне себе в денежном отношении можно выразить
Диёр
У нас на прошлом проекте многие фичи были не нужны уже на момент постановки тз
Vasily
Ну и вместо условных n человек потребовалось бы нанять 3xN
Диёр
А зачем делали?
Как в армии
Roman
Как в армии
Денег много?
Диёр
Ну когда как
Диёр
Бывало что просто один манагер не согласовал фичу с другим и этот другой о фиче узнал только перед релизом и выкинул её
Диёр
Или что пилим спринт, а потом инвесторы свежую аналитику получили и мы меняем направление
Диёр
Ну так на это я не жалуюсь, просто к вопросу о выкинутых фичах
Диёр
Ну и даже вот условно питон кто-нибудь захочет притянуть там первый контраргумент будет "программисты дорогие и долго искать". Если насчёт питона первые слова звучат так, то остальное даже спрашивать не хочется.
Bonart
лично меня, лично меня, больше печалит приверженность народа к определенному набору инструментов - кровопускание вместо пенициллина. И тут тайпкласс всего лишь один из длинного списка. Но как ни печалься, зерно в этом есть, целую армию быдлокодеров надо чем-то занять, чтоб получить валуи уже сегодня, а не когда они узнают, что занимались все это время херней, или даже никогда так и не узнают.
Ну вот не всегда оно так. До тех же тайпклассов у меня дошел разработчик, который слова такого не знал, но требования сформировал совершенно определенные. Я доводил до ума констрейнты и генерики с параметрами-структурами, добивался генерации хорошего кода и воевал с выводом типов. А потом посмотрел что получилось и понял что у этого есть имя и я его знаю - классы типов.
Bonart
Класс типов на мой взгляд удачный термин
Roman
@omgszer берите Котлин. Скала походу мертвый язык
Roman
Hog
Я бы не стал такие иллюстрации использовать. К тому же там К, а не С.
Hog
Нужно всё-таки ямб от хорея отличать!