gsomix
https://twitter.com/jdegoes/status/1025532237482270725
gsomix
https://twitter.com/jdegoes/status/1025532237482270725
ФПшники в поисках ФП.
Doge
Ну это скалазшники.
Doge
Было давно предсказуемо.
Doge
Коты и их экосистема оказалась лучше в конкурентной борьбе.
Doge
Да и De Goes известен своей любовью к апокалиптичным предсказаниям, не настолько как Тони Моррис, конечно, но всё равно.
Vladislav
После этого на случайных данных или действиях можно проверить соответствие актуального кода и модели.
Ммм, ну это действительно если у тебя есть тупая реализация алгоритма и супер-классная - удобно, наверно
Vladislav
ФПшники в поисках ФП.
Рим пал, люди разбежались?
gsomix
Для чего угодно.
Doge
Рим пал, люди разбежались?
Скорее Карфаген наконец разрушился. Насколько я понял всю эту историю, дело было так: - в скала сообществе была известная ФП библиотека scalaz - в её создании участвовало куча хаскеллистов - среди них был Тони Моррис, товарищ со здравыми идеями, но полным неумением сдерживаться в выражениях - он не стесяясь ругал новичков в scala и scalaz irc каналах, устраивал какие-то разборки и вёл себя достаточно токсично - в какой-то момент группе людей из scalaz это надоело и они попробовали устроить hostile takeover библиотеки - у них это не вышло, был большой скандал и т.д. - в итоге они сделали альтернативную версию scalaz (написанную с нуля и т.д. и т.п.) - cats (и другие проекты typelevel) - подошли к её созданию достаточно грамотно, сделали внятную документацию, не пугали новичков и т.д. - в итоге cats экосистема стала быстро расти и потихоньку начала становится де факто ФП стандартном для новых проектов - scalaz наоборот стало терять популярность и лишилось народа (который вместе с и после Тони Морриса разбежались) - это ещё осложнилось тем, что у scalaz с большим трудом шла разработка новой версии и были некоторые спорные/гениальные решения (ZIO) Я непосредственым участником этих событий не был, информацию собирал считайте по крупицам, поэтому в каких-то вещах могу ошибаться или иметь неправильный взгляд.
Doge
Тут ещё надо добавить, что в scalaz были некоторые спорные решения типа особой любви к кастомным операторо-подобным именованиям. Самый мой любимый пример этого оттуда, это местный Either из 7й версии scalaz: sealed trait \/[+A, +B] { ... } private case class -\/[+A](a: A) extends (A \/ Nothing) private case class \/-[+B](b: B) extends (Nothing \/ B)
Igor
Да, диковато
Vladislav
Скорее Карфаген наконец разрушился. Насколько я понял всю эту историю, дело было так: - в скала сообществе была известная ФП библиотека scalaz - в её создании участвовало куча хаскеллистов - среди них был Тони Моррис, товарищ со здравыми идеями, но полным неумением сдерживаться в выражениях - он не стесяясь ругал новичков в scala и scalaz irc каналах, устраивал какие-то разборки и вёл себя достаточно токсично - в какой-то момент группе людей из scalaz это надоело и они попробовали устроить hostile takeover библиотеки - у них это не вышло, был большой скандал и т.д. - в итоге они сделали альтернативную версию scalaz (написанную с нуля и т.д. и т.п.) - cats (и другие проекты typelevel) - подошли к её созданию достаточно грамотно, сделали внятную документацию, не пугали новичков и т.д. - в итоге cats экосистема стала быстро расти и потихоньку начала становится де факто ФП стандартном для новых проектов - scalaz наоборот стало терять популярность и лишилось народа (который вместе с и после Тони Морриса разбежались) - это ещё осложнилось тем, что у scalaz с большим трудом шла разработка новой версии и были некоторые спорные/гениальные решения (ZIO) Я непосредственым участником этих событий не был, информацию собирал считайте по крупицам, поэтому в каких-то вещах могу ошибаться или иметь неправильный взгляд.
Драма
Doge
Драма
Ага, ещё какая. Можете найти твиттер Тони Морриса, он там до сих пор эту драму продолжает, прерываясь иногда на ругань в сторону хаскеллевского stack'а. (Кстати, кто-нибудь этот самый stack пробовал, может сказать, что в нём такого спорного?)
gsomix
Иногда мне кажется, что скала сообщество очень токсичное. Ну, то есть, тут есть токсичный я, но вот вы откройте скалачат.
Анна
итого получаем, что количество пользователей какой либо технологии может зависеть от личности её создателя или мейнтейнера? занятно
gsomix
Скала очень успешная.
Анна
приехали 🤷‍♀️
Doge
итого получаем, что количество пользователей какой либо технологии может зависеть от личности её создателя или мейнтейнера? занятно
Да, конечно. Всякие Code of Conduct'ы и тому подобное не на пустом месте возникли. Есть люди, которые не умеют себя вести профессионально в том же open source и они относительно часто встречаются.
gsomix
Ну, мне не очень нравятся программисты в среднем, особенно ФПшники. Особенно в телеге. Особенно, когда встречаешь их комменты у приличных людей в интернете. :)
gsomix
Листаешь твиттер какого-нибудь крутого чувака, высказывающего unpopular opinion, а там в комментах типичный булшит из обсуждений в телеге.
gsomix
И ники все знакомые.
Doge
Ну такие media как телега или твиттер, как раз и способствуют именно что булшиту в обсуждениях, потому что всем сторонам обычно сложно как-то развернуть свои аргументы или даже попробовать их представить, просто в силу ограничений самого медиа. Длинные и развернутые посты очень мало кто пишет что тут, что в твиттере. Т.к. в обоих случаях сложно что-то большое текстом написать в силу технических причин.
Doge
Няшность лидера как одна из составляющих успеха технологии 🤔
Скорее важно даже не быть няшным, а просто иметь банальную вежливость и уважение к собеседнику.
Doge
Везде одно и то же, IRC, почта, форумы, жж, жаббер, жуйк, блоги, твиттер, телега. :)
Ну, имхо, в standalone блогах (проще большой текст написать) обычно чуть-чуть более цивильно.
Doge
Ну, если про сами посты, а не комментарии.
gsomix
Ну, жж блоги со срачами о хаскеле...
gsomix
Золотое время.
gsomix
Правильное решение при ведении блог — отключить комменты всем и навсегда. :)
Анна
но в комментариях часто много интересного
Klei
@Kleidemos а не знаешь репозиториев с акторами, роутингом и всем таким? на аклинге
В буткампе было про роутинг и т.п. Если того уровня достаточно (я до сих пор часть не юзал на практике), то можно сюда посмотреть: https://github.com/kleidemos/akka-bootcamp/tree/akkling
Klei
Ок, я пока скорее на уровне «палкой потыкал». Надо теперь нормально понять что происходит)
Посмотрел на http://www.fsharpreactivepatterns.com, там какие-то монструозные и на мой взгляд совершенно недекомпозированные паттерны. Так что моего уровня недостаточно, чтобы с наскоку все это понять.
Dr. Friedrich
Ну, рассказывайте, как вы умудряетесь работать с кучей мониторов?
На левом экране у меня обычно ютубчик или документация, на центральном — среда разработки, на правом (ultrawide, то есть идёт за два) — браузер и отладочная консоль / окошко с тестами / чатик (в том числе вот этот вот) в зависимости от текущего состояния проекта.
Dr. Friedrich
А, ну и ещё терминалы и файловый менеджер открываю где попало, чаще всего тоже на правом мониторе (вместо браузера).
Dr. Friedrich
Но он же опенсорсит телегу, паспорт вероятно тоже
Только клиента же. Сервер закрыт, и нам остаётся только догадываться, какой там код.
Dr. Friedrich
Я готов обсуждать конкретные проблемы
Очень ущербно поддерживаются генерики, вложенные типы в XAML. Не хватает поддержки выражений, я не хочу на каждый чих писать конвертер. Хочется декларативной поддержки computed-свойств в INPC.
Dr. Friedrich
Отсюда из соответствия модели и спецификации должно следовать соответствие кода и спецификации.
О, теперь я понял этот подход, спасибо. Он видится ограниченно полезным, но весьма интересным.
Dr. Friedrich
Пиши код во viewmodel, делов-то
Ага, очень хорошо решает проблему с конвертерами (нет).
Dr. Friedrich
А про генерики, нестед классы и прочее — проблема в том, что это всё поправлено в XAML 2009, но его почему-то никак не могут внедрить :(
Dr. Friedrich
Простые выражения в XAML вместо конвертеров тоже обещали поддержать на каком-то билде, но воз и ныне там.
Vasily
Не понимаю, зачем все это в xaml тащить
Dr. Friedrich
Ну а куда конвертер тащить?
Dr. Friedrich
Не, это всё проблемы некритичные, просто иногда жить мешают.
Dr. Friedrich
Писать всякие там InvertBool2VisibilityConverter в каждом проекте очень быстро задалбывает, вот честно :(
Vasily
В своей практике я сначала писал много конвертеров, потом от них отказался в пользу переноса логики во вью модели
Dr. Friedrich
А я вот считаю, что во вьюмодели, в идеале, не должно быть view dependent штук. Чтобы одну и ту же модель можно было переиспользовать в разных (принципиально) вьюшках. И поэтому всякую вью-мишуру типа того же bool2visibility нужно делать во вью, а не во вью-модели.
Vasily
Ну делаешь в модели инвертированное свойство
Dr. Friedrich
Ну делаешь в модели инвертированное свойство
А потом конвертером сверху! Некрасиво.
Dr. Friedrich
Да и вообще, мусор. На каждое свойство делать ещё инвертированное.
gsomix
Очень ущербно поддерживаются генерики, вложенные типы в XAML. Не хватает поддержки выражений, я не хочу на каждый чих писать конвертер. Хочется декларативной поддержки computed-свойств в INPC.
Я больше страдал от отсутствия compile-check корректности XAML. Ну, и от шаблонов, которые поставлялись с зависимости от типа вьюмодели. Кто-то придумал на них всю логику отображения построить, очень неявная хрень.
gsomix
Вьюхи в коде решают все эти проблемы. Код проверяется компилятором, есть матчинг, все явное.
Dr. Friedrich
Ну, если ты тип датаконтекста указываешь, то иногда всё работает.
Dr. Friedrich
Но биндинги внутри DataGrid всё равно плоховато валидируются, например :(
gsomix
Ну, я ещё на VS2012 писал. Наверное, сейчас лучше все?
gsomix
От превьювера, конечно же, сразу пришлось отказаться.
gsomix
Ибо он не работал, так ещё и крашился. :)
gsomix
Для нормального описания правил валидации пришлось украсть и модифицировать сложный паттерн и отладки.
gsomix
А это бойлерплейт + сложность поддержки.
gsomix
Чо так сложно-то?
gsomix
inb4 сам виноват wpf xaml надо изучать у тибетских монахов десять лет тогда получится писать хелуворды
gsomix
Ага, очень хорошо решает проблему с конвертерами (нет).
Конвертер с кастомным парсером простеньких выражений.
Dr. Friedrich
gsomix
Конечно!
Dr. Friedrich
Плюс, биндинг туда встроить будет в любом случае непросто.
gsomix
У нас где-то была такая хрень.
gsomix
К тому времени все уже привыкли, что единственный способ проверить отображение -- скомпилировать и запустить.