Это копия, сохраненная 22 марта 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Система типов Scala позволяет избегать ошибок в сложных приложениях, а рантаймы для JVM и JS позволяют строить высокопроизводительные системы с удобным доступом к огромной экосистеме библиотек.
Q: Какой стэк библиотек взять?
A: Вариантов много, посоветую свой: http4s для HTTP-сервера/клиента, circe для работы с JSON, cats/cats-effect чтобы писать функционально, ZIO чтобы быть сильным как De Goes.
Q: Хочу better Java
A: Обрати внимание на Котлин
Q: Хочу угорать по функциональщине и теории категорий
A: Посмотри на Хаскелль
Не я отвечал. Американский стартап удаленка за валюту.
Забавно, но в Олего-банке тоже работал 3 года назад
Пздц, сочувствую бро
Как так вышло, что 90% всех вакансий что есть на HH - это работа с большими данными через Apache Spark, а Scala там используется как DSL для написания пайплайнов обработки данных?
Остальные 9% - это Akka (http, streams, actors), Alpakka, Slick. И только 1% вакансий требует cats, zio, http4s и прочие monix.
Я ничего не хочу сказать, но учитывая то, что вакансий на Scala на два порядка меньше чем на той же Java, то советовать учить http4s, cats, zio - это верный путь остаться навсегда безработным, вернуться к своим немолодым родителям и жить на их пенсию, пока они не скопытятся.
Лучший для чего? Пилить круды? Так для этого есть превосходная связка из Java/Kotlin + Spring, Hibernate, на которой ты буквально за минуту можешь получить готовый каркас приложения с http-сервером и доступом к базе данных.
>cats/cats-effect чтобы писать функционально
Все доступные ресурсы утопают в самолюбовании в духе "монадическое преобразование в категории эндофунктора". Т.е. совершенно непонятно какой профит поимеет рядовой пользователь, который пришел с Java, например.
Я еще не говорю о такой важной вещи как статьи, документация, книги и прочие ресурсы, которые бы помогли понять тех же самых котов, например. Ничего этого нет, а то что есть, снова погрязло в писанине математиков и прочих фриков, которые прибежали с Haskell.
>ZIO чтобы быть сильным как De Goes.
К сожалению, чтобы начать пользоваться ZIO, нужно сперва занести косарь зелени лично лысому, чтобы тот тебе прочел лекцию о том как этим зио пользоваться. Документации нет, книг нет, в коде доков тоже нет - ничего нет.
>а рантаймы для JVM и JS позволяют строить высокопроизводительные системы
>высокопроизводительные
Только вот беда - Scala.JS так и осталась студенческой поделкой для маргиналов и прочих психопатов, а байткод, который генерирует компилятор Scala исполняется значительнее медленнее чем аналогичный код на Java.
Еще смешнее выглядит тот факт, что типичный REST-сервис на Spring, под капотом которого все реализовано посредством Java Reflection API, работает на порядок быстрее аналогичного сервиса на Scala, который использует какую-нибудь Akka HTTP или http4s.
Медленно, постоянный жор памяти, но зато на Scala и в функциональном стиле, ага.
Вопрос знатокам
Обязательно ли упарываться в теоркат и прочее чтобы нормально пользоваться cats?
Наверни Бартоша Милевски и его теорию категорий для дебилов. Как жаль, что без таких фундаментальных вещей как высшая математика и в том числе теории категорий, невозможно написать типичный круд на Scala.
>>665146
Провёл тебе шершавым AbstractSingleBeanDefinitionParser-ом по губам, можешь укатываться обратно в свой свинарник для идусни обсуждать 10 реализаций синглтона.
Ты чего себя анус-то рванул, старина? Десятки тысяч компаний запускают новые проекты на Spring и Hibernate. А такие штуки как Spring WebFlow и Spring Data позволяют тебе за считанные минуты накидать реактивный веб-сервис, который будет общаться с базой данных и отдавать данные через HTTP протокол. По уровню эргономики и легкости освоения Spring просто разваливает Http4s, Akka и прочие doobie.
Десятки тысяч компаний и на РНР проекты запускают и что?
Ты заебал уже светить своей разорваной сракой, лоллируй джяватред и обсуждай своё говно мамонта там.
> Spring просто разваливает Akka
Ну наверное потому что у этих фреймворков совершенно разные задачи? Научить индусню быстро-быстро набирать многобукав на спрингоговне это не так сложно, а для акки с её акторами нужно айсикью хотя бы сто и выше, так что для типичного вкатывальщика в джяву может быть сложно, да.
Как ни смешно, а пхп это тупо джява с динамической типизацией сейчас
Как не открою вакансии на Scala, а там всякие Славики, пытаются клепать REST-сервисы на Akka HTTP, основу для приложения составляет модель акторов, ворочают потоками данных через Akka Streams, а в базу ходят через какой-нибудь Doobie или Slick. Только вот вопрос - зачем нужно так извращаться, когда можно все тоже самое собрать на проверенном стеке из Spring и Hibernate?
Это лишь подтверждает несостоятельность Scala как языка программирования и практичного инструмента для решения повседневных задач, с которыми сталкивается программист каждый день, решая задачи бизнеса.
>>Десятки тысяч компаний и на РНР проекты запускают
>Это лишь подтверждает несостоятельность Scala
Ты ебанутый? Или это просто бот пишет?
Тобой движет злоба и в этом твоя проблема. Ты совершаешь огромную ошибку выбирая Scala. Я привел целый ряд проблем и критических недостатков, которые показывают, что Scala - не более чем студенческая поделка мистера Обербского и его студентов. Ты так и не смог привести ни одного контраргумента или хотя бы попытаться опровергнуть мои выводы. Но ты не перестаешь брызгать слюной и исходить на вой, когда я в очередной раз предоставляю на всеобщее обозрение неопровержимые доказательства того, что Scala - не более чем академический язык для попила грантов.
> типичный REST-сервис на Spring, под капотом которого все реализовано посредством Java Reflection API, работает на порядок быстрее аналогичного сервиса на Scala
Давай пруфы на свой кукарек.
Ты снова злишься. Вот, пожалуйста - https://www.techempower.com/benchmarks/#section=data-r18&hw=ph&test=query
Скажи, ведь ты недавно перешел на Scala, так? А до этого работал на каком-нибудь PHP или JavaScript, верно?
Просто если ты не знаком с Spring и почему он обгоняет Akka HTTP, то мне будет сложно донести до тебя основные идеи.
обоссано реактивным ростком
Через сколько, интересно, Одерски на почетную пенсию отправится (года 4?) и что после этого скалу ждёт.
Я не так за Скалу переживаю, как за ядро линукса.
Если (не дай б-г) Торвальдс уйдет - успешные поцтеринги там такого говна нахуевертят.
Над дотти работает только Мартин. Над скала работает несколько мартышек из светгни. В конце года ожидается релиз дотти, вот тогда мистер Обербски и отправится на заслуженный отдых. Ведь дотти - это по сути новый язык, который отличается от скала более чем полностью. Т.к. никто не собирается прекращать поддерживать скалу, то переход на дотти либо затянется на ближайшие 8-10 лет, либо и вовсе не произойдет, т.к. никто не станет переходить на новый язык ради сомнительной перспективы писать с отступами в коде, лол. Ну и конечно же без адекватной поддержки со стороны IDE такой переход будет очень болезненным.
Почему все хейтят Akka в Scala комьюнити? Ведь это годный порт модели акторов. Плюс Akka это больше чем акторы - http, streams, alpakka и прочие модули, которые покрывают множество аспектов в разработке целостного проекта. По ней достаточно книг, курсов, статей и одна из самых лучших документаций.
Это же не Коты, по которым одна кривая книжка от андерскор и неполная и устаревшая документация.
Долгое время она была нетипизированная, а это зашквар в Scala-коммунити.
Ну и если посмотреть на вакансии, она встречается куда чаще cats или zio, так что кому-то она (видимо) нравится.
А в Scala-коммунити безработица не является зашкваром? Я к тому, что работу на Akka найти на порядок проще чем на котах и тем более зио.
Так если тебе ок работать с аккой - кто мешает? Как ты сам и сказал, там целая экосистема, от альпакки и до плэй фреймворка.
Просто я хочу перекатиться на Scala, но понимаю, что не смогу найти на ней работу кроме как на спарке или акке.
Как перекатиться на скалу? Что учить? Брать ли кредит в желтом банке, чтобы оплатить лекцию от САМОГО!
Завтра ищешь в интернете книжку Programming in Scala. Похуй если ничего не поймешь. Затем идешь на scala-lang.org и изучаешь стандартную библиотеку от корки до корки. Потом зубришь, именно, сука, вызубриваешь конвенцию по написанию скала кода - от EPFL естественно, чтобы от зубов отскакивало. Когда напишешь свой первый клон Twittera, по пути изучив основы дискретного и лямбда исчисления, скачиваешь и изучаешь любой асинхронный скала вебсервер, рекомендую Play!. Как переделаешь твиттер клон, чтобы выдавал по крайней мере 5 тысяч запросов в секунду, можешь идти дальше - тебя ждет увлекательный мир хайлоада. Apache Hadoop и Spark, сверхбыстрые асинхронные key-value хранилища, NoSQL и прочие мира открытого исходного кода приблуды. Отсос хиккующих спринг-макак / просто неудачников типа го или котлин фанбоев, которые едут по несмазанным рельсам по жизни, не заставит себя ждать и уже через пол года ты будешь подворачивать штаны, есть маффины, запивая смузи и любая баба будет течь от упоминания твоего особого взгляда на концептуальный южно-африканский кинематограф.
Если не троллишь, то что конкретно тебе показалось сложным в programming in scala? Там же все разжевано и может быть трудным либо если у тебя проблемы с английским, либо если ты вообще ни на чем никогда не программировал.
Не знаю, я просто нашел вакансию, сделал тестовое, прошел собес и перекатился. Как любой другой язык.
И чем в итоге занимаешься? В какой области используешь Scala?
Programming in Scala - слишком академичная книжка. Словно какой-нибудь ВУЗовский учебник. Essential Scala и Scala for the Impatient намного лучше. Сейчас нужно заставить себя прорваться через Advanced Scala with Cats, документацию по котам и красную книгу.
Loom, pattern-matching, sealed types, records уже будут доступны в течении полугода максимум года в ближайших релизах Java. Реализованы данные фичи будут на высочайшем уровне и почти сразу появится непревзойденная поддержка со стороны IDEA.
Не корми жирдяя, тупой.
Прорекламирую цикл лекций по скале https://www.youtube.com/playlist?list=PLr3MOSSJVvAFDW8sY3qbowgMa-eFplLcG
Очень посредственные лекции. Особенно удручает тело, которое вещает про Cats Effects, ZIO и Monix. "Ну, тут вот трансформер, вот, мда, ну раннер там запускает, мда, вооот...". Лучше не мучить себя этим кошмаром и навернуть Essential Scala, затем Scala for the Impatient, а потом можно взять Advanced Scala with Cats. Там уже можно читать красную книгу от Рунара и читать Akka in Action. Все равно работа на Scala это в 90% Akka и ее экосистема. Spark и typelevel стек мы разумеется отбрасываем.
Зачем переходить на Scala, чтобы потом устроиться в посредственные компании (тем более банки), которые платят нищенские зарплаты? Тем более на Scala там пишут максимум в одном отделе, который разрабатывает один проект. Костяк этих банков целиком и полностью написан на Java.
А ты зачем сюда пишешь, дружище? Всем давно известно, что Тиньк платит копейки. Уровень компетенции сотрудников точки ты можешь составить по постам одного чучела, который бегает из одного телеграм чата в другой и просит "челов-дядей" помочь ему "залифтить монаду в функтор полугрупп".
>>668760
Scala не особо распространена, и на Java вакансий больше, это правда.
Но без энтузиастов, которые её предлагают/внедряют, ничего не изменится.
Так что если хочешь работу прямо сейчас и тебя не тошнит от тонны аннотаций в спринге - выбирай джаву, никто тебе не запихивает скалу насильно. Но и не удивляйся что за распространение FUD тебя нахуй пошлют.
Вот это тролляка FUD про Скалу разгоняет.
>>666539
Так найди на спарке или на акке. Потом с опытом переехать намного проще будет. Но проблема в том что, чтобы что-то делать на этих технологиях, нужно знать намного больше чем сам язык.
>>668696
Как ни странно, обычно чтобы устроиться в команду которая использует котов, не обязательно их знать. У скалистов вообще не принято искать framework-программистов, за редкими исключениями на нерядовые роли.
работаю-со-скалой-больше-шести-лет
Все открытые скала вакансии либо явно указывают, что им нужен продакшен опыт в акка/коты/зио, либо это выясняется уже на собеседовании. Ну и при попытке перейти с другого стека тебя ждет очень интересное открытие - тебе предложат значительно меньше, чем ты зарабатывал на старом стеке, т.к. ты входишь в скалу джуном.
> Все открытые джава вакансии либо явно указывают, что им нужен продакшен опыт в Spring/Hibernate/JMS, либо это выясняется уже на собеседовании. Ну и при попытке перейти с другого стека тебя ждет очень интересное открытие - тебе предложат значительно меньше, чем ты зарабатывал на старом стеке, т.к. ты входишь в джаву джуном.
Компании проводят курсы по Scala для студентов. Самых способных нанимают на джуниорские зарплаты. Человека с улицы, который решил сменить стек никто к себе брать не станет, т.к. с него совершенно другой спрос и от него ожидают, что у него уже будет коммерческий опыт в нужных фреймворках и библиотеках.
Чтобы что? Чтобы потом безуспешно пытаться устроиться хоть куда-нибудь? А потом все бросить и вернуться обратно на JS/Java/Go/whatever?
Удалите тред. Никому не интересно читать про шизофрению безработных идиотов, которые лифтят монады в полугруппы через апликативные функторы. Вэлью здесь нет и не будет. Даже Elixir более практичный и живой язык, чем поделка мистера Обербского.
Опять с утра таблетки забыл принять?
Как вкатиться в тру ЭфПэ в Скале? Есть какие-нибудь годные книги или ресурсы, которые бы помогли мне понять всю силу Cats и Cats Effect, например? В Advanced Scala with Cats какие-то надуманные примеры, которые выглядят не очень правдоподобно в реальных проектах.
Не читал, но много советуют практикал ФП ин скала
А вообще пройди курс на степике по хаскелю и дальше читай доки по лицам, концепции одни и те же
У тебя действительно было так что ты приходишь на собеседование, хорошо отвечаешь на всевозможные вопросы, а потом тебя спрашивают - такую-то либу использовал в проде? Ты отвечаешь что нет, и тебе не перезванивают?
Это возможно конечно, но по моему опыту, даже сильному джависту, который хочет писать на скале, будут рады, ибо нанимать скалистов и так достаточно сложно.
>ты входишь в скалу джуном
У тебя что, пропадает знание сетей, баз данных, ООП, навыки алгоритмизации и все остальное? Это 90% знаний, нужных в работе. То, чего ты не знаешь - синтаксис языка, его идиомы и библиотеки очень быстро учатся в соответствующей среде. Многие компании согласны идти на такое обучение.
>>670491
Не понял вопроса. Ты про конференции?
>>672684
Никакие. Во-первых, потому что не факт что pure fp, особенно в скале предпочтительнее других стилей (хотя я склоняюсь к такому мнению). Во-вторых, когда тебя начнет тошнить от мутабельности и неконтролируемых сайд-эффектов и ты начнешь искать как этого избежать, то поймешь что эти проблемы уже решены (частично) другими людьми и так придешь к тру ЭфПэ. Мне кажется, сейчас ты не увидишь в нем ничего полезного, реакция будет похожа на эту - https://github.com/robpike/filter.
>практикал ФП ин скала
Там не дается вводная для тех же котов, которые повсеместно используются. Т.е. книжка уже для бывалых скалолазов.
>У тебя действительно было так что ты приходишь на собеседование, хорошо отвечаешь на всевозможные вопросы, а потом тебя спрашивают - такую-то либу использовал в проде? Ты отвечаешь что нет, и тебе не перезванивают?
Зовут на собеседование, гоняют по Java, затем переходят к Scala. Спрашивают про пет-проекты, коммиты в опенсорс, в конце выдают тестовое задание, а потом не перезванивают или пишут, что у меня нет коммерческого опыта разработки в Akka, cats или каком-нибудь Play Framework.
>У тебя что, пропадает знание сетей, баз данных, ООП, навыки алгоритмизации и все остальное? Это 90% знаний, нужных в работе. То, чего ты не знаешь - синтаксис языка, его идиомы и библиотеки очень быстро учатся в соответствующей среде. Многие компании согласны идти на такое обучение.
У меня сложилось впечатление, что открытые вакансии на Scala нужны исключительно для мониторинга рынка разработчиков. Большинство компаний, которые используют Scala в проде, открывают свои школы, курсы, куда зовут студентов старших курсов. Именно студентов и нанимают на позиции Scala-разработчиков. А если ты решил перейти с другого стека, то извеняй - ничего не выйдет.
>Никакие. Во-первых, потому что не факт что pure fp, особенно в скале предпочтительнее других стилей (хотя я склоняюсь к такому мнению)
Речь шла о котах, т.к. они составляют основу практически всех fp библиотек и фреймворков. Есть Advanced Scala with Cats, но она рассматривает буквально несколько тайпклассов и не покрывает большую часть котов.
>пишут, что у меня нет коммерческого опыта разработки
Ясно. У меня было и по-другому, например звали на pure-fp вакансию, на собеседовании все ответил, но коммерческого опыта использования котов не было. Брали все равно, но не сошлись по деньгам (мне еще за спарк с бигдатой платят, а им это не нужно было). В любом случае видимо стоит уточнять нужен ли опыт, просто чтобы время не терять.
>Именно студентов и нанимают на позиции Scala-разработчиков.
Это может и хорошо было бы, но проблема в том что одними студентами сыт не будешь. Должны быть люди которые разбираются в том как проектировать системы, организовывать процессы и решать проблемы которые нельзя нагуглить.
>рассматривает буквально несколько тайпклассов и не покрывает большую часть котов
Попахивает перфекционизмом. Если ты научишься пользоваться тем что описано в доке на сайтах cats, cats-effect, fs2 и, например, monocle, тебя любой фп-шоп с руками оторвет.
Я вообще не сторонник книг по библиотекам/фреймворкам. Есть код, дока и твой опыт - этого достаточно. Книги нужны для более фундаментальных вещей.
>Это может и хорошо было бы, но проблема в том что одними студентами сыт не будешь. Должны быть люди которые разбираются в том как проектировать системы, организовывать процессы и решать проблемы которые нельзя нагуглить.
Боюсь у меня не тот уровень, чтобы решать проблемы, которые нельзя нагуглить. Тогда я лучше останусь на прежнем стеке и не стану пытаться перейти на Scala. Все равно компании будут нанимать новый разработчиков среди студентов, которые учатся в их школах...
Дима, заебал по всей доске ныть, не первый год ноешь что тебя на скалу не берут.
> cats
Могу пояснить за все трансформеры и тайпклассы на уровне typeclassopedia со всеми laws и т.п.
> cats-effect
Здесь laws уже не вспомню, а вот применять могу, в т.ч. интегрируя с императивными библиотеками
> fs2
Легко могу применять и (опять же) интегрировать с императивными стримами, поясню как переписать акка-лапшу на fs2, могу рассказать за все нюансы resource handling и т.п.
> monocle
Могу аргументированно унижать, сравнивая с haskell lens.
А ещё ZIO на уровне internals. И contributions в некоторые из выше перечисленных проектов + несколько своих.
А теперь самое интересное: не могу найти работу, на мой гитхаб вообще никто не смотрит, FP-работодателей КРАЙНЕ мало, а те немногие к кому я собеседовался, были какие-то пидарасы в той или иной степени
Приведу примеры с нескольких собеседований:
1. Собеседующий спрашивает, можно ли наследовать case class'ы. Сам по себе, конечно, охуенный вопрос, учитывая что так никто не делает. Ну да ладно. Отвечаю, что наследовать можно, кроме случая когда case class наследуется другим case class'ом. Собеседующий возражает, что их наследовать вообще нельзя и тут он обосрался.
Ну и там ещё были охуительные задачи про поджигание пердаков фитилей с двух сторон, пиздец короче. Перезвонили, но предложили сильно меньше чем у меня было на тот момент.
2. Почти как в п.1, собеседующий перепутал push и pull стримы, однако с видом ехидного колобка твердил что это я обосрался. Перезвонили, сказали что не подхожу им по квалификации уёбки чсвшные, сами ламеры и даже не осознают это.
3.
Собеседующий (С): Мы делаем сервис с рецептами еды
Я: Ок интересно пиздец
С: Не вижу у вас интереса к продукту, вы нам не подходите))
Говорят там зарплаты сильно ниже рынка.
В универе практики по джаве, но я и так знаю ооп, хочу написать хоть что-то в фп стиле. А так как скала на той же жвм, преподы скорее и не заметят разницы. а если и увидят, то не будут же отчислять из-за того, что написал программу не на том языке
Да и вообще, годится ли скала со свингом для изучения фп?
При переходе с хаскеля придется учесть некоторые нюансы. Например, отсутствие оптимизации хвостовых вызовов. Ну и вообще, похожие концепции ФП в скале зачастую выглядят иначе.
Насчёт свинга подсказать не могу.
>Мы делаем сервис с рецептами еды
Это же https://whisk.com/ , лол. Они все время ищут скалиста на 4.5к баксов и найти не могут.
>Например, отсутствие оптимизации хвостовых вызовов
Scala хвостовую рекурсию разворачивает в обыкновенный цикл на уровне генерации JVM байткода. Ты даже можешь проверить, что у тебя tail recursion, добавив аннотацию @tailrec на метод. Clojure схожим образом разворачивает хвостовую рекурсию в обычный цикл, т.к. JVM не поддерживает TCO.
Ходил к ним однажды. Очень странное ощущение было после этого, гм, собеседования. Провели в переговорку и усадили за длиннющий стол с телевизором на стене. Буквально через секунду в переговорку влетела очень нервная женщина и какой-то паренек. Женщина что-то буркнула под нос и началось "собеседование". Гоняли в основном по джаве, но потом переключились на задачки на сообразительность - взвешивание монет, подсчет включенных лампочек в кольцевом поезде и т.д.
По Scala задали буквально несколько вопросов, после чего выдали тестовое и на этом мы попрощались.
Тестовое я отправил, но ответа не последовало. Я один раз им написал с просьбой дать хоть какой-нибудь отклик, но в ответ получил только молчание.
Но я частенько вижу, как их сотрудники постоянно зазывают желающих в их финтех-школу, где они натаскивают студентов на Scala.
Не так давно надо было знать свой стек(бэкенд БД+SQL и Жаба), соответственно в веб жс и верстка.
Сейчас в фреймворках для макак макаки насовали функторов-хуюнкторов, замыкания. Потому что ФП КРУТО! ТЕОРКАТ ЕЕЕЕ.
Особенно это охуительно выглядит с каким-нибудь реактом, где говно с SSR грузится медленнее, ограничивает бэкенд Нодой и вообще, кроме "ну смотри страница каждый раз не грузится!!!" ничего не даёт.
итт мы наблюдаем такую же задорную хуйню:
Когда можно ограничиться максимально простыми возможностями жабы, чтобы накидывать говна на вентилятор(source tree) было максимально сложно, замутили ФП без явных плюсов.
Объясните мне, что поменялось в рыночке, что теперь для того же самого кода надо навернуть матан от макак?
Матан - это круто, когда он к месту и решает задачи, как LISP в 80-ых, а наборщики, которые решили хайпануть, усложнив запил круда ради усложнения запила круда выглядят максимально уебищно.
Потому что ты долбоеб, который опирается на изначально неверный посыл. ФП с функторами-хуюнкторами не для крудов.
Кто основной работодатель на скале с котами, зио и дуби? Банки, блядь, которым нужна максимальная надежность и самопроверяемость кода вместе с расширяемостью и поддерживаемостью.
Кто основной работодатель на хаскеле в РФ? Биокад, для задач которого этот язык оказался просто удобен.
Никто обычные круды на ФП в прод и не лепит, оно нужно там где работа со сложной математикой и/или повышенные требования к надежности.
>Никто обычные круды на ФП в прод и не лепит, оно нужно там где работа со сложной математикой и/или повышенные требования к надежности.
Какие-то сказки рассказываешь. Тот же тиньк за каким-то хуем лепит "микросервисы" на http4s, которые ворочают дерьмецо в базе через doobie.
Все ФП-вакансии на Scala что есть в открытом доступе - это разработка веб-сервисов на http4s, akka-http и хождение в базу через какой-нибудь куилл с дубями.
Остальные вакансии (которых большинство) - это биг-дата на спарке, где твоя скала нужна только как DSL к спарку.
Там хотя бы нет той шизы, которую тащат из котов, где любят захерачить тайпклассов для складывания типов, назвать их моноидами, а потом обмазываться имплиситами и дрочить...
>зио
Лысый мошенник скопипастил котоэффекты и скалаз, основал очередной консалтинговую шарагу, нанял каких-то мутных хуев из западной европы и пытается продавать свою экспертизу, лол.
У тебя флэшбеки как тебя под хвост вызывали?
>Кто основной работодатель на скале с котами, зио и дуби? Банки, блядь
Взлольнул в голосину. Кто там из банков использует эфпе скалу? тиньк, райф, точка и все. Был еще револют, который стартовал как скала-шоп и писал буквально весь бекенд на скала. Хорошо, что они вовремя соскочили на котлин.
Ну и эти твои банки, на скала пишут буквально небольшие проекты. А всякие процессинги и прочие штуки, которые должны работать 24/7 пишутся как не странно на Java.
Удалите тред.
Как прочувствовать всю мощь тайплевел стека? Хочу написать небольшое веб-приложение, но каждый раз, когда начинаю читать документацию к cats или http4s, то натыкаюсь на теорию, которая, по моему мнению, напрочь оторвана от практики. Казалось бы, дело нехитрое - накидать простенький REST-сервис и сходить в базу. А тебе прямо с главной страницы http4s начинают компостировать мозги какими-то кляйзли и как тебе нужно вымуштровать котов, чтобы подключать свои моноиды через имплиситы.
Открыл тут недавно доку по акке. Ба! Мое почтение! С самых первых страниц документации тебе показывают как за пару минут собрать работающее приложение. Тут же тебе советуют взглянуть на различные интеграции с AWS, GCP, Kafka и прочими сервисами.
Как проникнуться всей мощью Scala FP?
А зачем тебе проникаться несуществующей мощью мертвого стека который до сих пор в 0.х версиях? Когда есть замечательная акка с топовой документацией и реально используемая в проде кем-то кроме трёх компаний на всю страну
Но как же! Ведь столько уважаемых компаний делают акцент именно на typelevel стек! Они отказываются от Akka и переписывают имеющийся Scala код на Cats.
Ведь практически в каждой презентации говорится, что Typelevel - это тру Scala, а Lightbend - не тру и используется только как Java++.
Не повезло тебе с компаниями. В рашке может действительно со скалой плохо. Ну ты не отчаивайся, ищущий да обрящет. В ФП ты шаришь, в других областях нет проблем? С базами, алгоритмами, со способностью общаться, в конце концов?
>>673524
>Боюсь у меня не тот уровень, чтобы решать проблемы, которые нельзя нагуглить.
Ну тогда ты мало чем от тех самых студентов отличаешься, сорре.
>>674105
Очень сомневаюсь что можно учить фп, используя свинг. Каша в голове будет.
>>674253
>теперь для того же самого кода надо навернуть матан от макак
Не нужно. Миф про то что для написания функциональных программ нужно знать тоеркат и матан это миф.
>>674309
>Был еще револют, который стартовал как скала-шоп и писал буквально весь бекенд на скала. Хорошо, что они вовремя соскочили на котлин.
Откуда инфа про скалу и котлин? Вот их вакансия:
https://angel.co/company/revolut/jobs/329665-senior-backend-engineer-java-scala
>There is an opportunity to introduce Scala for new components.
Кем говорится, борщехлебами мамкиными? Ну они пытаются людей в свою секту набрать побольше, их понять можно, если куча людей будет писать тайплвл-либы, то оно рано или поздно взлетит и будет рабочим.
Но нахуя рандомному крудошлепу на это вестись я хуй знает.
Какими негуглящимися знаниями нужно обладать, чтобы заинтересовать компанию, которая пишет на Scala?
Но ведь есть два лагеря скала разработчиков. Первый - это typelevel стек, где Тревис Браун пишет очередной функциональный парсер ЖЫСОНА. Второй - это Lightbend стек с Akka, Cloudflow, Lagom, Play и Slick. Есть еще Зио, но там пока все тухло. Неужели тайплевел стек не является тру стеком для скала?
Ну смотри. Вот я открываю ХэХэ.Ру и вижу, что на скала вакансии требуется знание котов, эфэсс2, дуби и прочие библиотеки от тайплевел. Открываю видео со скала конференции и снова вижу как народ рассказывает как он ловко лифтить монады себе в очелло.
Получается, что Лайтбенд стек мертв и доживает последние дни, а любители пощекотать себе очко через кляйзли в хэтэпэпэфорэссс становится все больше!
Таак, падажжиии!
Что именно в пикрелейтед тебе непонятно?
Да, если смотреть как оно устроено, то вылезают всякие Kleisli и т.п. Но это концепции, которые достаточно выучить один раз и дальше ты сразу будешь понимать, зачем они нужны в конкретном участке кода.
А вот с akka-http ты вынужден учить всякие имплиситы, которые кроме акки нигде не используются.
Я говорил не про негуглящиеся знания, а про негуглящиеся проблемы. Например как выбрать базу/библиотеку под бизнес-требования, как найти баг в многотопоточном коде, как сделать так чтобы 99-ый перцентиль задержки был <50ms, как настроить сборщик мусора чтобы выполнялись определенные требования, как организовать мониторинг и развертывание системы и миллион других вопросов.
Нагуглить справочную информацию или базу конечно получится, но как их применить в конкретной ситуации - нет. Тут нужно думать и иметь опыт, чтобы знать где можно обосраться. И это важно в любой компании, Скала здесь ни при чем.
>как сделать так чтобы 99-ый перцентиль задержки был <50ms
>Scala
Ну ты даешь! Скажи спасибо, если код на скале будет выдавать хотя бы 800-1000мс для 90 пецентиля.
Может ты криворукий просто? У нас высоконагруженный сервер показывает 100мс для 99.9 и 10мс для 95.
Да брось! Мы же понимаем, что Scala с ее функциональными и неизменяемыми коллекциями и тайпклассами через тайпклассы, создает столько мусора, что любой открытый GC поперхнется, лол.
Ну а Akka http и http4s будут просто отсасывать у какого-нибудь vert.x или spring webflux.
Практика показывает что "проблемы" с иммутабельными коллекциями (которые в подавляющем большинстве случаев успешно оптимизируются компилятором) возникают в 1-2% случаев и легко решаются использованием мутабельной коллекцией там где надо. Что в целом соответствует идее Скалы писать функционально везде, кроме мест где нужно императивное петушение (< 5% случаев) в целях оптимизации, и вообще общепринятой практике в разработке: "1. Make it work 2. Make it beautiful 3. Make it fast".
Давай это, грасеас отсюда!
>red book
Тот самый ред бук от Рунара? Это же хардкорная книга, которую не каждый осиливает. По котам я так и не понял что нужно читать. Документация очень скудная и не описывает зачем нужны коты кроме эзотерических примеров складывания чисел через реализацию тайпкласса моноида.
Если тебе даже редбук слишком хардкорный то попробуй через полгодика-годик
Дегуз говорил в одном из своих твитов, что это очень серьезная книга, которую просто так не осилить.
Haskell это lingua franca функционального программирования, все интересные вещи сначала появляются в нём
я конечно не джон, но книга вполне читабельна, главное не спешить, вдумчиво читать и с кодом в книге работать. всяко лучше, чем рандомные статьи в сети.
по кэтс дока вполне нормальная. если сложно, то есть книга https://underscore.io/books/scala-with-cats/
Эту книгу я и имел в виду. Там оторванные от реальности примеры где складывают числа через моноиды.
Везде же требуют котоэффекты. А документация дрянь и без нормальных примеров.
Так и быть. Закончу Advanced Scala with Cats, а потом наверну красную книгу.
>Akka http и http4s
Действительно медленные (но их скорости достаточно для 99.9% процентов задач), если нужно быстрее (во много раз) - есть colossus, ну и джавовые фреймворки, хотя тут уже наверное есть смысл смотреть на что-то действительно хардкорное, из мира С++ Go Rust.
Как проникнуться системой акторов в Scala? Стоит ли читать книги по OTP и Erlang? Как научиться строить отказоустойчивые и высоконагруженные системы с использованием Akka?
Нет, забей на Эрланг, у Акки хорошая документация, читай её.
> Как научиться строить отказоустойчивые и высоконагруженные системы с использованием Akka?
akka-{cluster, sharding} - годнота
акторы как модель concurrency - хуета
>akka-{cluster, sharding} - годнота
Мне постоянно говорят, что кластеринг в акке - это худшее что можно себе представить. Постоянно предлагают отказаться от идеи запила приложения на акке и ни в коем случае не трогать кластеринг. Вместо этого предлагают писать на котах, зио и навернуть изуми.
>акторы как модель concurrency - хуета
В Ерланге с Эликсиром же зашло. Правда там рантайм клевый и не стопорит ВМ при ГЦ как в JVM.
> Вместо этого предлагают писать на котах, зио
Спроси у них, как именно они предлагают реализовать функционал cluster/sharding на этих либах а потом обоссы.
> изуми
Хуями, забудь про это.
> В Ерланге с Эликсиром же зашло
А в си норм зашёл epoll и libevent - это не повод их тащить в скалу
> Правда там рантайм клевый и не стопорит ВМ при ГЦ как в JVM
В большинстве случаев даже обоссаный CMS не стопорит VM, не говоря уж про G1/ZGC.
>Спроси у них, как именно они предлагают реализовать функционал cluster/sharding на этих либах а потом обоссы.
Они предлагают переосмыслить архитектуру приложения и отказаться от акторов и кластеринга.
>В большинстве случаев даже обоссаный CMS не стопорит VM, не говоря уж про G1/ZGC.
Ты, наверное, не в курсе, но мире JVM есть только один GC, который не делает STW и это проприетарный ZGC. Все остальные GC стопорят все потоки приложения, когда нужно собрать мусор.
> Они предлагают переосмыслить архитектуру приложения и отказаться от акторов и кластеринга
То есть тебе фактически в уши нассали, не предложив альтернативы.
> Ты, наверное, не в курсе, но мире JVM есть только один GC, который не делает STW и это проприетарный ZGC. Все остальные GC стопорят все потоки приложения, когда нужно собрать мусор.
Ты не прав, но спорить не хочу - надо будет, сам загуглишь.
Значит мне рано еще заниматься программированием. Извини, что потратил твое время...
Щас бы фп-сектантов слушать. Вот как доведут свои либы до рабочего состояния так и можно пользоваться. А пока всякие хттп4сы находятся в состоянии 0.0.8 версий, нехуй на них в проде смотреть.
Нравится ФП - помогай делать либы, но не надо ебать мозги своими недоделками тем кто просто хочет пилить прод. Можешь в следующий раз так и передать.
Применяем "свои недоделки" в высоконагруженном проде, и хуле ты нам сделаешь?
О, Вы из Ирландии?!
Пособолезную вашему не-айтишному руководству, которое просто в силу незнания технических деталей допустило такое дерьмо.
Может про акторы есть хорошие книги использующие Эрланг для иллюстрации концепций, но специально его учить для понимания акки не нужно. Есть дока, но если именно книгу хочется, можно попробовать Akka in Action.
Главное помнить что сырые акторы и особенно clustering, sharding и remote, нужно использовать в исключительных ситуациях, когда без них обойтись еще труднее чем с ними. Вот здесь хорошо некоторые проблемы высказаны: https://news.ycombinator.com/item?id=21564461
>>677469
>мире JVM есть только один GC, который не делает STW и это проприетарный ZGC
1) Ты наверное про Azul C4 - это он проприетарный.
2) Технически верно что любой GC делает STW, но в concurrent GC эти паузы минимальны, можно сказать что их обычно нет.
3) VM Эрланга хороша что тем что реализует вытесняющую многозадачность. Вот здесь можно почитать подробнее: http://jlouisramblings.blogspot.com/2013/01/how-erlang-does-scheduling.html
>Главное помнить что сырые акторы и особенно clustering, sharding и remote, нужно использовать в исключительных ситуациях, когда без них обойтись еще труднее чем с ними. Вот здесь хорошо некоторые проблемы высказаны: https://news.ycombinator.com/item?id=21564461
Даже не знаю тогда зачем использовать Akka. Ведь акторы составляют фундамент этого фреймворка.
С таким раскладом лучше действительно навернуть typelevel стек и горя не знать.
>1) Ты наверное про Azul C4 - это он проприетарный.
Да, верно. Перепутал его с ZGC. Вот у него есть запатентованный алгоритм GC, который не останавливает потоки приложения при сборке мусора.
>2) Технически верно что любой GC делает STW, но в concurrent GC эти паузы минимальны, можно сказать что их обычно нет.
Все зависит от нагрузки. Ну и concurrent GC называются на самом деле mostly concurrent GC.
>3) VM Эрланга хороша что тем что реализует вытесняющую многозадачность.
Речь шла скорее о GC. В BEAM стопаются отдельные "процессы" внутри VM, когда нужно собрать мусор. Full GC с полной остановкой всех потоков в VM там вроде как не происходит.
>Главное помнить что сырые акторы и особенно clustering, sharding и remote, нужно использовать в исключительных ситуациях
Что же тогда остается, если ни акторы ни кластеринг с шардингом лучше не использовать?
>акторы как модель concurrency - хуета
я бы поспорил. скорее есть не так много кейсов для использования этой модели.
>>678468
Есть akka-http, akka-streams и alpakka, и с ними можно интегрировать сырые акторы если понадобится. Их можно заменить http4s и fs2, но
1) для них намного меньше коннекторов
2) нужно знать cats и cats-effect, а их знает и главное хочет знать достаточно мало людей, чтобы в этом треде ни кукарекали.
Ну и есть задачи которые на кластеринг с шардингом очень хорошо ложатся.
>Речь шла скорее о GC.
GC влияет на все приложения одинаково, в вот вытесняющая многозадачность именно для акторов решает (ну и для других реализаций зеленых потоков).
>>678450
Можно подробнее?
Почему вы удаляете мои вопросы?!
> акторы как модель concurrency - хуета
Пока что лучшая модель за последние 50 лет, выразительной мощности который достаточно, чтобы вывести из неё все остальные.
SCP ещё сопоставим, но у него свои недостатки, типа реализации получаются быстрее, но отказоустойчивость в распределенной real-world среде похуже будет.
Всякое говно мамонта типа CCS, pi-calculi и I-var/M-var уже сдохло за счёт своей ограниченности, фьючеры по месту бывают в тему, STM, когда совсем ничего уже нет удобного под рукой, вот собственно и всё. Хотя толку от всего этого многообразия, если для мейстримового программирования какой нибудь ссаный асинк пишущийся на ерлонге в 5 строчек -это блять вершина развития. Не даром братюня говорил что мейнстрим - это область с заторможенным временем, где сейчас где-то 80й год и люди только-только стали догадываться, что программировать сраные FSMы на евентах нодженс-стайл это говноедство. Хотя для какой нибудь джявапараши где дауны до сих пор сидят на тредпулах с дисрапторами даже это пиздец прогресс, какая там акка.
Моргни
В общем для тех, кому эта тема интересна и кто хочет проникнуться духом старого /зк/ это может быть занятным чтивом
https://arhivach.ng/thread/8181/
Как обстоит дело с сетевым программированием? Не наворачивать же акторы для какой-нибудь клиентской библиотеки, которая с железкой по TCP общается, например? Неужели придется тащить джавовые либы и, о боже, работать с Future?
В зависимости от того, каким там требования оптимизации, конечно.
В том же эрланге тсп-либа по умолчанию в активном режиме работает через мессадж-пассинг, т.е. процесс (актор) овнер сокета получает сообщения из него таким же образом, как от других процессов, через майлбокс. Понятно что такой режим годится только для трастед среды, в остальных случаях уже всякие active_once/passive режимы с recv, но всё равно удобно, т.к. процессы можно блочить сколько удобно, типа сделал accept, recive или recv и актор сидит себе курит до следующего пакета, других не блокирует. Понятно что это можно и тупо на тредах сделать, но могут быть траблы с синхронизацией, а на акторах - получил пакет - отправил его другому актору дальше, всё просто и из этого легко лепить всякие датафлоу пайлплайны, которые описываются почти декларативно, охуенно же.
Так а нафига ты акторы сравниваешь с тредами, когда и в джаве и в скале есть futures? Точно так же у тебя будет неблокирующий код, а писать map/flatMap/for-comprehension проще чем пердолить мессаджи туда-сюда, да и про backpressure нужно меньше думать.
У меня есть железка, которая общается с внешним миром через проприетарный протокол поверх TCP. И мне нужно набросать клиентскую библиотеку, которая могла бы подключаться к железке и обмениваться с ней данными.
Я погуглил и нашел только Netty, который позволяет написать что-то подобное. Но там Java и клиентский код работает на Future. Тут я подумал, что можно было бы накидать обертку на Scala.
Посмотри на джавовое NIO, возможно для него есть готовые Скала-обертки (вроде даже видел что-то такое для ZIO, но могу ошибаться).
Для разбора бинарного протокола можешь посмотреть на scodec.
>Не наворачивать же акторы для какой-нибудь клиентской библиотеки
Почему бы и нет? Акка и на уровне акторов, и на уровне стримов TCP поддерживает прямо из коробки.
>>679586
Вот для monix есть, но оно сырое наверное: https://github.com/monix/monix-nio. Хотя может этого достаточно.
>>677293
https://info.lightbend.com/rs/558-NCX-702/images/COLL-white-paper-akka-A-to-Z.pdf
>>679532
>из этого легко лепить всякие датафлоу пайлплайны, которые описываются почти декларативно
Сырые акторы нихуя не декларативны, это самое императивное дерьмо которое можно себе представить. Проблемы с синхронизацией доступа они решают, но дедлок в сложном графе словить можно запросто, и вообще актор - достаточно низкоуровневый примитив.
>>678888
>Хотя для какой нибудь джявапараши где дауны до сих пор сидят на тредпулах
Да в джаве и акку используют, и futures, и Rx. Я бы не сказал что там все плохо с concurrency.
> c дисрапторами
Гнать на дисраптор - быть дауном. Да, его придумали 10 лет назад, но эти идеи и сейчас работают, и даже используются в той же Aкке в виде aeron'a.
>Почему бы и нет? Акка и на уровне акторов, и на уровне стримов TCP поддерживает прямо из коробки.
Вангую, что будет лютый отсос в плане производительности. Лучше уж тогда раскурить Netty и ZIO. Набросать транспорт на Netty и вкорячить обертку на ZIO.
>Вангую, что будет лютый отсос в плане производительности.
1) Очень вряд ли. Может netty и быстрее akka io, но не в разы.
2) С netty достаточно неприятно работать, очень уж низкоуровневый.
3) Мы не знаем требований по производительности. И я сомневаюсь что они сколько-нибудь серьезные.
Так и на акторах можно не думать о backpressure, это вообще проблема имплементации, чтобы консьюмеры пуллили столько, сколько им нужно. В эликсире для этого есть GenStage/Flow/Broadway, в акке, как я понимаю, Akka Reactive Streams, где уже всё готово для построения пайплайнов.
Фьючеры подходят для некоторых вещей, но датафлоу с конкретной топологией на них нормальный не напишешь.
Как быстрее всего вкатиться в Акку и начать зашибать 300кк в наносекунду, разрабатывая дата лейк пайплайны, выгребая данные из кафка и отправляя их в кликхаус для дальнейшей аналитики?
>Сырые акторы нихуя не декларативны, это самое императивное дерьмо которое можно себе представить. Проблемы с синхронизацией доступа они решают, но дедлок в сложном графе словить можно запросто, и вообще актор - достаточно низкоуровневый примитив.
Что там блять низкоуровневого? Один блок с матчами и вызовом той или иной get/update функции по стейту, который просто аргумент функции? Охуеть низкоуровнево. Вся логика актора это просто функция, с двумя возможными сайд эффектами - порождением нового актора или посылкой сообщения.
Правильно максимка говорил, что те, кто вместо всяких акка, окку и т.д. брал эрланг - сразу всё понимал и у него не было никаких дебильных вопросов к этой модели. В обратную сторону это к сожалению не работает. Я эти претензии про некую "низкоуровневость" и "некомпозабельность" акторов, только от аккистов слышу, это при том что ещё в 80х Хьюитт с Аха запилили акторам и целую алгебру, и детонационную семантику и всё на свете.
> Один блок с матчами и вызовом той или иной get/update функции по стейту, который просто аргумент функции
> просто функция, с двумя возможными сайд эффектами
Это и называется "низкоуровнево". Хочешь оперировать более высокими абстракциями - пердолься в ручном режиме.
И да:
> с двумя возможными сайд эффектами - порождением нового актора или посылкой сообщения
Ты забыл про мутацию внутреннего стейта актора, ради чего все и затевалось. И вот тут-то все говно и всплывает. И нет, akka-fsm тоже говно.
Например, в эрланге стейт актора это просто аргумент рекурсивной функции. Если в акка не так, я не думаю, что в языке с нормальной поддержкой типов, которым скала вроде является, может быть проблема с тайпсейфети стейта и его изоляции от чистого кода.
Да, в акке тоже можно так делать.
Но вот простой кейс - мне нужно дернуть метод, возвращающий Future, и после завершения продолжить обработке мейлбокса.
Или (если без фьючур) послать сообщение актору и дождаться ответа, после чего продолжить обработку.
В акке для этого есть stash. В эрланге selective receive. И то и другое вынуждает делать все это руками, в то время как в fs2 например я ПРОСТО БЕЗ ЗАДНЕЙ МЫСЛИ делаю evalMap и всё.
>в то время как в fs2
Снова эти почитатели тормозящих глючных поделок. Никому не всрались забагованые библиотеки тайплевла.
Сейчас бы сравнивать ЭфЭссДва, которая вообще не про канкаренси и акка, которая успешно реализует модель акторов и используется в продакшене в крупнейших компаниях.
Веселье начинается, когда ты посылаешь сообщение актору, а тот тебе не отвечает или отвечает, но слишком поздно. И вот тогда ты начинаешь наворачивать различные таймауты и повторные посылки сообщений. Начинаешь мутировать состояние актора переходя из одного состояния в другое через ctx.become и т.д.
>в то время как в fs2 ты по кд ебешься с имплиситами и пытаешься понять какой очередной тайпкласс из котов тебе нужно реализовать, чтобы все завелось.
Это я еще не говорю о том как "весело" дебажить это тайплевельное говно.
Так если ты там выполняешь что-то адово медленное, зачем тебе вообще ждать ответ? Пиши асинхронно. Актор отправил сообщение и пошёл дальше заниматься своей хуйнёй, когда будет результат, тогда он достанет его из майлбокса и продолжит обработку.
Как мне понять, что тот актор еще работает над моим ответом, а не упал с исключением или еще что-нибудь? Реализация модели акторов в Akka это хрестоматийный пример из палаты мер и весов как не нужно делать. Все хорошо до того момента, пока тебе не нужно заботиться об исключительных и краевых случаев. А потом начинается обмазывание таймаутами и посылка хелсчеков по кд, лол.
Так а зачем тебе это понимать?
Что ты будешь с этой ошибкой делать?
Мне кажется, в твоём примере какая то проблема с дизайном, например.
Чем-то напомнил знакомого челика, который сделал проект с акковскими акторами, пользуясь почти исключительно ask, а потом доказывал мне что акка тормозное говно, лол.
Ты делегируешь некую задачу акторам и ждешь от них ответа. Если вычисления затягиваются, то ты должен как-то проверить, что на той стороне все в порядке и нужно немного подождать.
Именно поэтому в Akka все так помойно - нужно наворачивать таймауты и писать императивный код.
В Erlang тоже самое сделано на порядок лучше.
Ну а про тайплевел стек уже сказали - пока разберешься откуда лезет очередной имплисит и раскуришь как пользоваться очередным тайплклассом - тебя уже из конторы выгонят и все перепишут за неделю на Java + Spring/Hibernate.
>брал эрланг - сразу всё понимал и у него не было никаких дебильных вопросов к этой модели
>Я эти претензии про некую "низкоуровневость" и "некомпозабельность" акторов, только от аккистов слышу
У меня нет никаких вопросов и недопонимания, не один год с этим подходом работал. Претензии к низкоуровневости и некомпозабельности - результат опыта написания нескольких достаточно сложных приложений на акке и чтения кучи доки, блогов и литературы.
>Что там блять низкоуровневого?
Тебе уже ответили, добавлю только что алгебра и денотационная семантика не делают что-то менее низкоуровневым.
>>680142
Проблема типизации акторов оказалась очень сложной. Ее как-то решили в akka-typed, там типизируется поведение актора. Чтобы стабилизировать этот API понадобилось несколько лет. Не могу сказать насколько это облегчает жизнь в плане работы со состоянием потому что сам никогда ей не пользовался. Теоретически, фундаментальная проблема остается - в разных состояниях актор способен обрабатывать разные подмножество типов сообщений, то есть его поведение - не total function, не знаю как на это русском.
>>680523 >>680500
Можно как-то потоньше?
>>680535
Ты на пути к вот этому пиздецу - https://news.ycombinator.com/item?id=21564461. Это нормально, многие кто работал с аккой через это проходили.
>>680545
>Как мне понять, что тот актор еще работает над моим ответом, а не упал с исключением или еще что-нибудь?
А никак, как и в любой другой распределенной системе. Не совсем ясно только зачем внутри одной машины создавать распределенную систему.
>А никак, как и в любой другой распределенной системе. Не совсем ясно только зачем внутри одной машины создавать распределенную систему.
Не брать же котов и поверх них наворачивать фс2, хэтэппэпэфорэсс и прочие тайплевел библиотеки? Там от обилия имплиситов и тайпклассов начинает идея краснить и я начинаю проклинать Сугака!
Зачем ты меня оскорбляешь? Скала сложна, тайплевел библиотеки еще сложнее в освоении. Никакого профита переход на Скала не дает.
> Зачем ты меня оскорбляешь?
Это было идиоматическое выражение за мат извени
> Скала сложна, тайплевел библиотеки еще сложнее в освоении
То есть ты не осилил...
> Никакого профита переход на Скала не дает
... но говоришь, что профита нет.
Не приходила в голову мысль, что некоторые люди не просто так пердолятся с ФП, а все-таки имеют с этого какие-то профиты?
>все-таки имеют с этого какие-то профиты?
ОКР свой тешат, вестимо.
Большая часть этой тайплевелопараши жутко неэргономичная, и проблем приносит больше, чем решает.
Как выглядит правильный Scala-стек, на котором можно ваять топовые приложения, оставляя позади почитателей Java и Kotlin с их спрингом и хибернейтом?
Подонки! Снова потерли такую дискуссию!
Кот бы знал.
Скала неплохой язык, но вот с экосистемой и сообществом беда -- и того, и того немного и оно жутко фрагментированное.
В итоге у нас 4 (или 5?) одних только библиотек для эффектов, которые делают одно и то же, и все, сука, сырые и недоделанные.
Еще и плохо совместимые между собой.
Что уж тут говорить о каких-то стандартных решениях?
Насколько я знаю, почти у всех какая-то своя комбинация великов из говна и палок, обычно поверх акки хттп.
Большая часть около-тайплевел решений вообще мне напоминает машины голдберга -- оно могло бы быть даже полезным, если бы не было настолько сложно и абсурдно устроено, и если бы имело чуть менее хуевый апи, не напоминающий костыли, обмотанные колючей проволокой.
>Как выглядит правильный Scala-стек, на котором можно ваять топовые приложения, оставляя позади почитателей Java и Kotlin с их спрингом и хибернейтом?
Кот бы знал. Из фреймворков в скале есть фактически только акка -- плей и лагом производные, в общем-то.
Все остальное -- набор библиотек разной степени всратости и совместимости.
Ну финч/финатра еще.
Сама акка, в принципе, збс для около ивентсорсинга, там очень много есть готового для этого -- но это все-таки довольно специфическая штука.
Еще, например, у softwaremill много хороших либ, тот же sttp или quickleans (просто, блядь, сравни с monocle).
У Li Haoyi тоже есть хорошо спроектированные либы, тот же fastparse или upickle например.
Кстати, экспресс-тест на хуевость для библиотеки -- если в зависимостях shapeless или magnolia, то скорее всего ей будет мучительно больно пользоваться, а ее исходники до и после обфускации будут выглядеть одинаково.
Кот бы знал.
Скала неплохой язык, но вот с экосистемой и сообществом беда -- и того, и того немного и оно жутко фрагментированное.
В итоге у нас 4 (или 5?) одних только библиотек для эффектов, которые делают одно и то же, и все, сука, сырые и недоделанные.
Еще и плохо совместимые между собой.
Что уж тут говорить о каких-то стандартных решениях?
Насколько я знаю, почти у всех какая-то своя комбинация великов из говна и палок, обычно поверх акки хттп.
Большая часть около-тайплевел решений вообще мне напоминает машины голдберга -- оно могло бы быть даже полезным, если бы не было настолько сложно и абсурдно устроено, и если бы имело чуть менее хуевый апи, не напоминающий костыли, обмотанные колючей проволокой.
>Как выглядит правильный Scala-стек, на котором можно ваять топовые приложения, оставляя позади почитателей Java и Kotlin с их спрингом и хибернейтом?
Кот бы знал. Из фреймворков в скале есть фактически только акка -- плей и лагом производные, в общем-то.
Все остальное -- набор библиотек разной степени всратости и совместимости.
Ну финч/финатра еще.
Сама акка, в принципе, збс для около ивентсорсинга, там очень много есть готового для этого -- но это все-таки довольно специфическая штука.
Еще, например, у softwaremill много хороших либ, тот же sttp или quickleans (просто, блядь, сравни с monocle).
У Li Haoyi тоже есть хорошо спроектированные либы, тот же fastparse или upickle например.
Кстати, экспресс-тест на хуевость для библиотеки -- если в зависимостях shapeless или magnolia, то скорее всего ей будет мучительно больно пользоваться, а ее исходники до и после обфускации будут выглядеть одинаково.
> если бы не было настолько сложно и абсурдно устроено, и если бы имело чуть менее хуевый апи
Можешь привести конкретный пример сложности и абсурда? И который не был бы вызван тем, что тебе просто НЕПРИВЫЧНО.
Ты вообще либами про которые пиздишь пользовался или реддита с еще какой хуйней начитался?
>В итоге у нас 4 (или 5?) одних только библиотек для эффектов, которые делают одно и то же, и все, сука, сырые и недоделанные.
Есть cats-effect - старая доделанная и zio - новая недоделанная. Есть еще monix, но он еще и про стириминг и тоже доделанный.
>Что уж тут говорить о каких-то стандартных решениях?
Что ты имеешь в виду по стандартным решением? Навязанные фреймворком библиотеки?
>Из фреймворков в скале есть фактически только акка -- плей и лагом производные, в общем-то.
Каким хуем плей производная акки?
>Ну финч/финатра еще.
А еще scalatra, xitrum, lift. Выбирать заебешься, если подойти основательно к вопросу.
>quickleans (просто, блядь, сравни с monocle)
Сравнили уже - https://nrinaudo.github.io/optics/libraries.html, есть свои плюсы и минусы у обеих библиотек.
Т.е. ты работаешь на них как ИП и получаешь всего 5400$ что ли? Ебать ты долбоёб братишка.
Тут речь шла о стандартном наборе библиотек для решения типичных задач. На Java/Kotlin это Spring, Hibernate, gRPC и еще тонна протестированных и отлаженных решений, с которыми ты можешь собрать приложение буквально за несколько часов.
В Scala-мире каждый пытается пердолиться в эффекты и доказывает всему миру, что его либа самая лучшая и именно ему нужно нести деньги.
Но библиотеки для написания REST-сервисов как не было так и нет, для работы с сетью ничего толкового нет - приходится тащить библиотеки из джавы.
Какие-нибудь драйверы для kafka, redis, mongodb - мимо.
Ёбобо?
Альтернатив много, это факт.
Но говорить что
> библиотеки для написания REST-сервисов как не было так и нет
это наглый пиздёж.
Так же и про
> драйверы для kafka, redis, mongodb - мимо
Ты бы хоть погуглил прежде чем набрасывать.
Ну рассказывай, где работаешь
Да гуглил я. Десяток альтернатив одного и того же и все не доделано и забаговано. Оттого и бегают все эти микрочелики из чата в чат и просят помочь залифтить им монаду в очко.
>Ты вообще либами про которые пиздишь пользовался?
Пользовался, конечно.
>Есть cats-effect - старая доделанная и zio - новая недоделанная. Есть еще monix, но он еще и про стириминг и тоже доделанный.
Давай посчитаем:
1. scalaz -- старая недоделанная
2. twitter future -- старая доделаная
3. cats-effect -- старая доделаная
4. zio -- новая недоделаная
5. monix -- старая недоделаная
И еще вроде у Олежки в тофу был какой-то очередной нескучный велик для того же самого, но это неточно.
И все эти либы, в сущности, содержат реализацию одной и той же абстракции над асинхронной задачей, которая и так, блядь, есть из коробки.
Видимо, писать велики очень интересно.
>А еще scalatra, xitrum, lift
И из них два скорее мертвы, чем живы, а про третий никто не слышал. Охуенный выбор.
Scalatra, впрочем, хорошая, жаль что не популярна.
>Каким хуем плей производная акки?
Тут слегка дал маху, прошу прощения. Энивей, акку все равно юзает.
>Ты вообще либами про которые пиздишь пользовался?
Пользовался, конечно.
>Есть cats-effect - старая доделанная и zio - новая недоделанная. Есть еще monix, но он еще и про стириминг и тоже доделанный.
Давай посчитаем:
1. scalaz -- старая недоделанная
2. twitter future -- старая доделаная
3. cats-effect -- старая доделаная
4. zio -- новая недоделаная
5. monix -- старая недоделаная
И еще вроде у Олежки в тофу был какой-то очередной нескучный велик для того же самого, но это неточно.
И все эти либы, в сущности, содержат реализацию одной и той же абстракции над асинхронной задачей, которая и так, блядь, есть из коробки.
Видимо, писать велики очень интересно.
>А еще scalatra, xitrum, lift
И из них два скорее мертвы, чем живы, а про третий никто не слышал. Охуенный выбор.
Scalatra, впрочем, хорошая, жаль что не популярна.
>Каким хуем плей производная акки?
Тут слегка дал маху, прошу прощения. Энивей, акку все равно юзает.
>Какие-нибудь драйверы для kafka, redis, mongodb - мимо.
Слегка поддвачну.
>redis
Почему-то все драйвера для редиса на скале -- говно говна.
То заброшен, то глючный, то нехватает чего-то.. зато часто пытаются очередной нескучный дсл выдумать. В итоге взяли джавовый jedis, полет нормальный.
>mongodb
Есть два стула -- глючный reactivemongo с ебанько кор контрибьютором, и официальный драйвер, который суть тонкая обертка поверх официального драйвера для джавы.
Впрочем, второй как раз вполне норм.
>kafka
Сам не пользовался, но народ очень хвалил коннектор для альпакки.
Думаю, тут ты слегка преувеличиваешь.
>ты можешь собрать приложение буквально за несколько часов
Миллиард раз слышал этот аргумент. Мои возражения:
1) Я вот бекэндом занимаюсь лет 7 уже, и мне ни разу не нужно было собрать приложение за несколько часов, а вот поддерживать сервис годами - случалось. Так что поддерживаемость намного важнее настолько быстрого старта.
2) Если команда уже какое-то время работает над проектом, определились с набором библиотек и уже есть несколько сервисов, то сервис заводится точно также за несколько часов.
3) Я допускаю что какое-то задачи, возможно круды c UI, легче лепить на джавовых технологиях, но джавовый стек все еще здесь и для специфических задач можно его использовать - в этом вся прелесть JVM. Но я все-таки хотел бы увидеть конкретный пример, да и вообще возможно для этих целей какой-нибудь RoR подойдет лучше.
>Но библиотеки для написания REST-сервисов как не было так и нет
Что такое библиотека для написания REST-сервисов? Http-сервер + либа для jsonа? Может тебе lagom этот сраный подойдет?
>Какие-нибудь драйверы для kafka
У самой кафки очень простой API, для низкоуровневой работы никакие либы не нужны. Для стриминга коннектор из alpakka очень хорош. Ну и для kafka-streams официальная обертка есть.
>redis
Использовал пару, неплохие были. Если чего-то нет, либы обычно предоставляют доступ к нижележащему джавовому объекту.
>mongodb
Есть casbah, но я его очень давно использовал, как и саму эту базу. И это не единственная опция.
И еще есть либы для SQL, Cassandra и еще хер знает чего. Вообще бы сказал что библиотеки - как раз сильная сторона Скалы, приятно с экосистемой работать.
>>682090
>1. scalaz -- старая недоделанная
Принимается.
>2. twitter future -- старая доделаная
Не ставит задачей контроль над эффектами, как и стандартная Future.
>5. monix -- старая недоделаная
В каком месте не доделанная? Мне действительно интересно, я не использовал ее много, но выглядит достаточно прилично.
>И все эти либы, в сущности, содержат реализацию одной и той же абстракции над асинхронной задачей, которая и так, блядь, есть из коробки.
Если бы все было так просто. Эти библиотеки имеют разную философию и технические компромиссы, и хорошо что они есть. Так можно договориться до того что всем нужно одним ЯП пользоваться.
Ну и ты видимо смешиваешь контроль над эффектами и асинхронные задачи. Это не одно и тоже.
>И из них два скорее мертвы, чем живы, а про третий никто не слышал. Охуенный выбор.
Про популярность судить не могу, но выбор есть и так или иначе, они делают свою работу.
>Тут слегка дал маху, прошу прощения. Энивей, акку все равно юзает
Можно на netty запускать как раньше.
>ты можешь собрать приложение буквально за несколько часов
Миллиард раз слышал этот аргумент. Мои возражения:
1) Я вот бекэндом занимаюсь лет 7 уже, и мне ни разу не нужно было собрать приложение за несколько часов, а вот поддерживать сервис годами - случалось. Так что поддерживаемость намного важнее настолько быстрого старта.
2) Если команда уже какое-то время работает над проектом, определились с набором библиотек и уже есть несколько сервисов, то сервис заводится точно также за несколько часов.
3) Я допускаю что какое-то задачи, возможно круды c UI, легче лепить на джавовых технологиях, но джавовый стек все еще здесь и для специфических задач можно его использовать - в этом вся прелесть JVM. Но я все-таки хотел бы увидеть конкретный пример, да и вообще возможно для этих целей какой-нибудь RoR подойдет лучше.
>Но библиотеки для написания REST-сервисов как не было так и нет
Что такое библиотека для написания REST-сервисов? Http-сервер + либа для jsonа? Может тебе lagom этот сраный подойдет?
>Какие-нибудь драйверы для kafka
У самой кафки очень простой API, для низкоуровневой работы никакие либы не нужны. Для стриминга коннектор из alpakka очень хорош. Ну и для kafka-streams официальная обертка есть.
>redis
Использовал пару, неплохие были. Если чего-то нет, либы обычно предоставляют доступ к нижележащему джавовому объекту.
>mongodb
Есть casbah, но я его очень давно использовал, как и саму эту базу. И это не единственная опция.
И еще есть либы для SQL, Cassandra и еще хер знает чего. Вообще бы сказал что библиотеки - как раз сильная сторона Скалы, приятно с экосистемой работать.
>>682090
>1. scalaz -- старая недоделанная
Принимается.
>2. twitter future -- старая доделаная
Не ставит задачей контроль над эффектами, как и стандартная Future.
>5. monix -- старая недоделаная
В каком месте не доделанная? Мне действительно интересно, я не использовал ее много, но выглядит достаточно прилично.
>И все эти либы, в сущности, содержат реализацию одной и той же абстракции над асинхронной задачей, которая и так, блядь, есть из коробки.
Если бы все было так просто. Эти библиотеки имеют разную философию и технические компромиссы, и хорошо что они есть. Так можно договориться до того что всем нужно одним ЯП пользоваться.
Ну и ты видимо смешиваешь контроль над эффектами и асинхронные задачи. Это не одно и тоже.
>И из них два скорее мертвы, чем живы, а про третий никто не слышал. Охуенный выбор.
Про популярность судить не могу, но выбор есть и так или иначе, они делают свою работу.
>Тут слегка дал маху, прошу прощения. Энивей, акку все равно юзает
Можно на netty запускать как раньше.
>приятно с экосистемой работать.
Так нет никакой экосистемы. Экосистемы это в Java. Решил ты собрать микросервис - за минуту создаешь каркас приложения через Spring Boot и вот у тебя уже HTTP сервер, доступ к базе и упаковка в fat jar с зависимостями. Всякие кафки и прочие mq доступны через spring модули. Доступ к данным через spring data. Валидация, сериализация json и прочие фишки - дело нескольких строк. Иногда достаточно одной аннотации на классе.
Ты путаешь экосистему и фреймворк. Экосистема есть всегда, просто выглядит в разных языках по-разному. И все что ты описал я делал и на Скале.
Стоит ли читать красную книгу и проникаться философией функционального программирования? Или же сразу навернуть Akka in action и идти искать работу?
> Стоит ли читать красную книгу и проникаться философией функционального программирования? Или же сразу навернуть Akka in action и идти искать работу?
Учишь акку, находишь работу, пока получаешь стаж разработки на скале уже учишь ФП, котов и прочее, делаешь небольшой пет или контрибут в тофу, с опытом работы на скале и наработками на ФП-стеке уже изи перекатываешься в жёлтый банк или любую другую контору с ФП-скалой, с руками оторвут.
Точка, ВТБ, Касперский, Аррайвал, Дино системс, Сбер. Это те, которые первые пришли в голову.
> Точка
У них вроде офис в Екб - видимо, и зарплаты соответствующие
> ВТБ
Ты про "Метр Квадратный"? У них там акка, а не ФП
> Касперский
Про этих не в курсе
> Аррайвал
ЧСВшные ебанашки
> Дино системс
Зарплата ниже рынка
> Сбер
Хз что там по зарплате, но скорее всего не особо весело. Прошли те времена, когда сбертех переманивал всех зарплатами х2 от рынка
> Яндекс
Будешь на собеседовании крутить алгоритмы 4 часа буквально, 4 интервью с разными собеседующими по часу каждое, и если не пройдешь тебе даже не сообщат. Если пройдешь - предложат сильно ниже рынка.
>У них вроде офис в Екб - видимо, и зарплаты соответствующие
Платят по рынку и используют тайплевел стек - как ты и хочешь.
>Ты про "Метр Квадратный"? У них там акка, а не ФП
Ну так тебе деньги зарабатывать или в функциональщину пороться?
>Про этих не в курсе
Что-то ваяют на Акка
>ЧСВшные ебанашки
Чего это? Вроде интересные ребята. Роботы там проектируют и машины на автопилоте. Но там вроде тоже Акка.
>Зарплата ниже рынка
Зато есть позиции на тайплевел стек. Будешь тайпклассами обмазывать и монады дрочить!
>Хз что там по зарплате, но скорее всего не особо весело. Прошли те времена, когда сбертех переманивал всех зарплатами х2 от рынка
Не так давно искали лида на 200к на какой-то проект распределенного веб-скраппера на Акка
Даже не знаю. Ты проходил собеседование именно в эту команду? Лиды из скала чата говорят, что именно у них в команде нет этих алгоритмический секций по несколько часов.
Насколько мне известно там однохуйственно куда ты идешь.
Я просто проходил эту ебалу и мне бомбануло что потом даже фидбэк не дали.
Ебал я такие приключения, добавляю в ЧС всех их HR-ок которые пишут в телегу иногда.
Это если ты идешь в основу, то тебя будут гонять по алгоритмам и т.д. А Вертикали - это единственная команда где не наложен запрет на Scala и там два чувака лидят проекты. С их слов у них нет такой жести, которая происходит в других командах.
Кстати вспомнил что к нам на прошлой работе приходил на собеседование парень, который там работал. По его словам, зарплаты там реально небольшие
>Во всех остальных будешь за дошик ебошить.
Откуда такая информация?
>Посмотрел, Аррайвал же в Питере?
Вроде бы да. Это бывший ТРА Роботикс.
>содержат реализацию одной и той же абстракции над асинхронной задачей, которая и так, блядь, есть из коробки
если ты сравниешь Future из стандартной либы с IO из cats-effect, то земля тебе пухом - тебе уже ничего не поможет
Как вкатиться в изуми и дистейдж? Нужно ли покупать кофе? И как быть с недостатком документации и отсутствием реальных проектов?
Уже не первый раз слышу, что нет ничего лучше изуми и дистейдж.
Не заебало?
Имеется информация от проверенного человечка. Я бы даже сказал - инсайдера! Короче, скала плугин никогда не перестанет краснить код, т.к. работают над ним на отъебись и закрывают только те баги, которые прилетают от пользователей Big Data Tools плагина. Т.к. сам скала плугин не приносит JB ничего кроме убытков, то работа над багами и фичами, которые прилетают от простых скалалазов идет сразу во внутренний беклог.
Тут еще стоит заметить, что подавляющее большинство скалистов сидит на EAP версии IDEA и пользуется всеми благами абсолютно бесплатно.
Выходит, что работать на подобных пользователей - западло чистой воды.
Ага, особенно пользователям Big Data Tools нужна Scala 3, которая еще даже не вышла. Тролли дальше.
Они готовятся к новому релизу, чтобы у пользователей была возможность работать со спарком из скала 3.
Жирно конечно, но если задуматься, JB продвигает Котлин, и поддержка в их IDE - один из главных аргументов.
Видится логичным "ломать" иногда Скала-плагин, чтобы еще больше отжать у неё сегмент рынка.
Ты и правда такой наивный? Очевидно же, что варианта только два. Первый - про команду, которая пилит скала плугин попросту забыли и она пашет по остаточному принципу "лишь бы не поперли с конторы". Второй - ведется только багфиксинг и вливание назначительных фич от пользователей биг дата тулз (можно взглянуть по трекеру задач).
Зачем JB вливать деньги в скала плугин и держать на зарплате с десяток очень недешевых инженеров, когда скала плагин распространяется абсолютно бесплатно (мы не учитываем те смехотворные "фичи" которые доступны только для пользователей ультимейт версии идеи), а практически все разработчики ставят себе либо коммунити эдишон, либо EAP версию идеи и накатывают на нее плагин.
Только одно меня радует - очень скоро все пользователи спарк перейдут на питон апи и тогда скалу можно будет окончательно закопать. Биг дата тулз сейчас единственный проект, который приносит деньги в том числе и за счет скала плагина.
Осталось только дождаться когда спарк на 3-ей скале будет работать. Как бы я был рад если бы так стало с выходом 3-его спарка. Но я на 95% уверен что этого не случится, и на 3-ю скалу они будут переезжать года два.
>>685146
Теоретически это логично, но
1) не припомню когда плагин ломали, а пользуюсь им уже лет пять
2) есть репутационные потери от время от времени ломающегося софта
3) плагин могут форкнуть (но это не точно, не знаю нюансов лицензирования)
>>685206
>про команду забыли
>ведется только багфиксинг и вливание назначительных фич
>очень скоро все пользователи спарк перейдут на питон
Иди в другом месте троллируй.
Не удаляйте мои сообщения!
Как так выходит, что в телеграм понабежало целая толпа новых разработчиков, которые перекатываются на скала и уже что-то пишут на зио и котах, когда я только закончил книгу по котам (не понравилась) и читаю красную книгу?
И что? Хочешь сказать, что это единственная книга, которая мне понадобится, чтобы вкатиться в скалу и начать писать приложения?
Зачем ты скидываешь мне ссылку на книгу по ФП для начинающих?
Посмотрел интервью с Олегом. Почему у студентов без опыта намного выше шанс вкатиться в Scala чем у человека, который перекатывается с другого стека или языка?
Типы.
Удалите тред. Видно же, что никому не интересен мертвый язык программирования.
Потыкал палочкой шизика.
даже роадмап для вкота не написали. тю такими быть
Сначала красную книгу осиль.
Там слишком сложные задачи. Я постоянно подглядываю в решения!
Это не руль
Так что там с вкатом в Скэйлу? Какие книги читать и какие пет-проекты делать, чтобы взяли хотя бы джуниором на 20к?
Как стать Скейла-синиором если нет вакансий джуниора? Ведь без коммерческого опыта в Скейле не берут на работу!
Не берут на скэйлу, хотя у меня 7 лет джавы/спринг/хубирнейт. Все подавай коммерческий опыт на акке и котах.
А как же ты напиздишь за опыт на скейле, когда тебя сразу выведут на чистую воду, когда попросят предоставить контакты конторы и попросят рассказать о проекте? Ну и потом пойдут вопросы по кишочкам какой-нибудь акки или кэтс-эффект.
300кк в наносекунду на джаве получают убертимлиды в каких-нибудь крупных банках на мутных проектах. Сениору не дают больше 180к. Все что выше - это уже работа лида или спеца с уникальными скилами, где на всю страну пару человек с подобным опытом.
>когда попросят предоставить контакты конторы
Никогда не просили ещё.
>попросят рассказать о проекте?
Рассказывал про Java проект, как-будто мы делали его на Scala.
>Ну и потом пойдут вопросы по кишочкам какой-нибудь акки или кэтс-эффект.
Чтение документации и подготовку к интервью всё-равно никто не отменял ;-)
На сколько хорошо Akka подходит для разработки законченных приложений на Scala? Или придется тащить какие-то левые библиотеки для реализации авторизации/аутентификации, работе с базой данных, валидации данных?
Мне нужен фреймворк или библиотека для разработки веб-сервисов/микросервисов, чтобы можно было общаться по HTTP. Клиент я потом сам набросаю на JS/TS, который будет ходить по HTTP на бекенд за данными.
Тебе же сказали - плей фреймворк
Нужно же как-то оправдываться перед родителями пенсионерами, почему их чадо до сих по не может устроиться работать программистом, а вынужден лифтить монады себе в очко и уплетать наваристый борщец, который седая мать каждый день приносит сычику в его детскую.
https://www.youtube.com/watch?v=_sIOwQdQPIQ
Рекомендую к просмотру отличную презентацию, где показана вся несостоятельность модели акторов и библиотеки Akka для разработки коммерческих приложений.
Докладчик подробно разбирает недостатки Akka и объясняет как они ловко смогли перейти на ZIO+Typelevel стек.
Лол, а какую замену этот белорусский Ванька предлагает Akka Cluster Sharding?
Презентацию не смотрел, но вангую там в худшем случае "меняем акторы на IO", а в лучшем - "меняем акторы на fs2".
Альтернативы cluster sharding в виде JVM библиотек тупо нет Ignite/Hazelcast в расчет не берем, максимум что можно сделать это взять какой-нибудь zookeeper.
>>710364
Очевидно, что Акка с ее акторами и прочими кластерами никому не нужна, т.к. на порядок усложняет разработку распределенных систем. Вместо этого пишутся микросервисы на зайо и котах, а общение между этими микросервисами реализуют через кафку.
Сейчас бы на полном серьезе пердолиться в акторы и разруливать проблемы с фьючами и таймаутами и сплитбрейнами.
Это я еще не говорю о проблемах с дебагингом систем, которые построены поверх модели акторов.
> Сейчас бы на полном серьезе пердолиться в акторы
В эликсире тоже акторы, там без всякого перлолинга всё делается. Кроме него и скалы с аккой разве есть альтернативы?
В том то и дело, что в BEAM (Erlang, Elixir) заточен под модель акторов и языки позволяют очень элегантно и надежно разрабатывать системы на основе этой модели.
Акка же является не очень качественной копией модели акторов, которую слизали с эрланга. Разработка и отладка приложений написанных с использованием Акки представляет собой настоящий кошмар.
Поэтому сейчас все отказываются от Акки и пишут микросервисы на котах и зайо, а общение между сервисами реализовывают через кафку.
Платная правда
А есть ли сервис-registry такой же как в спринге, только для скалы? Ну оркестрация там и мониторинг.
Существует какая-нибудь доходчивая книжка или гайд как строить микросервисы на акке?
Когда ты выучишь математику, деньги тебе уже будут не нужны. Ты уже будешь мыслить бесконечномерными абстракциями, когомологиями и категориями, а не какими-то примитивными животными потребностями.
За математику платят больше, чем за любое программирование. Я хуею с детей, которые считаю математику неприбыльным занятием.
Была какая то akka in action, но она довольно старая.
В принципе, можешь взять любую книжку по эрлангу, и что нибудь про ddd и эвент сорсинг.
Н и у самой акки норм дока.
Энивей, акковский подход немного ортогонален микросервисам.
В средней общеобразовательной школе или в ПТУ/ВУЗе. Можешь еще репетиторством поднимать 10-15к, ну и задачки студентам решать за сотку.
Почему модератор трет сообщения в треде? Он мешает общению!
Модер трет мои сообщения и я знаю кто это.
Проигрываю как грасеас старательно трет все сообщения!
В свете последних событий, встает вопрос о востребованности таких технологий как Akka и различных систем эффектов как ZIO, Cats Effects и Monix.
Oracle собирается в следующем релизе выкатить реализацию проекта Loom. Если кто не в курсе, то Loom делает все ваши блокирующие вызовы - неблокирующими.
Возникает вопрос - зачем нужны все эти технологии, которые добавляют колоссальный оверхед по сложности освоения и накладывают серьезные ограничения по производительности приложения, когда можно будет писать в привычном стиле и не заморачиваться на счет блокирующих операций?
Loom это замена для Future, но не для IO-подобных монад, которые в первую очередь используются для контроля эффектов, а не асинхронности. Более того, Loom позволит сделать fair scheduling в fiber'ах и акке - так что все эти технологии только выиграют.
Блокирующие операции просто так неблокирующими не станут, без оверхеда не обойтись. Не говоря уже что все продукты от оракл - говно.
>IO-подобных монад
Те самые монады, которые на деле всего лишь лямбда поверх блокирующего куска кода, которой можно передать экзекьютор для выполнения на потоке? Ну так с появлением Loom тебе в принципе не понадобятся никакие системы эффектов. Ты будешь просто писать блокирующий код, а JVM сама разрулит все блокирующие вызовы.
Акка тоже уйдет на покой, т.к. не нужно будет городить грозди из акторов и обмениваться сообщением, когда можно просто фигачить тупой скала код.
Именно что и станут. Взять любой JDBC драйвер к базе данных. Если раньше все обращения к СУБД были блокирующими, то с релизом Loom все они станут неблокирующими. С точки зрения пользовательского кода ничего не поменяется, но приложение станет работать в несколько раз быстрее.
> Взять любой JDBC драйвер к базе данных. Если раньше все обращения к СУБД были блокирующими
Ну так это позорище раз асинхронные аналоги функций для работы с БД только АЖ БЛЯТЬ С БАРСКОГО ПЛЕЧА ОРАКЛИ ВСЕГО ЛИШЬ В 2020 году завезти планируют.
А вообще что мешало синхронные операции засунуть в отдельный таск/асинк/фьючер сделав их асинхронными?
> С точки зрения пользовательского кода ничего не поменяется
Можешь, пожалуйста, привести пример?
Вроде любой код который имел вид
result = do_action()
do_another_action(result)
если раньше в result был собственно результат операции, теперь там будет фьючер, так что тип менять надо и хендлить его соответствующим образом.
Менеджера заебала низкая производительность Akka в нашем приложении, а так же баги и сложность в разработке. Я предложил перейти на Cats и ZIO, но CTO не хочет переходить на эти технологии. Наша команда прекрасно понимает, что успеха у Akka как такового нет и никогда не было, но нужно предоставить железные аргументы, что система акторов и прочие модули поверх них - это всего лишь игрушки для пет проектов.
CTO рассказывает про успехи Epic Games, которые на Akka запилили часть аналитики. Правда он забывает сказать, что там ничем не примечательный сервис, который можно было реализовать и на Go с Python.
Правда в том, что:
1. Akka более стабильна и проверена временем чем ZIO;
2. Если у вас "низкая производительность акки" - вы используете её неправильно;
3. При всей моей любви к pure FP - если вы не смогли правильно приготовить акку (см. п.2), то и с cats/zio возможно не сможете. Будете потом тут набрасывать как тот ебанат с его "иммутабельность засирает GC".
Тот кому ты отвечаешь - это тот же ебанашка который троллит тут что все перешли на котов и "зайо" и теперь обязательно нужен коммерческий опыт работы с ними чтобы устроиться на работу. Но это не точно. Игнорируй его.
Не трать свое время на этот тред. Лучше вкатывайся в телеграмм каналы посвященные Scala - scala, scala jobs, ponv.
>не могут даже в Akka
>заебала низкая производительность Akka ... баги ... сложность
> предложил перейти на Cats и ZIO
ты конечно не обижайся, но проблема в тебе. как akka, так и cats/zio прекрасно показали себя в проде. ты просто ниасилил даже разобраться в юзкейсе технологий и доках. вообщем рип братишка
Попустись! Какие тебе крупные финансовые компании, лол? Тебя максимум возьмут в какой-нибудь ВТБ или Сбербанк.
Дайте уже нормальную статью где объясняется как правильно залифтить монаду себе в очелло?!
"Functors, Applicative Functors and Monads" на твоём любимом языке.
Нужны инсайды по желтому банку. Недавно в телеграмм канале челик сокрушался, что его хотели нанять пилить нескучный бекенд на spray/akka/slick для Олега. Как так выходит, что в вакансиях говорят про FP и котов с аппликативными функторами и теорию категорий, а на деле выходит пердолинг мертвого спрея и акка?
Ты че, никогда не видел чтобы в одной компании два разных стека на разных проектах было?
Братан, ты чо такой токсик? Меня не возьмут, но я не квант, я бекенд инженер. Суть в том, что на математике тоже можно рубить бабло.
>Как так выходит, что в вакансиях говорят про FP и котов с аппликативными функторами и теорию категорий, а на деле выходит пердолинг мертвого спрея и акка?
Как и с любыми вакансиями - борьба с конкурсом путем усложнения проходного порога.
>борьба с конкурсом
Они же не на Java нанимают или, прости господи, Javascript. Scala разработчиков на весь РФ не больше полутора тысяч. Из них дай бог только половина имеет коммерческий опыт работы.
Да как, черт возьми, вкатиться в тайплевел стек - https://twitter.com/ru_ostroumova/status/1273554798688768009
Как познать котов и котоэффекты? Как научиться различать, когда можно складывать числа через +, а когда нужно объявлять отдельный тайпкласс Summable для складывания типов?!
Хочу еще больше денег зарабатывать, так еще и сфлером илитарности
Какая-то одна (<700 страниц) книга закроет основную потребность? Всю эту дрочь мне лень осваивать, да и в хуй она никому не уперлась, зачем троллить. Основная потребность в этом матане - прохождение собесов у таких же шизов, как я понимаю
Какая то одна не закроет. Если приспичит отсеивать по-хардкору - пригласят настоящего профессора математики и ты будешь ему на собеседовании на кандидатскую разъяснять.
Я не настолько умен чтоб к профессорам математики наниматься. Да и это не единственная работа на скале ведь. Если зайдет, то потом разберусь как следует
С аккой с версией для дотнета так что примерно представляю
За вторую книгу спасибо, обязательно прочитаю
Дда и про акку, наверное, тоже стоит, но уже позднее
Я бы на твоем месте сто раз подумал, перед тем как соваться в Scala. Работы на ней - хуй да нихуя. На весь РФ наберется 700 вакансий. 2/3 из них - это пердолинг биг-даты в десятки гигабайт сырых данных на спарке, а остальное это либо желаемый навык от кандидата, либо проекты уровня желтого банка, где борщехлебы выпросили у менеджмента поиграться в FP.
Я не в РФ, если бы даже и жил, сваливать планирую все равно
Ну и это отчасти для души, достигаторства
Почему из каждого утюга вещают, что Акка - это тру выбор для разработки микросервисов и проектов на Скале? Посмотрел несколько презентаций, полистал книги/статьи и понял, что там толком ничего нет для разработки законченного приложения. В базу предлагают ходить через мертвый слик, авторизацию нужно самому пилить, акка-хттп - просто какой-то высер с его дсл.
Просто у акки (и скалы в целом) мягко говоря другая область использования, в отличие от пхп/руби/итд, где можно взять готовый модуль авторизации и шлёпнуть формочку.
Вижу, что большинство вакансий требует знание Akka, где в основном требуют akka-http, streams, clustering. Есть какие-нибудь годные ресурсы, где хорошо объясняют эти модули и в целом Akka?
Может быть есть кулстори как аноны вкатывались в Scala?
Братишка, помоги, что можно сделать для портфолио на скале?
Подскажи пару-тройку штук.
Моча выпилила тред про это, хоть тут спрошу. Углубился в play , поскольку на ебучем слоне уже много лет пишу, сайты близки по духу. Но именно для портфолио что б сделать?
С меня как обычно
Тебе по стеку совет нужен или по продукту?
Если первое то смотри ОП-пост, если второе то я хз, решай сам что тебе ближе.
Смотри, что можно запилить в портфолио , чтоб не стыдно показать? На пыхе к примеру в портфолио сайт естественно, плюсом эластик с редисом внедрённые , все это автодеплоится дженкинсом с битбакета того же. А что на скале можно написать , чтоб продемонстрировать ? На плей 2 собираю интернет магазин, а на скала + акка что можно? Нет идей нихуя, гугол предлагает рест фул сервис сделать и чаты/боты (что в первую очередь делают во всяких говношколах это не круто).
Я тебе так скажу, у меня на гитхабе несколько проектов на Скале, которые мы реально использовали на моей прошлой работе.
Недавно я искал новую работу, так вот - всем похуй на гитхаб. Они его даже не смотрят.
На опыт ток смотрят?
А что на собесах спрашивают кста ? У меня прям коммерческого опыта на скале не было, пробовал джуном пойти, писал что дохуя опыта коммерческой разработки в принципе (на пых, но стек большой) и я знаю что такое ооп и функциональное программирование, нахуй оно нужно, всякие шаблоны программирования и прочую поебистику знаю, но хочу перекатиться в скалу, желания дохуя, знания есть, могу сделать тестовое задание, похуй какое - один хуй отказывают, даже блять не звонят, просто тупа отказ.
Где я проебываюсь? Мне как раз показалось, что проекты помогут какие-никакие.
> знаю что такое ооп
Про порядок инициализации трейтов можешь рассказать (не заглядывая в доку)?
Вариантность дженериков?
TypeTags/ClassTags и зачем они нужны?
> и функциональное программирование
За тайпклассы из cats пояснить сможешь?
Модель выполнения cats.effect.IO?
Как интегрировать императивный java-код с fs2, сохраняя backpressure и side-effects-free?
Это не уровень джуна.
Top tier: typelevel libraries (http4s, cats/cats-effect, fs2), ZIO core;
Ok tier: twitter stack (finagle, finch, finatra);
Mid tier: lightbend/akka libs (http, streams, cluster/sharding);
Shit tier: izumi, tofu, другие высеры отечественных ФП-карго-культистов
>Shit tier: izumi, tofu, другие высеры отечественных ФП-карго-культистов
Самое весёлое, что если ты не хочешь сидеть на шее у мамки и хлебать её борщик, то возьмёшь вилку и пойдёшь чистить с улыбочкой.
>Пилить круды
>Java/Kotlin + Spring, Hibernate
Алё, дядя, как там в 2000-х? Linkin Park ещё слушаете?
Ты, наверное, не в курсе, что все эти izumi и прочие tofu не более чем локальные поделки, которые либо вовсе нигде не используются (izumi), либо являются инициативой одного человека, который может затащить в проект любое дерьмо (tofu), т.к. является лидом.
Просто рекомендую тебе посмотреть на сайт Spring - https://spring.io/
Разрабатывать приложения на Spring стало просто очень просто. Нужна аутентификация и авторизация пользователей - Spring Security. Доступ к базе данных - Spring Data. Доступ к очередям сообщений, кеширование, микросервисы, облака, батчинг данных и многое другое. Все это доступно в виде модулей, которые были оттестированы и используются в продакшене уже много лет. Для всего написана документация и чтобы подключить какой-нибудь модуль и начать его использовать тебе достаточно прочесть короткий гайд на 5 минут.
Какая-то вода маркетологическая. Есть документация и модули оттестированы? Это как в объявлении вакансии писать "у нас в офисе бесплатный чай и кофе плюс белая зарплата"
Мы же сравниваем с typelevel или lightbend стеками, верно? Так там и десятой части того, что предлагает Spring нет.
>Top tier: typelevel libraries (http4s, cats/cats-effect, fs2), ZIO core;
Очень спорно. http4s очень молодая и не протестированная библиотека в которой регулярно находят критические уязвимости. Над проектом работает один ключевой разработчик, которого "купил" Verizon.
Функционала там - кот наплакал. Обыденные вещи, которые реализуются на Spring за час-другой могут вылиться в неделю ковыряния в библиотеке http4s.
cats/cats-effect - здесь все еще хуже. Скудная документация, отсутствует пояснение, зачем нужно писать тайпклассы и бороться с имплиситами для каких-то детских примеров на уровне сравнения объектов и т.д.
В целом плохо протестирована и код написанный на котах представляет из себя такую мешанину, что без пол литра не разберешься. Ну и невозможность дебага - отличительная черта cats и всех библиотек, которые на ней основаны или используют.
ZIO - невнятная копия cats от Де Гуза. Человек просто делает деньги - ничего личного. Библиотека забагована и постоянно ловит мемори лики. Если ознакомиться с планами Джона, то можно понять, что он пытается заместить typlevel/lightbend стеки своими поделиями. Смешно!
>Ok tier: twitter stack (finagle, finch, finatra);
Здесь без комментариев. Мертвый стек, которые нигде кроме как в Twitter не используется.
>Mid tier: lightbend/akka libs (http, streams, cluster/sharding);
Единственный стек, который превалирует на рынке Scala вакансий. Нет того пиздеца со сложностью освоения typelevel стека, не нужно ебаться с имплиситами и запоминать сотни тайпклассов для примитивных вещей. Нет всех этих монад и пандарических захватов анофарических лямбд через лифтинг монад.
На рынке достаточно примерно использования той же Akka для построения высоконагруженных проектов.
>Shit tier: izumi, tofu, другие высеры отечественных ФП-карго-культистов
Локальный мем. Проекты эти либо невнятные поделки ирландских бездельников, которые пытаются показать, что они софтварная контора, которая действительно внедряет свои разработки в продакшен, а не просто досиживают до получения паспорта. Тофу и прочие поделия - не более чем больная фантазия отмороженных лидов, которые решили поиграть в разработчиков OSS.
>Top tier: typelevel libraries (http4s, cats/cats-effect, fs2), ZIO core;
Очень спорно. http4s очень молодая и не протестированная библиотека в которой регулярно находят критические уязвимости. Над проектом работает один ключевой разработчик, которого "купил" Verizon.
Функционала там - кот наплакал. Обыденные вещи, которые реализуются на Spring за час-другой могут вылиться в неделю ковыряния в библиотеке http4s.
cats/cats-effect - здесь все еще хуже. Скудная документация, отсутствует пояснение, зачем нужно писать тайпклассы и бороться с имплиситами для каких-то детских примеров на уровне сравнения объектов и т.д.
В целом плохо протестирована и код написанный на котах представляет из себя такую мешанину, что без пол литра не разберешься. Ну и невозможность дебага - отличительная черта cats и всех библиотек, которые на ней основаны или используют.
ZIO - невнятная копия cats от Де Гуза. Человек просто делает деньги - ничего личного. Библиотека забагована и постоянно ловит мемори лики. Если ознакомиться с планами Джона, то можно понять, что он пытается заместить typlevel/lightbend стеки своими поделиями. Смешно!
>Ok tier: twitter stack (finagle, finch, finatra);
Здесь без комментариев. Мертвый стек, которые нигде кроме как в Twitter не используется.
>Mid tier: lightbend/akka libs (http, streams, cluster/sharding);
Единственный стек, который превалирует на рынке Scala вакансий. Нет того пиздеца со сложностью освоения typelevel стека, не нужно ебаться с имплиситами и запоминать сотни тайпклассов для примитивных вещей. Нет всех этих монад и пандарических захватов анофарических лямбд через лифтинг монад.
На рынке достаточно примерно использования той же Akka для построения высоконагруженных проектов.
>Shit tier: izumi, tofu, другие высеры отечественных ФП-карго-культистов
Локальный мем. Проекты эти либо невнятные поделки ирландских бездельников, которые пытаются показать, что они софтварная контора, которая действительно внедряет свои разработки в продакшен, а не просто досиживают до получения паспорта. Тофу и прочие поделия - не более чем больная фантазия отмороженных лидов, которые решили поиграть в разработчиков OSS.
> невнятные поделки ирландских бездельников, которые пытаются показать, что они софтварная контора, которая действительно внедряет свои разработки в продакшен, а не просто досиживают до получения паспорта
Забавно, это так же объясняет показушно-левацкие взгляды этого персонажа.
Можешь больше рассказать о нём и его конторе?
Я в курсе о том, что тебя самый большой (и почти единственный) работодатель использующий скалу в РФ (если даже не во всём постсовке) может послать нахуй с твоими запросами.
Какого именно персонажа? Их там два, если ты не в курсе. Никаких пруфов, что они внедрили свои поделки - нет. Периодически выступают с докладами, где полощут мозги неокрепшим скалистам, где рассказывают как сладко пишется на изюме и дистейдже скала код.
Тот же лайтбенд почему-то не стремается упомянуть своих клиентов, среди которых сплошь и рядом топовые конторы, которые у всех на слуху.
Или взять какие-нибудь компании, которые сами рассказывают истории успеха как тот же Epic Games с его Fortnite, где чуваки запилили какую-то ебу платформу для аналитики на Akka, которая пережевывает терабайты данных каждый день.
Уже был челик в скала-чате, который сокрушался, что ему предложили пердолить скала код на лайтбенд стеке, а не на котах с тофу как об этом рассказывает Олег и прочие челики.
А из моего спича следует, что на самый распространённый в мире скалы стек следует хуй положить? Я просто сказал что в наших реалиях и на стек олежи нельзя положить.
>и почти единственный
Попустись! Сейчас на рынке полтора десятка компаний, которая ищет скалистов.
В каком месте он самый распространенный? Пока среди скалистов лидирует lightbend стек, а именно Akka с ее http, стримами и кластером. За ним плетется тайплевел стек. А в самом конце всякие тофу и дистейджы с изуми, которые дай бог используются в одном желтом банке. За пределам РФ про них разве что только на презентациях слышали.
Я тебе могу скинуть презентацию челика, который выбросил Akka с проекта и притащил тайплевел стек вместе с ZIO, а общение между сервисами хуйнул через кафку. Можешь посмотреть на тотальный ахуй среди зрителей.
Но в целом я с тобой согласен. Если ты пытаешься перейти на Scala живя при этом в РФ, то лучше этого не делать, т.к. есть неиллюзорный шанс остаться без работы.
Тиньк же. Оттуда тофу и пошел. Райф сидит на тайплевел стеке судя по вакансии. Но вангую, что там и Акки достаточно. Правда я хз, кто туда добровольно пойдет. Народ там мерзотный.
Зайди в скала/джава чат в телеге и поищи месседжы по слову райфайзен. Там пробегало пара челиков, которые костерили этот банк. Если коротко, то там на собеседовании такой анал-карнавал, что даже Яндекс бы позавидовал.
> скала/джава чат в телеге
Не подскажешь конкретные каналы?
Вообще я заходил когда-то в разные русскоязычные чатики, но там опять же обсуждается тофу и прочее НИНУЖНО
scala_ru, pro.jvm
>Пока среди скалистов лидирует lightbend стек
Чел, прочитай сообщение на которое я ответил и попробуй всосать контекст. Я про лайтбенд и говорил, но есть ещё реалии локального рынка и знать придётся оба стека как минимум.
>реалии локального рынка
Реалии локального рынка таковы, что тайплевел и тем более тофу с изюми составляет, в лучшем случае, процентов 10-15 от общего числа вакансий. Если мы говорим про изюм с тофу, то мы тогда вообще ограничиваемся одной компанией.
> то мы тогда вообще ограничиваемся одной компанией
Которая составляет как минимум 70% рынка скалы в РФ.
Если уж так мыслить, есть ещё смысл посмотреть на 20% епамов/люксофтов/прочих торговцев телами, для которых по хорошему нужно знать вообще все возможные стеки. Сказать-то что хотел?
>70% рынка скалы в РФ
Попустись. Тебе уже сказали, что твой Тиньк это никакой не монополист на рынке Scala. В РФ полтора десятка компаний, которые активно пишут на Scala и Тиньк пожалуй самая помойная из них.
>Попустись.
Попустился, господи помилуй нахуй.
> В РФ полтора десятка компаний
Что за компании-то? Там хотя бы пара штук есть со сравнимой с ТБ вилкой?
>со сравнимой с ТБ вилкой
Чет проиграл в голосину. Ты же в курсе, что приходящим с улице скалистам они предлагают меньше джавистов? Я не говорю про все загоны в этом банке.
Можешь назвать конкретные цифры сколько они предлагают? И что за загоны инб4 нельзя обедать два раза, а то они периодически спамят мне своими вакансиями, а я игнорю.
Все вакансии доступны на HH. Многие имеют открытые вилки. На одном тиньке свет клином не сошелся.
Последний раз было 100к за крепкого мидла с коммерческим опытом в акке. По загонам - на каждый пук нужна бумажка и одобрение безопасников, про обеды ты уже сам сказал.
>HR-очка сказала
А мне HR-очка говорила, что вот именно в этой команде Яндекса не дрочат алгоритмами и не заставляют проходить 8 секций собеседований, которые растягиваются на полтора месяца. Если ты понимаешь о чем я.
йеп
ну хз, мне доков по cats/cats-effect хватает.
http4s - здесь все грустно с доками и качеством либы. использую только в случае на сильной нагрузки, тк легко интегрировать с cats-based кодом.
От fs2 у меня пока только хорошие впечатления, по крайней мере после akka-streams. Опять же, использует cats/cats-effect и это очень хорошо.
В целом мне нравится движение к использованию cats/-effect, обычные Future уже давно устарели - код с IO производительнее и на порядок удобнее в комбинировании.
zio выглядит очень интересно, тк можно задать failure тип. + у них движуха в сторону многих новых либ. вот только проблема - пока они сделают лет 5+ пройдет. они даже не выкатили стабильную версию zio мотивирую тем, что активная разработка
> http4s - здесь все грустно с доками и качеством либы
Что не так с качеством? Бери jetty вместо blaze, будет чётко.
> код с IO производительнее
Справедливости ради, в 2.13 сделали BatchingExecutor.
> zio выглядит очень интересно, тк можно задать failure тип
Вот только способа композить разные типы ошибок не завезли
> движуха в сторону многих новых либ
По большей части говно какое-то, особенно недавний ZLayer. Пиздец они там макросов нахуевертели. Де Гоуз сраный маркетолог, не слушайте его нахуй, используйте ZIO как сами считаете нужным
Вот вам хорошее напутствие как правильно вкатываться в Scala. Начните с пет-проектов или лучше всего, попытайтесь внедрить Scala в текущий проект на вашей работе. Так у вас будет появится призрачный шанс устроиться Scala-разработчиком. Если вы попытаетесь целенаправленно подготовиться к собеседованию и откликнитесь на вакансии, то вас ждет разочарование, т.к. компаний, которые ищут Scala разработчиков на несколько порядков меньше чем тех, кто ищут тех же джавистов. И собеседуют там обычно так, словно вы уже имеете продакшен опыт разработки. Зарплаты тоже очень невысокие и ваш предыдущий опыт, даже если он связан с Java, попросту не учитывается.
Так что просто пилите пет-проекты и спрашивайте по знакомым, может быть кому-нибудь нужен джун скалист.
>попытайтесь внедрить Scala в текущий проект на вашей работе
охуеть совет. налепить говна, которое потом кто-то будет поддерживать. потому что без тиммейта с опытом скалы вхождение в скалу будет происходить больно и долго
Просто попытайся перечитать, что я написал, хорошо? Никто не станет нанимать человека без коммерческого опыта в Scala. В большинстве вакансий про это не пишут, но я обошел более 20 компаний и везде мне толсто намекали на то, что у меня нет именно коммерческого опыта разработки в cats/akka/zio/etc.
На просьбу посмотреть пет-проекты мне отвечали отказом, а где-то даже поднимали на смех.
Я просто хочу предостеречь желающих перейти на новый стек и язык, т.к. иной раз может быть проще остаться на той же Java и получать свои 150к веслая обычным мидлом.
Даже если тебе каким-то чудом удастся перейти на Scala, тебя ждет разочарование, т.к. зарплата крепкого мидла с несколькими годами опыта - это максимум 100к. При этом ты будешь не круды на спринге лепить, а ковыряться в отборных помоях и ночами реветь в подушку из-за того, что у тебя просто напросто проект не компилируется.
Нужно просто задаться вопросом - а стоит ли оно всех усилий?
>напиздев-про-коммерческий-опыт
Вскроется на первых вопросах, которые тебе зададут на собеседовании. Т.к. ты не имеешь коммерческого опыта в Scala, то не можешь знать всевозможных тонкостей фреймворков и библиотек.
Даже если тебя каким-то образом возьмут на работу, то ты очень быстро вылетишь с испытательного срока, т.к. просто не будешь вывозить тот уровень задач, который тебе будут давать.
Ну я пятый год уже работаю, знания углубил ещё во время релокации. Просто ты придумываешь отмазки, чтобы оправдать свою лень и безынициативность :3
>не можешь знать всевозможных тонкостей фреймворков и библиотек.
Я тебе больше скажу, даже с коммерческим опытом ты можешь этого не знать. Благо мне досталась хорошая компания, где есть практика код ревью и коллеги открыты к критике и помощи друг-другу. Поэтому все упущенные тонкости вскрываются и исправляются на код ревью. И все остаются в плюсе :3
Понятно.
Буду тогда делать пет-проекты. Может кто-нибудь меня подберет хотя бы на позицию стажера.
ой, случайно ссылка на пост прикрепилась. Если что это вопрос к скало-йобам. Мне просто нужно немножечко хайлоада...
Во-первых дохуя вычислений на сервере. Конечно можно на си написать, но зачем, если можно сразу на, например, скале.
Во-вторых - дохуя запросов на сервер. Очень дохуя. Хочу чтобы нипадало после сотни тысяч. Минимум.
Бесплатно. Что значит быстрее? У тебя есть конкретные требования по нагрузке?
Вот тебе история успеха Epic Games с Fortnite - https://www.youtube.com/watch?time_continue=258&v=MCLrA401vHw&feature=emb_logo
Они реализовали систему аналитики на Akka.
> Что значит быстрее? У тебя есть конкретные требования по нагрузке?
Ну я так чувствую.
> Они реализовали систему аналитики на Akka.
А мне нужно сервера игры сделать, в том числе с вебсокетами. Не пойдет, да?
Для игровых серверов бери Netty или Vert.x. Второй более высокоуровневый и использует Netty под капотом.
А нети на скале можно? Не люблю жабу. Еще бы от жвм отказаться вообще было бы класно. Но как понимаю замены акки+нетти+скале не найти, да?
Для игрового сервера тебе Акка не нужна. Netty - джавовая библиотека, но ее можно использовать из Scala. Там довольно стройная модель построения пайплайна. У Vert.x вроде есть Scala API.
>Еще бы от жвм отказаться вообще было бы класно
Ну тогда забей и бери какой-нибудь Erlang/Elixir или Go.
> Для игрового сервера тебе Акка не нужна
Нужно чобы сервера чтобы между собой данные кидали, отправляли всё в базочки и масштабировались легко и сами по себе. Плюс быстрый переход между инстансами, которые поднимались за микросекунду, бесшовно и без протеканий. Акка как раз вроде, не?
> Netty - джавовая библиотека, но ее можно использовать из Scala. Там довольно стройная модель построения пайплайна.
Ну, как по мне главный плюс - оно охуеть какое быстрое.
>>745307
> Ну тогда забей и бери какой-нибудь Erlang/Elixir
Я не понимаю как это сделать сделать БЫСТРЕЕ. Оно медленное же пиздец, а я хочу весь бэкенд на одном языке написать исключая жс на v8
> или Go.
Бяка.
У тебя слишком объемная задача. Такой проект ты вряд ли потянешь в одиночку. Можешь попробовать написать сетевую часть на Netty/Vert.x, а оркестрацию реализовать через Kubernetes. Но твое общение между игровыми серверами (я так понял, что ты хочешь что-то навроде бесшовного мира с точки зрения игрока), то вряд ли ты это в принципе потянешь. Я даже не уверен, что это где-то реализовано. Обычно предполагается некое лобби или игровая комната, в которую набивается фиксированное количество игроков.
В общем гугли Netty/Vert.x для сетевой части и можешь потыкать Akka для реализации оркестрации игровых серверов.
>поднимались за микросекунду
Об этом можешь сразу забыть. Даже если ты скомпилируешь свое приложение GraalVM, то все равно получишь минимум миллисекунды на старте при таком размере приложения.
Вот как я это вижу. Сетевая часть, которая реализует какую-то изолированную часть игрового мира реализована на Netty/Vert.x. Оркестрация таких игровых миров реализована через Akka/Akka-clustering. Переход между игровыми мирами происходит не мгновенно, а с задержкой, т.к. нужно отключиться от одного сервера/игрового мира и подключить игрока к другому серверу.
Ну это так, если очень высокоуровево.
> Такой проект ты вряд ли потянешь в одиночку.
Да я в курсе, мне главное чтобы проект имел возможность такое сделать в теории, и на это не было затрачено тысячи денег, навроде попила собственного c++ серверного говна, постоянного устранения ебать каких протечек и прочей срани.
> Можешь попробовать написать сетевую часть на Netty/Vert.x, а оркестрацию реализовать через Kubernetes.
> В общем гугли Netty/Vert.x для сетевой части и можешь потыкать Akka для реализации оркестрации игровых серверов.
Вот последнее выглядит опенсорсно и хайлоад чувствуется.
>>745315
> GraalVM
> Enterprise Edition: Trialware
Страшна. А какие другие оче тонкие вм есть? JamVM как оно вообще?
>>745318
Ну в целом примерно так и подразумевалось.
Не уверен стоит ли использовать облако, тут уже зависит от кол-ва протечек и жирноты жабовм. Если осилю найти решение с достаточной потенциальной производительностью, то в принципе можно будет купить выделенные сервера по странам и делать роутинг на железе инстанс ту инстанс, чтобы пинга не было.
Меня что смущает, что кроме скалы и нетти по-сути выбрать не из чего, два дня уже гуглю. Может что-то не так делаю? Всё остальное либо медленное, либо с/с++ без непротечной асинхронности.
Понятно что через натив можно нахуярить быстрой логики и подключение сишных/крестовых либ, да таких чтобы не потекли уязвимости. Но. Есть еще какие-то плюшки, в том числе с акка, да?
scala-native - супер сырая поделка, акка на ней работать не будет.
>>745318
Вообще если тебе нужно быстро обрабатывать игровой стейт в памяти, то возможно у тебя как раз один из немногих юз-кейсов для голых акторов. Не знаю зачем тебе смешивать нетти с аккой, это ничем хорошим не закончится - это две слишком сложные и разные технологии чтобы использовать их в одном проекте.
Лол, моча снова потерла сообщения.
>Scala сочетает объектно-ориентированное и функциональное программирование в одном выразительном, высокоуровневом языке.
javascript шоле?)
Моча фанат сцалы и ему становится неприятно
Откуда в ру-сегменте Scala такая ненависть к Akka и прочим продуктам компании Lightbend? Читал очередной срач в телеграм-канале, где очень известные в узких кругах люди с пеной у рта доказывали, что Akka - это прямой путь к неподдерживаемому коду, сложности разработки и постоянным багам. Как контрпример приводили всякие тофу, дерево и прочие малознакомые библиотеки. Ну и было пару человек, которые говорили, что система акторов - это не более чем академическая поделка, которая хороша только на бумаге и в стенах университетов и все то, что можно написать на Akka, можно переписать на typelevel стек с котами, дубами и прочими эфэс2.
Единственная адекватная предъява Акке за всё время - это когда они сделали её динамически типизированной, а тайпед акка была кривой сырой обёрткой над динамической дриснёй.
>не более чем академическая поделка, которая хороша только на бумаге и в стенах университетов
Тех кто так говорит можешь смело слать нахуй.
>можно переписать на typelevel стек с котами, дубами и прочими эфэс2.
А можно вообще на ассемблер. Вопрос не в можно/нельзя ведь.
Там были аргументы в духе - "без понимания всех акторов и их сообщений ты не поймешь как работает один актор, т.к. они все взаимосвязаны" и "актор хранит некий стейт, когда как cats и прочие библиотеки typelevel позволяют описать ту же логику только в рамках чистых функций и их комбинаций".
>без понимания всех акторов и их сообщений ты не поймешь как работает один актор, т.к. они все взаимосвязаны
Актор как раз ничего не должен знать о системе, и его поведение определяется множеством сообщений которые он принимает, отсылает и типом его стейта.
Так вот там так и говорили, что актор он же принимает какие-то сообщения (здесь все прозрачно), а так же отсылает. А для того, чтобы отослать эти сообщения нужно иметь actorref на актор, которые эти сообщения принимает. Получается связанность между акторами.
Ну так реф может приходить вместе со всходящим сообщением, или его можно получить через режистри.
Связанность неизбежна конечно, но она сама по себе не является проблемой.
Обычно так не делают и либо передают реф через конструктор, либо создают актор внутри другого актора.
А копаться через реджистри или не дай бог передавать реф через сообщение - считается моветоном.
Ну и Дегоуз, когда презентовал ZIO на одной из конференций сильно критиковал модель акторов и акку в частности, приводя схожие аргументы, что мол без понимания взаимосвязи всех акторов в системе ты не можешь полностью осознать как функционирует один конкретный актор.
Была еще презентация, где приводились примеры со сложностью отладки, разработки и производительностью акки. Там команда попросту выбросила код на акке и переписала все на котах и зио, а общение между сервисами реализовала через кафку.
>Обычно так не делают и либо передают реф через конструктор, либо создают актор внутри другого актора.
Смотря насколько поздний уровень связывания нужен.
А при синхронных запросах к актору хранить реф для ответа вообще не имеет смысла.
>А копаться через реджистри или не дай бог передавать реф через сообщение - считается моветоном.
Это странно. Например, в других языках с акторами это считается нормальным. Есть на то какая-то причина? Если что модель акторов это никак не ограничивает. Акторы это ведь про супер позднее связывание смолток-стайл, что вообще удобно для систем с нефиксированной топологией и всяких распределённых сред, хотя ничего не мешает эмулировать через них что-то фиксированное, вроде синхронных каналов (CSP выводима из модели акторов).
> мол без понимания взаимосвязи всех акторов в системе ты не можешь полностью осознать как функционирует один конкретный актор.
Актор это блекбокс, который вообще не знает ничего об окружающем мире. На счёт связанности не понял в чём проблема, очевидно одни сущности должны знать про другие и не знать про остальные. Как ты это будешь разруливать, передавая реф в конструкторе, через реджистри, по глобальному имени или в рантайме через сообщение - зависит от решаемой задачи.
Вот здесь чувак обсуждает недостатки Akka на реальном проекте - https://youtu.be/_sIOwQdQPIQ?t=509
Вопрос касательно масштабирования Akka - https://youtu.be/_sIOwQdQPIQ?t=1648
>Это странно. Например, в других языках с акторами это считается нормальным. Есть на то какая-то причина?
Ну, наверное потому, что это не типобезопасно. Ведь когда ты лезешь через реджистри то ты используешь текстовое имя актора.
>Актор это блекбокс, который вообще не знает ничего об окружающем мире
Это с точки зрения пользователя Актор - это блекбокс у которого есть набор некоторых сообщений, которые он принимает и посылает вызывающей стороне. А если ты посмотришь внутрь актора, то увидишь, что он так или иначе связан с другим актором или акторами и зависит от их сообщений.
>На счёт связанности не понял в чём проблема, очевидно одни сущности должны знать про другие и не знать про остальные
В случае котов ты получаешь чистые функции, которые оперируют над какими-то общеизвестными типами данных и ничего не знают о других функциях (либо эта связь невелика). А потом ты эти функции комбинируешь и используешь zio или cats-effect для многопоточности.
Напутствие всем желающим перейти на Scala - https://twitter.com/vkozulya/status/1290756248569339906
Выбирая Scala вы многократно уменьшаете количество доступных вам вакансий, а также обрекаете себя на нечеловеческие страдания, связанные со сложностью языка и отсутствием внятной поддержки со стороны IDE. Про библиотеки и фреймворки я вообще молчу. Не надейтесь найти хотя бы что-нибудь приближенное по качеству из мира Java. Все что вам остается - это разгребать невнятные помои на имплиситах или пытаться сравнить числа через тайпклассы.
Если не верите, то можете открыть hh.ru и посмотреть сколько вакансий на Scala есть в СНГ и сколько их на Java. Хинт - на Scala не более 600 вакансий, 3/4 из которых - это пердолинг спарка и "биг-даты" на 10 гигабайт.
>дезинформации
>298 вакансий «Scala NOT Spark»
https://hh.ru/search/vacancy?clusters=true&enable_snippets=true&text=Scala+NOT+Spark&L_save_area=true&area=113&from=cluster_area&showClusters=true
>4912 вакансий «Java NOT Javascript»
https://hh.ru/search/vacancy?clusters=true&area=113&enable_snippets=true&salary=&st=searchVacancy&text=Java+NOT+Javascript
Тем, что Scala там используется исключительно как DSL к Apache Spark. Настоящей бекенд разработки ровно на 298 вакансий по всему СНГ.
И спроса с них, разумеется, в 50 раз выше чем с рядового джависта. По итогу имеем 300 вакансий по всему СНГ, зарплаты на уровне крепкого мидла - начинающего сениора Java и при этом непомерные требования от компании. Отличная идея получить job security, лол. Вылетишь с такой работы и потом хуй найдешь новую.
> зарплаты на уровне крепкого мидла - начинающего сениора Java
Но в Scala обычно и вкатываются околосеньёры из BigData?
Сейчас C# Senior, смотрю в сторону Scala middle вакансий - по з.п. как правило сильно интереснее.
>>768777
> Тем, что Scala там используется исключительно как DSL к Apache Spark.
Да, DS достаточно использовать Scala как DSL - он просто напишет spark.sql(""" свою хуету """)
Что касается разработчика, который обеспечит для DS данные в HDFS - будет обычный бэкэнд с пердолингом всяких плагинов для сбора и аггрегации данных
Просто не надо смотреть ваканси DS и аналитиков
Схерали? Как раз с вебмакаки спроса больше из-за конкуренции со стороны рабочих, а не работадателей.
>Но в Scala обычно и вкатываются околосеньёры из BigData?
Еще раз BigData и Apache Spark связан со Scala как программирование на Java под JSF. Обычной бекенд разработки в привычном ее понимании на Scala всего 298 вакансий на весь СНГ.
>Что касается разработчика, который обеспечит для DS данные в HDFS - будет обычный бэкэнд с пердолингом всяких плагинов для сбора и аггрегации данных
Ты просто не разбираешься в теме. Открой хотя бы hh.ru и посмотри чем занимаются Scala разработчики.
>вебмакаки
>спроса больше из-за конкуренции со стороны рабочих
Тебе 10 лет? Ты хотя бы представляешь как работает спрос и предложение? Java является одним из самых популярных языков для разработки бекенда. Я уже приводил пример количества вакансий для джава разработчиков - их больше 4к на одно только СНГ, когда чистых бекенд вакансий на Scala - 298. Компаниям нужны Java разработчики и они конкурируют между собой, предлагая лучшие условия.
Ты еще не забывай, что для Java есть градация по уровням - junior,middle,senior. На Scala есть разве что только крепкий middle и senior с 5 годами промышленной разработки. Именно из-за этого у какого-нибудь джависта срывает крышу и он думает, что он сходу будет получать 200к.
Просто открой тот же scala_jobs и посмотри зарплатные вилки и требования. Джуниоры не нужны, а требования и зарплаты там такие, что проще остаться на той же Java и писать нескучные бекенды на Spring/Hibernate за 150-180к будучи мидлом. Сеньорские зарплаты джава-разработчиков ты можешь посмотреть в hh.ru. Крепкий сеньор в Москве может получать 240-280к на руки.
По крайней мере это не требует тех ментальных затрат как какой-нибудь cats-effects или monix с zio, чтобы написать тот же самый сервис, только в FP стиле. Платят ровно столько же, сколько предлагают скалисту, а то и больше, если мы говорим о сеньорах. Еще не забывай, что однажды устроившись на работу Scala разработчиком, ты вряд ли сможешь сменить компанию. В Java это делается на раз-два с прибавкой к зарплате минимум 20%.
>не требует ментальных затрат
Раньше это называлось словом "неосиляторство".
Для жатника это конечно пункт номер один, чтоб осиливать ничего не нужно было.
Вообще, ящитаю, что ты демагог, потому что вместо сравнения свойств самих языков ты оцениваешь какие-то побочные характеристики, вроде вакансий, зарплат и прочей хуиты, слабо относящейся к делу.
По факту джява - это кобол, на котором просто противно писать, а скала позволяет выражать мысли куда более ясно, делая при этом меньше ошибок, а поэтому лучше подходит для энтерпрайза. Попробуй лучше развернуть свою защиту джавы в этом ключе, не прибегая к маркетинговой агитации про зарплаты, вакансии и кто там на что переходит.
>По факту джява - это кобол, на котором просто противно писать, а скала позволяет выражать мысли куда более ясно, делая при этом меньше ошибок
Может быть и так, но скала - очередной жвм высер, который с трудом нашел себе очень узкую нишу.
>а поэтому лучше подходит для энтерпрайза
Возможно, но все пишут на джаве. И будут писать, потому что джава в последние годы начала хорошо развиваться + вокруг джавы очень хорошая экосистема и инструменты разработки.
Твои аргументы не имеют под собой абсолютно никакой аргументации и тем более нет никаких оснований полагать, что Scala пригодна для широкого использования в энтерпрайзе.
>побочные характеристики, вроде вакансий, зарплат и прочей хуиты, слабо относящейся к делу.
Как раз подобные характеристики не являются побочным, а что ни на есть - определяющими. По этим критериям ты можешь лично убедится в том, на сколько та или иная технология широко используется в промышленной разработке. В случае Java мы имеем тысячи вакансий.
Просто признай, что Scala, за свой более чем 10-летний путь так и не сыскала популярности в этерпрайзе. Ты можешь сказать, что какой-нибудь тинек или райф ее использует, но на деле там лишь малая часть написана на этих языках и в целом, инициатива исходила от разработчиков, некоторые из которых теперь отчаянно гоняют студентов в своей школе, чтобы хоть как-то нанять новых разработчиков себе в команду.
Поддержка IDE по сравнению с Java просто никакая. Падать с эксепшенами и краснить код - обычное дело, если ты пишешь что-нибудь сложнее хелоу ворлд. Про жор памяти и тупняки IDE я и вовсе молчу. Стоит тебе открыть хоть сколько-нибудь объемный проект, как IDEA встает раком, а ты начинаешь проклинать Сугака.
Билд тулы тоже в заднице. SBT, который когда-то назывался Simple Build Tool, теперь называется Scala Build Tool, а все кто с ним работал плачут горькими слезами.
Мистер Обербски так и не понял своих ошибок и решил в Dotty (Scala 3) полностью переписать язык и сделать его похожим на смесь питона и руби. Если мы берем во внимание, что Jetbrains понадобилось более 10 лет, чтобы кое-как написать неработающий плагин для Scala, то с выходом Dotty все труды будут пущены коту под хвост и все начнется с начала.
Какие-нибудь выдающиеся библиотеки и фреймворки? Снова мимо! Разве что только Akka выделяется. Хотя Akka является нелепой попыткой натянуть модель акторов поверх JVM. Получилось, мягко сказать, так себе.
Остальные библиотеки не вызывают какого-то восторга.
Что касается работы и проектов, то тут снова все очень тухло. 3/4 все вакансий занимает скучный пердолинг в апачи спарк, где Scala используется как DSL.
Остальная вакансии это те же этерпрайз проекты, которые пилятся на Java, только вместо привычных Spring/Hibernate ты используешь какую-нибудь Akka или http4s/cats/doobie. Только вот незадача - то, что ты делал на Spring/Hibernate за условный час, ты будешь делать несколько дней, а то и недель через http4s/cats/doobie.
Привычного IoC нет, ORM тоже нет - есть только нелепая попытка запилить библиотеку для доступа к базе, где ты ручками пердолишь все запросы и рулишь транзакциями.
Я лично знаю несколько крупных проектов, которые сначала стартовали на Akka, затем поняли, что попросту обосрались, когда выяснили на сколько сложнее пердолить REST-сервисы на akka-http и ходить в базу. Потом перешли на http4s/cats/doobie, но и тут пососали хуяку, когда обнаружили на сколько медленее пишется код по сравнению со Spring/Hibernate, где за тебя все делает Spring и из коробки предоставляет все - начиная от доступа к данным (Spring Data), заканчивая кэшированием, безопасностью, REST-сервисами и интеграциями со всевозможными Kafka/RabbitMQ и прочими сервисами AWS/GCP. Все это протестировано и активно используется в крупнейших фирмах из FAANG десятками тысяч разработчиков ежедневно.
Стоит ли говорить, что какой-нибудь upsert, который в Hibernate и Spring Data был реализован в бородатые года и доступен в виде одного метода, нужно вручную написать для того же doobie.
Единственные киллер фичи Scala - это Akka и Apache Spark.
Сам язык при этом не предоставляет каких-либо преимуществ по сравнению с Java. Кейс класс уже реализованы в виде рекордов. Паттерн матчинг на поверку оказался тормозным говном. Неизменяемые структуры данных попросто отсосали у JCL, т.к жрут память и имеют значительно более высокую алгоритмическую сложность на типичные операции.
Имплиситы так и вообще будут выпиливать в Scala 3, т.к. от них одни проблемы и код превращается в магическую лапшу.
Если тебе так охото поиграться с HKT и в принципе интересна работа над типами, то для этого есть Haskell, Coq и сотоварищи.
Scala мертва, к сожалению.
Твои аргументы не имеют под собой абсолютно никакой аргументации и тем более нет никаких оснований полагать, что Scala пригодна для широкого использования в энтерпрайзе.
>побочные характеристики, вроде вакансий, зарплат и прочей хуиты, слабо относящейся к делу.
Как раз подобные характеристики не являются побочным, а что ни на есть - определяющими. По этим критериям ты можешь лично убедится в том, на сколько та или иная технология широко используется в промышленной разработке. В случае Java мы имеем тысячи вакансий.
Просто признай, что Scala, за свой более чем 10-летний путь так и не сыскала популярности в этерпрайзе. Ты можешь сказать, что какой-нибудь тинек или райф ее использует, но на деле там лишь малая часть написана на этих языках и в целом, инициатива исходила от разработчиков, некоторые из которых теперь отчаянно гоняют студентов в своей школе, чтобы хоть как-то нанять новых разработчиков себе в команду.
Поддержка IDE по сравнению с Java просто никакая. Падать с эксепшенами и краснить код - обычное дело, если ты пишешь что-нибудь сложнее хелоу ворлд. Про жор памяти и тупняки IDE я и вовсе молчу. Стоит тебе открыть хоть сколько-нибудь объемный проект, как IDEA встает раком, а ты начинаешь проклинать Сугака.
Билд тулы тоже в заднице. SBT, который когда-то назывался Simple Build Tool, теперь называется Scala Build Tool, а все кто с ним работал плачут горькими слезами.
Мистер Обербски так и не понял своих ошибок и решил в Dotty (Scala 3) полностью переписать язык и сделать его похожим на смесь питона и руби. Если мы берем во внимание, что Jetbrains понадобилось более 10 лет, чтобы кое-как написать неработающий плагин для Scala, то с выходом Dotty все труды будут пущены коту под хвост и все начнется с начала.
Какие-нибудь выдающиеся библиотеки и фреймворки? Снова мимо! Разве что только Akka выделяется. Хотя Akka является нелепой попыткой натянуть модель акторов поверх JVM. Получилось, мягко сказать, так себе.
Остальные библиотеки не вызывают какого-то восторга.
Что касается работы и проектов, то тут снова все очень тухло. 3/4 все вакансий занимает скучный пердолинг в апачи спарк, где Scala используется как DSL.
Остальная вакансии это те же этерпрайз проекты, которые пилятся на Java, только вместо привычных Spring/Hibernate ты используешь какую-нибудь Akka или http4s/cats/doobie. Только вот незадача - то, что ты делал на Spring/Hibernate за условный час, ты будешь делать несколько дней, а то и недель через http4s/cats/doobie.
Привычного IoC нет, ORM тоже нет - есть только нелепая попытка запилить библиотеку для доступа к базе, где ты ручками пердолишь все запросы и рулишь транзакциями.
Я лично знаю несколько крупных проектов, которые сначала стартовали на Akka, затем поняли, что попросту обосрались, когда выяснили на сколько сложнее пердолить REST-сервисы на akka-http и ходить в базу. Потом перешли на http4s/cats/doobie, но и тут пососали хуяку, когда обнаружили на сколько медленее пишется код по сравнению со Spring/Hibernate, где за тебя все делает Spring и из коробки предоставляет все - начиная от доступа к данным (Spring Data), заканчивая кэшированием, безопасностью, REST-сервисами и интеграциями со всевозможными Kafka/RabbitMQ и прочими сервисами AWS/GCP. Все это протестировано и активно используется в крупнейших фирмах из FAANG десятками тысяч разработчиков ежедневно.
Стоит ли говорить, что какой-нибудь upsert, который в Hibernate и Spring Data был реализован в бородатые года и доступен в виде одного метода, нужно вручную написать для того же doobie.
Единственные киллер фичи Scala - это Akka и Apache Spark.
Сам язык при этом не предоставляет каких-либо преимуществ по сравнению с Java. Кейс класс уже реализованы в виде рекордов. Паттерн матчинг на поверку оказался тормозным говном. Неизменяемые структуры данных попросто отсосали у JCL, т.к жрут память и имеют значительно более высокую алгоритмическую сложность на типичные операции.
Имплиситы так и вообще будут выпиливать в Scala 3, т.к. от них одни проблемы и код превращается в магическую лапшу.
Если тебе так охото поиграться с HKT и в принципе интересна работа над типами, то для этого есть Haskell, Coq и сотоварищи.
Scala мертва, к сожалению.
>По этим критериям ты можешь лично убедится в том, на сколько та или иная технология широко используется в промышленной разработке
Верно. Важно ли это? Для меня нет - работы и так хватает, рекрутеры регулярно пишут.
>за свой более чем 10-летний путь так и не сыскала популярности в этерпрайзе.
Давай точнее - она не стала самым популярным языком в энтерпрайзе.
>но на деле там
На деле там следуют твои домыслы. Также очевидно что в больших компаниях могут использоваться разные технологии.
>Поддержка IDE по сравнению с Java просто никакая
Практически не писал на Джаве, но сейчас поддержка скалы в IDEA хорошая, тобой описанных страшилок не наблюдается.
>Билд тулы тоже в заднице. SBT
Да вагон билд тулов есть. У меня лично нет проблем с SBT, но вот сейчас мавен используем и довольны. Знаю людей которые используют pants/bazel, из нового Mill есть - говорят годно, но я не пробовал.
> с выходом Dotty все труды будут пущены коту под хвост и все начнется с начала.
Вообще-то они уже поддерживают дотти, изменения которые далают скалу похожей на питон чисто синтаксические.
>Какие-нибудь выдающиеся библиотеки и фреймворки?
Как раз библиотеки - сильная сторона скалы. Мы тут недавно искали либу под jvm для стриминга и интеграции с кафкой, так ни в одном языке ничего лучше akka-streaming + alpakka не нашли. Quill реально вызывает восторг, circe - лучшее что есть для работы с джейсоном, ну и вообще почти любая достаточно поддерживается либа намного эргономичнее аналогов которые я видел (в основном в джаве и шарпе).
>скучный пердолинг в апачи спарк
Что ты знаешь про спарк, сынок?
>то, что ты делал на Spring/Hibernate за условный час, ...
1) Я сделаю быстрее на либах для скалы просто потому что у меня больше опыта работы с ними.
2) Думаю есть проекты которые объективно быстрее сделать на Spring (может какие-то простые круды, не уверен), но они очень простые, сделать их можно достаточно быстро на чем угодно.
3) В реальности нетривиальные проекты на спринге достаточно запутаны из-за сложного взаимодействия аннотаций, джавового боилерплейта и рефлексии.
>Привычного IoC нет
Привычка - так себе аргумент.
>ORM тоже нет - есть только нелепая попытка запилить библиотеку для доступа к базе, где ты ручками пердолишь все запросы и рулишь транзакциями.
Снова эту хуйню кто-то защищает. ORM хорошо работает в тривиальных случаях, потом следует жидкий обсер. Опять же, простые запросы делаются одинаково просто на любой достаточно развитой либе для доступа к БД, а их в скале штук пять наверное.
>Паттерн матчинг на поверку оказался тормозным говном.
Первый раз слышу, никогда за 6 лет он не был боттлнеком.
>Неизменяемые структуры данных попросто отсосали у JCL, т.к жрут память и имеют значительно более высокую алгоритмическую сложность на типичные операции
Что не имеет значения для 99.9% кода, а в большинстве оставшихся случаев мутабельных коллекций вполне достаточно.
>Сам язык при этом не предоставляет каких-либо преимуществ по сравнению с Java.
Преимущества следующие - паттерн матчинг, акцент на иммутабельности, тайпклассы, макросы и множество более мелких вещей которые существенно уменьшают размер кода.
Из основных преимуществ следует намного более высокое качество библиотек.
>Имплиситы так и вообще будут выпиливать в Scala 3, т.к. от них одни проблемы и код превращается в магическую лапшу.
Не так - вместо импилиситов хотят дать инструменты, которые будут покрывать все их полезные юз-кейсы, и при этом быть более понятными новичкам.
>Scala мертва, к сожалению.
К сожалению, ты выбираешь тулы которые оптимизированы для тривиальных случаев и делают сложные приложения плохо поддерживаемыми.
К сожалению, ты пиздишь о том, о чем не знаешь.
К сожалению, тебя тут читают другие люди и могут поверить, хотя бы отчасти.
К сожалению, поэтому я должен потратить время на этот пост и макнуть тебя в твое же дерьмо, долбоеб.
К счастью, это доставило мне удовольствие.
>По этим критериям ты можешь лично убедится в том, на сколько та или иная технология широко используется в промышленной разработке
Верно. Важно ли это? Для меня нет - работы и так хватает, рекрутеры регулярно пишут.
>за свой более чем 10-летний путь так и не сыскала популярности в этерпрайзе.
Давай точнее - она не стала самым популярным языком в энтерпрайзе.
>но на деле там
На деле там следуют твои домыслы. Также очевидно что в больших компаниях могут использоваться разные технологии.
>Поддержка IDE по сравнению с Java просто никакая
Практически не писал на Джаве, но сейчас поддержка скалы в IDEA хорошая, тобой описанных страшилок не наблюдается.
>Билд тулы тоже в заднице. SBT
Да вагон билд тулов есть. У меня лично нет проблем с SBT, но вот сейчас мавен используем и довольны. Знаю людей которые используют pants/bazel, из нового Mill есть - говорят годно, но я не пробовал.
> с выходом Dotty все труды будут пущены коту под хвост и все начнется с начала.
Вообще-то они уже поддерживают дотти, изменения которые далают скалу похожей на питон чисто синтаксические.
>Какие-нибудь выдающиеся библиотеки и фреймворки?
Как раз библиотеки - сильная сторона скалы. Мы тут недавно искали либу под jvm для стриминга и интеграции с кафкой, так ни в одном языке ничего лучше akka-streaming + alpakka не нашли. Quill реально вызывает восторг, circe - лучшее что есть для работы с джейсоном, ну и вообще почти любая достаточно поддерживается либа намного эргономичнее аналогов которые я видел (в основном в джаве и шарпе).
>скучный пердолинг в апачи спарк
Что ты знаешь про спарк, сынок?
>то, что ты делал на Spring/Hibernate за условный час, ...
1) Я сделаю быстрее на либах для скалы просто потому что у меня больше опыта работы с ними.
2) Думаю есть проекты которые объективно быстрее сделать на Spring (может какие-то простые круды, не уверен), но они очень простые, сделать их можно достаточно быстро на чем угодно.
3) В реальности нетривиальные проекты на спринге достаточно запутаны из-за сложного взаимодействия аннотаций, джавового боилерплейта и рефлексии.
>Привычного IoC нет
Привычка - так себе аргумент.
>ORM тоже нет - есть только нелепая попытка запилить библиотеку для доступа к базе, где ты ручками пердолишь все запросы и рулишь транзакциями.
Снова эту хуйню кто-то защищает. ORM хорошо работает в тривиальных случаях, потом следует жидкий обсер. Опять же, простые запросы делаются одинаково просто на любой достаточно развитой либе для доступа к БД, а их в скале штук пять наверное.
>Паттерн матчинг на поверку оказался тормозным говном.
Первый раз слышу, никогда за 6 лет он не был боттлнеком.
>Неизменяемые структуры данных попросто отсосали у JCL, т.к жрут память и имеют значительно более высокую алгоритмическую сложность на типичные операции
Что не имеет значения для 99.9% кода, а в большинстве оставшихся случаев мутабельных коллекций вполне достаточно.
>Сам язык при этом не предоставляет каких-либо преимуществ по сравнению с Java.
Преимущества следующие - паттерн матчинг, акцент на иммутабельности, тайпклассы, макросы и множество более мелких вещей которые существенно уменьшают размер кода.
Из основных преимуществ следует намного более высокое качество библиотек.
>Имплиситы так и вообще будут выпиливать в Scala 3, т.к. от них одни проблемы и код превращается в магическую лапшу.
Не так - вместо импилиситов хотят дать инструменты, которые будут покрывать все их полезные юз-кейсы, и при этом быть более понятными новичкам.
>Scala мертва, к сожалению.
К сожалению, ты выбираешь тулы которые оптимизированы для тривиальных случаев и делают сложные приложения плохо поддерживаемыми.
К сожалению, ты пиздишь о том, о чем не знаешь.
К сожалению, тебя тут читают другие люди и могут поверить, хотя бы отчасти.
К сожалению, поэтому я должен потратить время на этот пост и макнуть тебя в твое же дерьмо, долбоеб.
К счастью, это доставило мне удовольствие.
>Да вагон билд тулов есть.
Они все дерьмовые.
>Вообще-то они уже поддерживают дотти
Ну как поддерживают - пытаются усидеть на двух стульях. Они никак не могут сделать так, чтобы IDEA перестала краснить скала код, забивая на баги годами, но при этом пердолят поддержку дотти.
>Мы тут недавно искали либу под jvm для стриминга и интеграции с кафкой, так ни в одном языке ничего лучше akka-streaming + alpakka не нашли.
Попустись! В Spring годами поддерживал стриминг из кафки. И он, в отличии от той же акки - протестирован и отлажен крупнейшими проектами во всем мире. Ну и так, на заметку, акка - это не настоящая скала.
>Quill реально вызывает восторг
По сравнению с чем? С хибернейтом? Ну если тебе нравится ручками пердолить запросы в базу, то да, наверное это крутая библиотека. А когда тебе нужно решать задачи бизнеса, то хибернейт - это лучшее, что есть в индустрии. Сгенерировать классы по схеме базы данных и предоставить высокоуровневый и типобезопасный API, который из коробки дает кэширование и рулежку транзакциями - это только в хибернейте.
> circe - лучшее что есть для работы с джейсоном
Сесре - ничто по сравнению с джексоном или гсоном. Твое поделие от кающегося соевого куколда даже не имеет сотой части функционала, что предоставляют jackson или gson. Про производительность я вообще молчу. Твой circe просто отсасывает у джава либ.
>Что ты знаешь про спарк, сынок?
А чего ты себе анус начал рвать, старина? Спарк - это не скала и не бекенд разработка. Спарк нужен только аналитикам и прочим SQL-программистам.
>Думаю есть проекты которые объективно быстрее сделать на Spring
Любые бекенды проще и быстрее делать на Spring, т.к Spring - это отточенный годами фреймворк, который позволяет тебе в считанные минут собрать готовый каркас приложения. Попробуй написать крупное приложение без IoC - посмотрим как ты будешь руками все объекты создавать и проставлять зависимости. Собственно количество вакансий и проекты показали, что именно Spring является доминирующей технологией на рынке бекенд разработки.
>ORM хорошо работает в тривиальных случаях
ORM одинаково хорошо работает во всех случаях. Для тривиальных CRUD тебе автоматически будут созданы нужные методы, с помощью которых ты можешь модифицировать записи в базе. Если нужны хитрые запросы, то тебе доступен HQL, который позволяет типобезопасно выбрать нужные данные. Нужен голый SQL - ожалуйста. Это я еще не говорю о таких вещах как связи между сущностями, ленивые записи, которые поттягиваются только при обращении к полям и всякоке кеширование, которое ускоряет работу приложения. Ничего такого в Scala-мире даже близко нет.
>Да вагон билд тулов есть.
Они все дерьмовые.
>Вообще-то они уже поддерживают дотти
Ну как поддерживают - пытаются усидеть на двух стульях. Они никак не могут сделать так, чтобы IDEA перестала краснить скала код, забивая на баги годами, но при этом пердолят поддержку дотти.
>Мы тут недавно искали либу под jvm для стриминга и интеграции с кафкой, так ни в одном языке ничего лучше akka-streaming + alpakka не нашли.
Попустись! В Spring годами поддерживал стриминг из кафки. И он, в отличии от той же акки - протестирован и отлажен крупнейшими проектами во всем мире. Ну и так, на заметку, акка - это не настоящая скала.
>Quill реально вызывает восторг
По сравнению с чем? С хибернейтом? Ну если тебе нравится ручками пердолить запросы в базу, то да, наверное это крутая библиотека. А когда тебе нужно решать задачи бизнеса, то хибернейт - это лучшее, что есть в индустрии. Сгенерировать классы по схеме базы данных и предоставить высокоуровневый и типобезопасный API, который из коробки дает кэширование и рулежку транзакциями - это только в хибернейте.
> circe - лучшее что есть для работы с джейсоном
Сесре - ничто по сравнению с джексоном или гсоном. Твое поделие от кающегося соевого куколда даже не имеет сотой части функционала, что предоставляют jackson или gson. Про производительность я вообще молчу. Твой circe просто отсасывает у джава либ.
>Что ты знаешь про спарк, сынок?
А чего ты себе анус начал рвать, старина? Спарк - это не скала и не бекенд разработка. Спарк нужен только аналитикам и прочим SQL-программистам.
>Думаю есть проекты которые объективно быстрее сделать на Spring
Любые бекенды проще и быстрее делать на Spring, т.к Spring - это отточенный годами фреймворк, который позволяет тебе в считанные минут собрать готовый каркас приложения. Попробуй написать крупное приложение без IoC - посмотрим как ты будешь руками все объекты создавать и проставлять зависимости. Собственно количество вакансий и проекты показали, что именно Spring является доминирующей технологией на рынке бекенд разработки.
>ORM хорошо работает в тривиальных случаях
ORM одинаково хорошо работает во всех случаях. Для тривиальных CRUD тебе автоматически будут созданы нужные методы, с помощью которых ты можешь модифицировать записи в базе. Если нужны хитрые запросы, то тебе доступен HQL, который позволяет типобезопасно выбрать нужные данные. Нужен голый SQL - ожалуйста. Это я еще не говорю о таких вещах как связи между сущностями, ленивые записи, которые поттягиваются только при обращении к полям и всякоке кеширование, которое ускоряет работу приложения. Ничего такого в Scala-мире даже близко нет.
>Они все дерьмовые
>не могут сделать так, чтобы IDEA перестала краснить скала код
>ручками пердолить запросы в базу
>только в хибернейте
>даже не имеет сотой части функционала
>Спарк - это не скала и не бекенд разработка
>Спарк нужен только аналитикам и прочим SQL-программистам
Еще раз - не говори про вещи, про которые ты только на дваче слышал.
>Любые бекенды проще и быстрее делать на Spring
Это точно не так, поскольку я не раз видел очень сложный код на спринге, который можно было бы намного понятнее написать на скале (что собственно я и делал).
>Попробуй написать крупное приложение без IoC - посмотрим как ты будешь руками все объекты создавать и проставлять зависимости.
Да давно уже пишу, проблем не обнаружил. Наоборот, граф зависимостей и их создание явно выражены в коде, все очень понятно. Хотя имплиситы в этом помогают, это да.
>ORM одинаково хорошо работает во всех случаях
>созданы нужные методы
>тебе доступен HQL
>Нужен голый SQL
Точно одинаково хорошо работает?
>HQL, который позволяет типобезопасно выбрать нужные данные
Где ты там типобезопастость увидел? Ты с hibernate вообще работал? HQL - еще один язык, который нужно учить, со своими нюансами. Он такой же некомпозируемый как и SQL, и тебе именно что нужно ручками пердолить запросы в базу.
>Это я еще не говорю о таких вещах как ...
И в каждой из них есть миллион подводных камней. Опять же, они работают хорошо в тривиальных случаях и приводят к очень труднообнаруживаемым багам и проблемам с производительностью в других.
Вообще суть таких фреймворков в том что они очень много скрывают от программиста, хотя стоит как можно больше функционала делать явным, использующим обычные конструкции языка, создавать кирпичики которые можно легко понимать по отдельности и свободно композировать друг с другом. А то потом появляются "программисты на спринге", которые могут сделать простой типовый сервис за час, но как только появляются проблемы, начинают беспомощно лупать глазками, городить хаки и тратить недели на починку багов, а все из-за того что часто не понимают даже как их любимые спринг с хибернейтом работают.
>Они все дерьмовые
>не могут сделать так, чтобы IDEA перестала краснить скала код
>ручками пердолить запросы в базу
>только в хибернейте
>даже не имеет сотой части функционала
>Спарк - это не скала и не бекенд разработка
>Спарк нужен только аналитикам и прочим SQL-программистам
Еще раз - не говори про вещи, про которые ты только на дваче слышал.
>Любые бекенды проще и быстрее делать на Spring
Это точно не так, поскольку я не раз видел очень сложный код на спринге, который можно было бы намного понятнее написать на скале (что собственно я и делал).
>Попробуй написать крупное приложение без IoC - посмотрим как ты будешь руками все объекты создавать и проставлять зависимости.
Да давно уже пишу, проблем не обнаружил. Наоборот, граф зависимостей и их создание явно выражены в коде, все очень понятно. Хотя имплиситы в этом помогают, это да.
>ORM одинаково хорошо работает во всех случаях
>созданы нужные методы
>тебе доступен HQL
>Нужен голый SQL
Точно одинаково хорошо работает?
>HQL, который позволяет типобезопасно выбрать нужные данные
Где ты там типобезопастость увидел? Ты с hibernate вообще работал? HQL - еще один язык, который нужно учить, со своими нюансами. Он такой же некомпозируемый как и SQL, и тебе именно что нужно ручками пердолить запросы в базу.
>Это я еще не говорю о таких вещах как ...
И в каждой из них есть миллион подводных камней. Опять же, они работают хорошо в тривиальных случаях и приводят к очень труднообнаруживаемым багам и проблемам с производительностью в других.
Вообще суть таких фреймворков в том что они очень много скрывают от программиста, хотя стоит как можно больше функционала делать явным, использующим обычные конструкции языка, создавать кирпичики которые можно легко понимать по отдельности и свободно композировать друг с другом. А то потом появляются "программисты на спринге", которые могут сделать простой типовый сервис за час, но как только появляются проблемы, начинают беспомощно лупать глазками, городить хаки и тратить недели на починку багов, а все из-за того что часто не понимают даже как их любимые спринг с хибернейтом работают.
>На Scala есть разве что только крепкий middle и senior с 5 годами промышленной разработки
Тред тянется уже много месяцев а я не устаю орать с этого высера
Пришел в скалу джуном на 60к+соцплюшки в миллионнике с полгода опыта на жаве за 45к (медианные по городу), за еще полгода апнулся до 75к
На акке хттп да.
Думаю со временем вкатиться в ФП, как и оно дозреет для тырпрайза, и я для него.
Ну акка это не скала, а так - пародия. На плюсах поинтереснее проекты будут. На скале один смех.
Ну а что продолжать. Ты занимаешься какой-то ерундой, когда мог свои рест сервисы на спринге пилить за 100к минимум.
>100к
Зарплата крепкого мидла/вялого сеньера в миллионнике, ебик. Продолжай хуйню нести, говорю.
Миллионика всего три - мск, спб, нск. Все остальные перди таковыми не являются. Ты что, Антон Дегузло? Монаду-то залифтил себе в очелло?
Давайте-ка сравним ЗП скалистов и джавистов эмпирически. Смотрим статистике по UK за 2020, 2019, 2018 годы:
https://www.itjobswatch.co.uk/default.aspx?q=scala+java&l=&id=900&p=6
Scala
10th Percentile £42,500 £43,750 £42,500
Median annual salary£75,000 £72,500 £70,000
90th Percentile £101,125 £107,500 £107,500
Java
10th Percentile £37,500 £34,000 £32,750
Median annual salary£65,000 £60,000 £55,000
90th Percentile £107,500 £96,250 £90,000
Единственная позиция где Scala < Java - 90-ый перцентиль за 2020 год, причем это значение такое как для Java за предыдущие годы.
Может в штатах не так? Вот статистика stackoverflow:
https://insights.stackoverflow.com/survey/2020#technology-what-languages-are-associated-with-the-highest-salaries-worldwide-united-states
За скалу платят больше, чем за любой другой язык, по сравнению с джавой намного больше (150k vs 120k) Мировая статистика примерно такая же, но разрыв еще сильнее (76k vs 50k).
>>772456
>Миллионика всего три
Ну ахуеть теперь. Что же по-твоему означает слово миллионник?
Те самые скала вакансии, где нужны только приципл или хотя бы сеньор девелоперы, которые до этого лет 7-10 пердолили на джаве? Ну да, адекватное сравнение.
>Мировая статистика
Теперь открой hh.ru и узри, что за Скэйлу платят ровно столько же, а иногда даже и меньше, чем за джаву со всем привычным спрингом и хибернейтом.
>Миллионника всего три
Чел, я думал ты просто троллишь в треде, но ты походу реально шизофреник.
Не знаю как смотреть аналитику на hh, по данным запросов java not javascript
Указана1771
от 70 000 руб.1496
от 145 000 руб.908
от 220 000 руб.453
от 290 000 руб.144
от 365 000 руб.47
и scala
Указана129
от 95 000 руб.119
от 155 000 руб.92
от 215 000 руб.59
от 270 000 руб.24
от 330 000 руб.13
можно построить какое-никакое графическое cопоставление ЗП (пикрелейтед). Кто бы мог подумать что и в СНГ за скалу платят больше.
>>772470
В глаза долбишься? Там весь спектр вакансий представлен, от £30k до £100k.
>Указана 1771
>и scala
>Указана 129
На этом предлагаю закрыть тред и впредь банить недоумков, которые пытаются переманить уважаемых джавагоспод на мертвую технологию.
Сейчас бы на полном серьезе пытаться вкатиться в скалу, чтобы потом рвать себе очелло из-за того, что всего 129 вакансий на всю россию, лол.
Долбоебушка, тут никто и не хочет видеть джява-индусов и вкатывальщиков. Не знаю что мешает тебе это осознать, возможно айкью ниже 80.
>полотно
>0 строк кода и примеров решения конкретных задач
>отсутсвие анализа и сравнения фич сравниваемых языков
Я ж говорю, ты - тупой демагог.
Ты сам понимаешь, что ты пишешь? На все СНГ 129 вакансий. Ты действительно считаешь, что сможешь тягаться с тысячами разработчиков, которые решили перейти на скалу?
Вот только реальность рекрутинга в том что найти скалистов сложно. Это одна из самых главных проблем Скалы с точки зрения проджект менеджмента. Поэтому я тут и распинаюсь, споря с недоумками вроде тебя (вас?) - чтобы было кого хантить и можно было бы и дальше пользоваться нормальным языком, а не сдерживать рвотные позывы, разрабатывая на джаве.
>>772815
Ну тут уж каждый сам для себя решает, стоит ли пробовать. У меня недостатка в предложениях нет, как и у многих знакомых, но не знаю наколько это показатель.
Во-первых, на hh не все вакансии висят, во-вторых на джаве 1771 вакансия, что в 15 раз больше, но джава - самый используемый язык наверное. А в-третьих - что тебя удивляет? Есть баланс спроса и предложения и он стоит на уровне 7-10% от джавы. Все кто хочет работать со скалой, со временем получают такую возможность, а работодатели находят скалистов. Из-за небольшого размера рынка этот процесс иногда затягивается, это да.
Маня, нахуя тебе больше, если ты за всю жизнь от силы в 10 конторах поработаешь? Чтобы что?
>129 активных вакансий
Из них только 20 - от NAUMEN, которые пытаются найти одного разработчика на проект, связанный с онлайн-обучением. Еще 3-4 вакансии - это тинек, который безуспешно ищет разработчика в проект инвестиции. Работу на Spark мы не учитываем, разумеется - а это еще минус 50 вакансий. Пара вакансий от психопатов из Яндекса и ВТБ (одни и те же люди, между прочим), которые пытаются найти суперзвезд и рокстар ниндзь за копейки, чтобы пердолить типичные круды в области недвижимости (циан как-то на пыхе сидит и является лидером в этой области, между прочим). Кто там еще - ну какие-то мутные конторки из Татарстана и Тольятти.
Всякие помойные конторы, где Scala стоит просто как "пожелание" среди остальных маргинальных языков на вроде Haskell, Coq, Rust - мы в расчет не берем, разумеется.
Вот и думай теперь.
>Работу в спарк
>Поиск по scala not spark
Так не хочешь - не переходи на скалу, ебланы в комьюнити не нужны. Даже с учётом того что и так сложно найти сотрудника на позицию.
Подскажите нормальный гайд по котам и котоэффектам, плез. Почти все библиотеки так или иначе используют котов, а офф. дока говно-говна.
Сколько мант нужно съесть, чтобы жать как Сугак?
Как быстро перекатиться из Java в Scala? Какие пет-проекты сделать, чтобы заинтересовать потенциального работодателя?
Скалачую! На джяве получается быстрее и качественнее, пока скала-фанатики пердолятся в не работающую IDE и пытаются написать хоть сколько-нибудь работающий код на забагованных библиотеках, которые тормозят и жрут память.
>Hibernate
Да от него многие джависты плюются. На вот, почитай - https://www.reddit.com/r/java/comments/dveyx5/the_best_way_to_fix_the_hibernate/.
>I have over 250 articles on my blog showing that Hibernate does just fine to cover any complex scenario.
>over 250 articles
>Hibernate does just fine
Ясненько.
>Да от него многие джависты плюются
Открываешь HH.ru и видишь, что на Java буквально тысячи вакансий, где 99% из них это связка из Spring/Hibernate.
Ищешь Scala и находишь 600 вакансий на весь СНГ, из которых 2/3 - это биг-дата под апачи спэрк, лол.
Приходится много писать на Джаве, но блевать тянет часто от ее уродства, до этого работал на скале как Спарк-девелопер, но затянуло и для всяких утилитных штук тоже начал выбирать скалу. Скала использует память менее эффективно, чем джава. Вопрос такой: есть какая-то инфа будет ли приближаться утилизация памяти скалы к джаве, если писать на скале критичные к перформансу вычисления, которые нельзя распараллелить, в императивном стиле джавы(с мутабельностью) и оборачивать вызовы императивных вычислений в функциональный API скалы, чтоб в целом это не смотрелось уродливо? Или это не путь скалы и если хочешь перформанса в скале, то пиши в ФП и параллель? Не всегда есть время попробовать и так и так и оценить, что лучше.
>Или это не путь скалы
Вполне себе. Это же мультипарадигма.
Одерски же сам говорил: пишем всё ФП, потом критичные по ресурсам куски переписываем на мутабельных коллекциях императивно.
Обычно это приводит к тому, что ты тратишь минимум в 2 раза больше времени на решение задачи, в ситуации, когда твой ФП код начинает жрать память и имеет алгоритмическую сложность на порядок превосходящую императивный вариант. Затем ты начинаешь переписывать куски кода на императивный лад, попутно изменяя дизайн приложения. В итоге ты потратил минимум 2 раза больше времени, чем если бы ты все писал на Java и при этом лишь слегка смог приблизиться к производительности, которая бы тебе дала Java.
>Скала использует память менее эффективно, чем джава.
Точнее - обычно стандартная библиотека скалы создает больше мусора, чем джавовая. Тебе ничто не мешает писать свой код так чтобы было минимальное количество аллокаций.
>в императивном стиле джавы(с мутабельностью)
>оборачивать вызовы императивных вычислений в функциональный API скалы
>Или это не путь скалы
Это путь scala collections, так что наверное и путь скалы.
>если хочешь перформанса в скале, то пиши в ФП и параллель?
Одно другому не мешает.
>Не всегда есть время попробовать и так и так и оценить, что лучше.
Если на это нет времени, скорее всего тебе и оптимизация производительности не нужна. Это обычно достаточно кропотливая работа - выявить боттлнеки, понять почему именно они именно там и исправить их. Если дело касается использования памяти (что вообще говоря не обязательно сильно сказывается на производительности), то все еще сложнее.
>>790612
> имеет алгоритмическую сложность на порядок превосходящую императивный вариант
ФП не избавляет от размышлений об алгоритмической сложности, тут как обычно нужно предствалять размер данных с которыми предстоит работать, чтобы понимать стоит ли вообще заморачиваться.
>при этом лишь слегка смог приблизиться к производительности
Низкоуровневый код будет скопилирован в такой же байткод, как на джаве.
>попутно изменяя дизайн приложения
Это бывает, но скорее говорит о том что алгоритм неверно инкапсулирован.
> ты тратишь минимум в 2 раза больше времени
В теории ты прав, а на практике мне за 7 лет только пару раз пришлось поменять immutable.Map на mutable.AnyRefMap, на этом такого рода оптимизации заканчивались.
>Тебе ничто не мешает писать свой код так чтобы было минимальное количество аллокаций.
Зачем мне тогда нужна Scala с ее FP, когда я могу взять Java? Она будет намного проще и для нее хотя бы есть нормальная IDE.
>ФП не избавляет от размышлений об алгоритмической сложности, тут как обычно нужно предствалять размер данных с которыми предстоит работать, чтобы понимать стоит ли вообще заморачиваться.
Достаточно посмотреть как реализованы методы работы с коллекциями и почему их не стоит комбинировать, чтобы не получить взрывную алгоритмическую сложность. Конвертирование в стрим в Scala почему-то считается крайней мерой и заявляется, что это может быть еще медленнее, чем если бы ты подряд вызывал какие-нибудь map,filter,groupBy и т.д. постоянно реитерируясь по реузльтирующим коллекциям.
>Низкоуровневый код будет скопилирован в такой же байткод, как на джаве.
Это не так - https://www.youtube.com/watch?v=__PLkxx6Yko
https://www.youtube.com/watch?v=2YVJD4OQ3Ac
Чтобы получить схожий уровень аллокации на Scala с Java, тебе нужно будет по-сути отказаться от FP и писать тупой императивный код, который компилятор Scala все равно не сможет хорошо оптимизировать и выдаст какие-нибудь посредственный байткод, который потом с трудом пережевывать JVM.
>Зачем мне тогда нужна Scala с ее FP, когда я могу взять Java?
Чтобы писать 0.1% кода в низкоуровнево, а остальное - как хочется. Ну и за аллокациями нужно и в джаве следить, если конретнное приложение к ним чувствительно.
>Достаточно посмотреть как реализованы методы работы с коллекциями и почему их не стоит комбинировать, чтобы не получить взрывную алгоритмическую сложность.
Давай подробнее. Сложность большинства методов описана в документации, там нет ничего необычного.
>Конвертирование в стрим в Scala почему-то считается крайней мерой
Смысла конвертировать коллекцию в стрим нет. Ты наверное имешь в виду view. Они нужны для того чтобы избегать лишнего копирования, что оправдано в случае достаточно большого количества элементов в коллекции, и в этом же случае возможно будет выигрыш в скорости итерации. Не то чтобы это крайняя мера, просто возможность оптимизации в случае необходимости.
>Это не так
Вызовы методов, циклы while, хвостовую рекрсию и т.п. компилируются в такой же байткод. Дай конкретный контрпример (код или время в докладе).
>Чтобы получить схожий уровень аллокации на Scala с Java, тебе нужно будет по-сути отказаться от FP и писать тупой императивный код
Что, кстати, касается и OO-кода на джаве.
>компилятор Scala все равно не сможет хорошо оптимизировать
Насколько я знаю, ни scalac, ни javac не оптимизируют байткод. Все оптимизации выполняются JIT-ом в рантайме с учетом конкретного профиля выполнения. Если расскажешь какие оптизации делают именно компиляторы, будет интресно.
>циклы while
Уже увидел в докладе на 30:20 разницу в loop unrolling. Интересно конечно, хоть и не влияет на аллокации.
На сколько важно осилить красную книгу перед тем как приступить к изучению Akka? Остановился на 5 главе и чувствую, что идет не очень быстро. Бывает туплю над задачами и иногда выдают неоптимальные решения.
Погуглил отзывы по книге на амазоне и там много людей сетуют на сложные задания, хотя и говорят, что книга вправляет мозг для программирования в FP стиле.
>что ты тратишь минимум в 2 раза больше времени на решение задачи
Учитывая что таких случаев <5% - это не проблема.
Нужно понимать что императивный, тем более оптимизированный код, - хуже наивного ФП-кода по целому ряду параметров, пишется он дольше, не говоря уже про сложность поддержки. Поэтому без критической необходимости он не нужен совершенно.
Жаль что нормальной работы на Scala как не было так и нет.
https://blog.jetbrains.com/kotlin/2020/08/introducing-kotlin-for-apache-spark-preview
Ахахахаххааха. Получай, Скала ебаная! Чем теперь будете крыть?!
Так а что тут крыть? Под спарк можно писать на Python (очень популярно, возможно на уровне со скалой), Java, R, SQL, даже достаточно (но не совсем) рабочие обертки на Clojure есть. У тех кто не хочет использовать скалу и готов мириться с не совсем удобным и, главное, не совсем up to date API, появился еще один вариант. Что, кстати, не отменяет необходимость понимать скалу как минимум на уровне чтения для работы со спарком - рано или поздно придется лезть в его кишки и смотреть как именно устроена конкретная фича.
Чет в голос с этого школотуна, который прознал про Скалку и начал тут бегать с воплями - "а покажи-расскажи!", лол.
>я вообще с рубитреда
Соболезную. Откуда у вас такая тяга к мертвым языкам на которых не найти работу?
В то время как ни один из моих знакомых скалистов, включая меня самого, не испытывал проблем с поиском работы. ТОЛКОВЫХ людей в крупные конторы тупо не хватает, хрюши даже в личку не стесняются регулярно стучать и переманивать..
>ТОЛКОВЫХ людей в крупные конторы тупо не хватает
Скала здесь причем? На ту же джаву хантят людей и предлгают 250-300к за крепких сеньоров. Сейчас бы на полном серьезе вводить людей в заблуждение и сетовать на то, что вот ТОЛКОВЫМ скалистам везде дорога - везде ему рады. Лол, так и для джависта и даже для 1C есть высокооплачиваемая работа, если это толковый спец.
Только почему-то на скалу идут какие-нибудь олимпиадники-студенты или отщипенцы из джавы, которые "устали программировать на спринге". А когда узнают, что под толковыми скалистами понимается дурачок с горящими глазами, который будет готов пердолиться в котов, дуби и таглес-файнал за полтинник следующие 3 года.
>за полтинник
Жир начал сочиться из системного блока рано утром. Солнце только показалось из-за горизонта, запели первые утренние пташки, а под компом уже была порядочная жирная лужа. Я не понимал в чём причина этого явления и просто протёр лужу. Когда я включил компьютер, жир начал вытекать уже и из монитора тонкой но непрерывной струёй. Я терпел, я думал это пройдёт. Но всё же была непонятна причина столь активного жироотделения. Когда я зашёл на двач, жир потёк таким потоком что нужно было подставлять тазик под монитор и системник и выносить их каждые 20 минут. Потом я открыл этот тред... Это было нечто невообразимое, это был уже не поток, это было какое-то цунами жира! Он хлынул из компа, ничто уже не могло его остановить! Поток жира нёсся, снося всё на своём пути. Не знаю каким чудом мне удалось уцелеть, ибо от моего дома остались одни руины, двор сейчас похож на пустыню с барханами из жира. Погибли люди, некоторые лишились крыши над головой. Оп, что же ты наделал?
А чего тебе не понятно, приятель? Переходя на Scala, ты попросту выбрасываешь весь свой опыт, который ты нарабатывал годами работая на Java/Go/Erlang/Elixir/C#. Ведь писать круды на Scala это не тоже самое что писать круды на Java. Весь твой опыт идет на хуй и ты начинаешь с самого начала. Это просто предостережение всем желающим перекатиться в Scala, которые по наивности считают, что смогут сохранить прежний уровень компенсации. Готовьтесь, что будете начинать с самых низов и следующие 3-5 лет ползти к той зарплате, которую вы получали на той же Java.
Ну и да - не забудьте занести денег лысому - https://www.eventbrite.com/e/functional-effects-by-john-a-de-goes-tickets-119597333845
А то хули вы как в гостях, епт.
Перешел, сидя в дс-4, с мидловских 120к на шарпе на 100к на скале, через полгода получал уже те же 120к. У многих коллег и знакомых истории похожи, а то вообще переходили в плюс.
Конечно если ты ебложопый идиот, которому надо 3 года на доосвоение концепций ФП, то ты будешь гроши джуновские получать, это правда. Жалко тебя даже.
Сказки рассказываешь. Ты для начала осиль красную книгу и прорешай все задачи не подглядывая в решения. Затем освой котов и прочие дуби с таглес-файнал, а уже потом рассказывай как ты зарабатываешь 120к на скале, лол.
>Сказки рассказываешь.
Ясно, отшитый на собеседовании неудачник походу тут уже манямирок выстроил. Ну ок, не мешаю, живи в нём.
:)
Твой личный опыт не является аргументом, Антон ДеГузло. Монаду уже залифтил себе в очко?!
Давай, продолжай вводить новичков в заблуждение, что в скалу можно вкатиться без знания красной книги, прорешивания всех задач, а так же опыта в котах и эффектах.
Начнем с того, что выбрав Go ты обеспечишь себя работой. Выбрав Scala ты не сможешь найти работу и тебе придется вернуться к престарелым родителям, чтобы сидеть у них на шее и хлебать мамкин борщец, пока ты будешь решать задачки из красной книги.
Выбор, как всегда, за тобой.
Если интересно ковырять всякие близкие к академическим, но все-таки практические, штуки, постоянно апать скилл и контрибутить в жопенсорс - скала
Если у тебя легкая (или хуже) форма умственной неполноценности, как у местной порватки - то го.
Если что-то между этими крайностями - начинаются тонкости.
ПЕРЕКАТ https://2ch.hk/pr/res/1798168.html (М)
ПЕРЕКАТ https://2ch.hk/pr/res/1798168.html (М)
Это копия, сохраненная 22 марта 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.