Это копия, сохраненная 31 июля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.
Система типов Scala позволяет избегать ошибок в сложных приложениях, а рантаймы для JVM и JS позволяют строить высокопроизводительные системы с удобным доступом к огромной экосистеме библиотек.
Q: Какой стэк библиотек взять?
A: cats, http4s, doobie, circe, ZIO
Q: Какие либы НЕ брать?
A: play, izumi, tofu, джавовые фреймворки
Q: Хочу Java without semicolons
A: Обрати внимание на Котлин
Q: Хочу угорать по функциональщине и теории категорий
A: Посмотри на Хаскелль
>рантаймы для JS
Кому нужона скала на фронте?
И что там с компилятором, очередные свистоперделки поверх гугловского кложура? Он еще поддерживатеся вообще?
> Кому нужона скала на фронте?
Из отечественных юзеров "Мой Склад" использует (по крайней мере использовал год назад) для электрон-приложения
> Он еще поддерживатеся вообще?
Вполне. Почти все популярные библиотеки адаптированы для работы со scala.JS
> Q: Какие либы НЕ брать?
> A: play, izumi, tofu
А что с ними не так?
> Q: Хочу угорать по функциональщине и теории категорий
> A: Посмотри на Хаскелль
Да ты ж ебанутый.
В Москве есть замкнутая тусовочка Scala-разрабов из желтых банков.
Их особенность в том, что это такая самобытная секта - они пилят собственную библиотеку эффектов, и не замечают происходящего в коммунити за их пределами.
Короче, каноничные борщехлебы, только сидящие не на шее у мамки, а каким-то образом пробравшиеся в отделы разработки банков.
Объективно, с точки зрения норм работодателя они пойзонус емплоерс, втащившие свой матан на прод и локнувшие этот прод на необходимость искать редких академиков с матаном головного мозга вместо индусов.
Значит они няши и сделали всё правильно.
Единственный способ спасти сраное софтостроительсво от окончательного скатывания в сраное говно - это возврат от «доступно каждому» к элитарной культуре «рассчитано на умных людей», вопреки хотелкам буржуев. Потом ещё спасибо скажут.
Я сам занимаюсь подобной деятельностью и веду активную агитацию на местах.
мимо-фп-партизан
> умных людей
Лол, нет, такие же долбоёбы, только залифтили representableK монады себе в очелло
>вумники очки напялили сидят со своими мандадами, ни то что мы простые макакены чисто на спринге и не паримся еее)
Ммм, эта боль копчёного.
Чини детектор. Я не против ФП, я против того как эти долбоёбы наворачивают trait Transfer[T[_[_]], Link[_[_]], _[_]], Constraint[_[_]]]. Это реальный пример если что.
Давай, объясни сходу, что это за тайпкласс, какие у него laws и как его лучше применять
Главный laws это то, что у твоей мамы ты родился не очень умным. Это обычный обычный трейт с тайп параметрами.
Не в курсе что именно они там делают, но что именно ты назывешь матаном? Любую абстракцию? Так почти любая библиотека и особенно фреймворк в любом языке дает тебе свои абстракции.
Кто такие академики? Люди, способные осилить эти самые абстракции? Все программисты этим занимаются каждый день ну уж точно когда приходят на новый проект.
>>1801101
Странно высрать рандомную строчку внутреннего кода и требовать по ней понять то что ты просишь. Тот анон наверное имел в виду что эта конкретная строчка понятна - есть какая-то передача данных, видимо но каналу с началом и концом и какими-то ограничениями. Все это параметризировно по типу эффекта, скорее всего, но сказать сложно без контекста проекта. Еще для меня не ясно что такое тип T - тип данных для передачи или что? Могли бы и попонятнее назвать.
Нужны ли эти абстракции и качственны ли они - другой вопрос.
> рандомную строчку внутреннего кода
Это не внутренний код, это абстракция которую эти пацаны запихнули в библиотеку. Предлагая понять, что это такое, я и намекал что это какой-то частный случай, который они пытаются выдать за нечто общее и абстрактное.
Так что мой пойнт как раз в том что
> Нужны ли эти абстракции и качственны ли они
Дай ссылку на код, по одной строчке сложно понять качество. Может там scaladoc на 50 строчек над этим определением.
>это какой-то частный случай, который они пытаются выдать за нечто общее
Ты же понимаешь что наверное о чем угодно можно сказать "это частный случай чего-то более общего". Монада - частный случай моноида, если что. Ты о "матане" точно в негативном ключе говорил?
Расскажите, зачем дрочить монады и дырки, когда 3/4 вакансий на Scala - это неумелый пердолинг в "большие данные" на Apache Spark, а остальная четверть это дрочь акторов или какого-нибудь плей фреймворка?
Но ведь я серьезно. Я листаю вакансии и чистые бекенд позиции это чья-то не очень удачная попытка запилить проект на малораспространненном стеке, когда на том же Spring это делается на раз-два, а разработчиков на несколько порядков больше.
Ну значит рано или поздно их выкинут на мороз и наймут индусов за три копейки, чтобы переписать все на шарпе/джаве.
>Потом ещё спасибо скажут.
За что? Программист -- это commodity, дешевый расходный материал. Неважно на чем он пишет - на скалке или пыхе.
Главное, что двигает ИТ иднустрию - наличие большого количества дешевой рабочей силы. Если вдруг кодерки станут элитой, то это замедлит прогресс
Элита программистов должна сделать такие тулзы и языки, чтобы даже тупые макаки могли бы делать что-то работающее и полезное, пользуясь ими.
Нет не мне. Я-то как раз Элита. Можешь мне поверить.
На Гоу ты хотя бы работу сможешь найти и вкатиться с JS на нее будет проще простого. На Скалу ищут только опытных разработчиков, которые до этого работали Java программистами.
>третьей версии
Она уже готова на 95%, но из литературы только дока и хуй вместо вменяемой поддержки IDE. Но если сильно интересно, то можешь взять Dotty и ковырять прямо сейчас. Лично я уже около года балуюсь дома.
Но учти что разница между ней и прошлой версией, это как между Perl и Perl 6 - почти другой язык.
Так что учитывая слоупочную специфику эволюции скаламирка, на тройку можно забить ещё на пару лет минимум, если ты не энтузиаст early adopter.
Как лучше всего взаимодействовать с реляционными СУБД из Scala? Slick мертв и "поддерживается" пользователями, которые только новые ишью создают в трекере. Doobie завязан на одного человека, который сейчас вообще ушел в какой-то экспериментальный проект по написанию драйвера для PostgreSQL. Quill? Но это только DSL для написания SQL запросов. Т.е. исполнять их должен какой-нибудь Doobie. JOOQ? Так он вроде для Java/C#, т.е. Scala там даже и не пахнет.
Как люди работают с базами данных из Scala?
doobie норм работает, мы его во всем новом подключаем (но у нас не оч сложные схемы, просто локальный сторидж без джойнов), scalike, да и любая стабильная java-либа с небольшой оберткой подойдет, на самом деле.
>>1805881
можешь пока не переживать за дотти, учи что есть.
топ книги - functional programming от создателя (не обязательно целиком), от него же курсики по fp на курсере, scala for the impatient (чуть устарела вроде), твиттеровские ресурсы какие-то были неплохие.
> На Скалу ищут только опытных разработчиков, которые до этого работали Java программистами.
вкатился когда-то на первую работу скалистом-джуном, 0 опыта работы, так что это как минимум не невозможно, как в общем - хз.
>functional programming от создателя
Если ты имеешь Functional Programming in Scala, то ее писал не Мартин, а Рунар. Книга так себе, если честно. Начиная с 7 главы повествование идет в очень сумбурном стиле. Есть Functional Programming Simplified от Alvin Alexander - там по сути тоже самое, только написано более простым языком и примеры чуть ли не на пальцах разбираются.
>от него же курсики по fp на курсере
Курсы от Одерски по FP на Scala - это по сути передранный учебник SICP, где примеры кода и задачи переписали на Scala сo Scheme. Курс очень посредственный, если что.
>scala for the impatient (чуть устарела вроде)
Довольно таки бодрая книжка. Сложно сказать, что-нибудь плохое про нее.
>doobie норм работает
Меня пугает то, что его разрабатывает один челик. Над сликом пахало целая команда, которая сидела на зарплате у Lightbend, но его это не спасло.
>да и любая стабильная java-либа с небольшой оберткой подойдет, на самом деле.
На сколько это Scala-way? Если писать обертки поверх джавовых библиотек, то можно ведь и головой двинуться. Одно дело, если ты используешь какую-нибудь Akka, из которой футуры торчат, а если ты на котах или зио пилишь бекенд?
IO.fromFuture(IO(здесь твоя фйюча))
Перепутал книгу Одерски и the red book видимо. Я говорил про первую, красная книга по желанию. От Александра не читал, думаю норм.
Курс мне когда-то зашёл как начальная точка, не жалею, что посмотрел, но для опытных конечно есть лучшие варианты.
>книгу Одерски
Ну, это же типичный справочник по языку. Читать его скучно и там не разбираются ни типичные архитектурные приемы ни паттерны при работе на Scala. Красная книгу рекомендуется читать как введение для котов. Хотя я не уверен, что описанные там практики помогут тебе при работе с той же Akka, например.
https://github.com/slick/slick/issues/2126#issuecomment-674701468
>Slick is currently being maintained by its users who fix bugs and develop features that they need or want. As such, we don't have a roadmap or plans.
За крупными опенсорс продуктами обычно стоят крупные конторы на вроде VMware, JP Morgan, Apple, Twitter, Google и другие. И ключевые мейнтейнеры таких проектов либо работают в таких компаниях, либо наняты в виде внештатных работников. В любом случае - это люди на зарплате, которые пашут стандартную 5-дневку, где пилят "опенсорс проект, которые разрабатывается коммьюнити".
> Хотя я не уверен, что описанные там практики помогут тебе при работе с той же Akka, например.
Всё верно, чтобы узнать акку, нужно работать с аккой, чтобы освоить коты - использовать котов как можно чаще.
На моей практике вообще красную книгу стоит читать после некоторого опыта использования котов в реальном коде, а не наоборот.
> Ну, это же типичный справочник по языку. Читать его скучно и там не разбираются ни типичные архитектурные приемы ни паттерны при работе на Scala.
Мб, что бы сам посоветовал?
>Главное, что двигает ИТ иднустрию - наличие большого количества дешевой рабочей силы.
Только если называть движением повышение скорости высирания стартапного забагованного говнища, про 95% которого никто никогда не узнает, кроме заказчика и команды разработки. А те 5% что взлетят - или рухнут позже под тяжестью говнокода, либо не рухнут, но говном от этого быть не перестанут.
opinionated нытьё ↓ как будто остальной пост не opinionated нытьё, хех
Насмотревшись 10 лет назад на успехи популярных соц.сетей, людишки уверовали в мантру "пока в Вилариба выдрачивают код, в Вилабаджа уже зарелизились и фиксят баги". В целом логика правильная: во всех соц.ориентированных продуктах качество даже не на третьем месте, а главное - это захватить ресурс (людишек) и отхватить как можно больше. В итоге, если не получилось - отбиваемся минимальными затратами, а если получилось - конкуренты могут выпускать хоть в десять раз более качественный аналог, он нахуй никому не будет нужен, потому что в соц.продуктах - главное не сам продукт, а пользователи, вернее их количество. Фейсбук по сей день остаётся убогим говном, пользоваться которым невозможно без рвотных позывов, но все там сидят, потому что там все сидят. То есть даже при коммерческом успехе продукты остаются дырявым и забагованным, поэтому лаги, ошибки, слив юзер данных и прочий абьюз багов - вещь повсеместная, независимо от крупности компании. А выпуск новой версии в которой всё будет сделано правильно произойдёт в том дне, который не наступит никогда, а в том что наступит выпустят скорее свистоперделки для подогрева интереса юзеров, такие же забагованные и прикрученные сбоку на костылях.
Так как подавляющее большинство новых продуктов - тоже социальные, то вся эта история повторяется вновь и вновь, и самое печально, что оно задаёт тенденцию и влияет на другие области, например, на продукты ориентированным на бизнес, где вся эта спешка в общем-то ни к чему
Интересы буржуйчика и качество софта - вещи ортогональные, иногда они совпадают, чаще - нет. Но вот интересы людей в целом - иметь качественный софт.
Я не против, чтоб всякий MVP хлам на выброс клепала индусня на питоне и гоу, но разработкой полезного прикладного софта для людей должны заниматься как минимум умные люди, которых ныне в IT сфере страшный дефицит.
>Главное, что двигает ИТ иднустрию - наличие большого количества дешевой рабочей силы.
Только если называть движением повышение скорости высирания стартапного забагованного говнища, про 95% которого никто никогда не узнает, кроме заказчика и команды разработки. А те 5% что взлетят - или рухнут позже под тяжестью говнокода, либо не рухнут, но говном от этого быть не перестанут.
opinionated нытьё ↓ как будто остальной пост не opinionated нытьё, хех
Насмотревшись 10 лет назад на успехи популярных соц.сетей, людишки уверовали в мантру "пока в Вилариба выдрачивают код, в Вилабаджа уже зарелизились и фиксят баги". В целом логика правильная: во всех соц.ориентированных продуктах качество даже не на третьем месте, а главное - это захватить ресурс (людишек) и отхватить как можно больше. В итоге, если не получилось - отбиваемся минимальными затратами, а если получилось - конкуренты могут выпускать хоть в десять раз более качественный аналог, он нахуй никому не будет нужен, потому что в соц.продуктах - главное не сам продукт, а пользователи, вернее их количество. Фейсбук по сей день остаётся убогим говном, пользоваться которым невозможно без рвотных позывов, но все там сидят, потому что там все сидят. То есть даже при коммерческом успехе продукты остаются дырявым и забагованным, поэтому лаги, ошибки, слив юзер данных и прочий абьюз багов - вещь повсеместная, независимо от крупности компании. А выпуск новой версии в которой всё будет сделано правильно произойдёт в том дне, который не наступит никогда, а в том что наступит выпустят скорее свистоперделки для подогрева интереса юзеров, такие же забагованные и прикрученные сбоку на костылях.
Так как подавляющее большинство новых продуктов - тоже социальные, то вся эта история повторяется вновь и вновь, и самое печально, что оно задаёт тенденцию и влияет на другие области, например, на продукты ориентированным на бизнес, где вся эта спешка в общем-то ни к чему
Интересы буржуйчика и качество софта - вещи ортогональные, иногда они совпадают, чаще - нет. Но вот интересы людей в целом - иметь качественный софт.
Я не против, чтоб всякий MVP хлам на выброс клепала индусня на питоне и гоу, но разработкой полезного прикладного софта для людей должны заниматься как минимум умные люди, которых ныне в IT сфере страшный дефицит.
>разработкой полезного прикладного софта для людей
Это какой-такой софт ты называешь "полезным" и "для людей"?
>про 95% которого никто никогда не узнает
Достаточно посмотреть где используется всеми ненавистный Spring и какие проекты на нем реализуют, чтобы понять, что не обязательно дрочить анус котами и плакать кровавыми слезами из-за того, что ИДЕЯ код краснит, чтобы выдавать продукт, который будет приносить радость пользователям, а тебе - деньги.
Да, читал её, отличная. По-моему оттуда же книжка про Cats стоит прочтения.
>>1809232
> дрочить анус котами и плакать кровавыми слезами из-за того, что ИДЕЯ код краснит
Коты это прекрасно, а идея уже давно почти не краснит код, во всяком случае проблем уже давно не было, хз о чем ты. Самое уродское, что есть в scala-мирке - sbt, вот там я плачу частенько от того, как он зависимости проебывает, остальное кайфец а может я просто привык годами жрать говно и мне комфортно
> какие проекты на нем реализуют
какие?
>идея уже давно почти не краснит код
Возможно ты не пишешь ничего сложнее хеллоуворлдов на пару строк, поэтому и не видишь всего того пиздеца который происходит при работе над крупным проектом.
Идея может краснить корректный код или не подсвечивать некорректный. Может валить эксепшенами и жрать память гигабайтами. Я все время порываюсь перейти на VS Code + Bloop, но меня быстро отрезвляет тот факт, что VS Code обычный текстовый редактор, а Bloop - не более чем очередная поделка Scala Center, где студенты Одерского осваивают гранты.
>Самое уродское, что есть в scala-мирке - sbt
К сожалению, ничего не изменится в ближайшее время. Всех все устраивает и все считают, что sbt - это путь Scala.
Очень жаль, что при разработке sbt, разработчики не ознакомились с такими проектами как Maven или Gradle, где банальные вещи делаются интуитивно и буквально за минуту, когда как sbt с самого начала начинает тебя грузить какой-то эзотерической хуетой и рассказывать как здорово, что у тебя теперь есть еще один DSL на Scala на котором ты можешь описывать свои билды.
Пожалуй это самая тормозная, забагованная и неинтуитивная система сборки, которая, ко всему прочему, еще имеет отвратительную интеграцию с IDEA.
>какие?
Любые крупные проекты, начиная от банковских систем, заканчивая какими-нибудь соц. проектами или крупными площадками на вроде Яндекс.Маркета. Тот же Netflix очень плотно сидит на Spring Boot и все микросервисы стартует именно на этой платформе.
Та же Scala у них там сбоку и вообще про Big Data.
Какой-нибудь Twitter мы не берем в расчет. Там изначально собралась отбитая компашка, которая изначально все писала на Ruby, а когда начало все тормозить, то они кинулись на Scala, т.к. синтаксис был похож. Ну и да - Twitter за все время своего существования показал прибыль лишь однажды, когда провел массовое увольнение разработчиков. А так это просто очередной убыточный проект, который проедает очередной раунд инвестиций. Но да, там есть собственная виртуальная машина, наработки на Scala (правда без котов и прочего тайплевл стека).
>идея уже давно почти не краснит код
Возможно ты не пишешь ничего сложнее хеллоуворлдов на пару строк, поэтому и не видишь всего того пиздеца который происходит при работе над крупным проектом.
Идея может краснить корректный код или не подсвечивать некорректный. Может валить эксепшенами и жрать память гигабайтами. Я все время порываюсь перейти на VS Code + Bloop, но меня быстро отрезвляет тот факт, что VS Code обычный текстовый редактор, а Bloop - не более чем очередная поделка Scala Center, где студенты Одерского осваивают гранты.
>Самое уродское, что есть в scala-мирке - sbt
К сожалению, ничего не изменится в ближайшее время. Всех все устраивает и все считают, что sbt - это путь Scala.
Очень жаль, что при разработке sbt, разработчики не ознакомились с такими проектами как Maven или Gradle, где банальные вещи делаются интуитивно и буквально за минуту, когда как sbt с самого начала начинает тебя грузить какой-то эзотерической хуетой и рассказывать как здорово, что у тебя теперь есть еще один DSL на Scala на котором ты можешь описывать свои билды.
Пожалуй это самая тормозная, забагованная и неинтуитивная система сборки, которая, ко всему прочему, еще имеет отвратительную интеграцию с IDEA.
>какие?
Любые крупные проекты, начиная от банковских систем, заканчивая какими-нибудь соц. проектами или крупными площадками на вроде Яндекс.Маркета. Тот же Netflix очень плотно сидит на Spring Boot и все микросервисы стартует именно на этой платформе.
Та же Scala у них там сбоку и вообще про Big Data.
Какой-нибудь Twitter мы не берем в расчет. Там изначально собралась отбитая компашка, которая изначально все писала на Ruby, а когда начало все тормозить, то они кинулись на Scala, т.к. синтаксис был похож. Ну и да - Twitter за все время своего существования показал прибыль лишь однажды, когда провел массовое увольнение разработчиков. А так это просто очередной убыточный проект, который проедает очередной раунд инвестиций. Но да, там есть собственная виртуальная машина, наработки на Scala (правда без котов и прочего тайплевл стека).
> Возможно ты не пишешь ничего сложнее хеллоуворлдов на пару строк
Пилю скалку в известном банке, тут немного не пара строк, но всё равно "пиздеца" прямо не ощущаю, как и ранее писал. Мб дело в настройках и мощностях, мб у всех разный порог пиздеца. Пользуюсь обычной комьюнити идеей на средней мощности воркстейшене на линуксе.
> Пожалуй это самая тормозная, забагованная и неинтуитивная система сборки, которая, ко всему прочему, еще имеет отвратительную интеграцию с IDEA.
Всё так.
Яндекс, кстати, регулярно пишет-зовет на небигдатную скалу, видимо не только спринг у них.
Не знаю как в скале но в руби работа есть, только вот хуй куда устроиться, везде миддлов с пятилетним стажем хотят.
Миморубист-вкатун
>Твердо решил перекатитьcя с пхп
Женя? Это ты в скаладжобс поливаешь говном пхп и хочешь перейти в скалу? Ты же понимаешь, что платят не за знание языка, а за экспертизу в предметной области и опыт разработки высоконагруженных проектов.
Учти, что те графики с зарплатами, где скала лидирует - это не более чем махинация со статистикой, т.к. в скале нет джюнов, а только сеньоры и принципалы.
Нет понятия "платят". Есть понятие вакансия. И в вакансиях пхп платят мало, полоток 300 тыщ, а в вакансиях скалы платят много, потолок 670 тыщ.
Это если говорить про удаленку из России
А вот тот факт, что в скале нет джун вакансий и невозможно вкатиться без 3+ лет опыта, конечно может меня остановить.
>Меня пугает то, что его разрабатывает один челик
Отчасти это проблема, но он достаточно много кем используется, входит в тайплевел стек, да и сам можешь подхачить что-то, не программист чтоле?
>Над сликом пахало целая команда, которая сидела на зарплате у Lightbend, но его это не спасло.
Не то чтобы его прям спасать нужно, он работает себе, пусть и не развивается активно. Просто появились альтернативы лучше, в том числе потому что его задумка оказалась не самой удачной как а смысле использования, так и в разработке.
>>1807431
>На сколько это Scala-way?
Вопрос не в этом, а в том насколько это нужно.
>>1806953
>Quill? Но это только DSL для написания SQL запросов.
Все из коробки работает, хотя можно и с Doobie подружить. Рекомендую, очень хороший проект, я его еще и с кассандрой и даже спарком использовал. Хотя возможно для новичков scalikejdbc понятнее будет, он простой (если все строго по примерам из доки делать и не стараться вникать как там этот DSL реализован) и на jooq похож. Обе либы, кстати, поддерживают асинхронную работу с постгресом, но я не знаю в каком состоянии эта функциональность, возможно альфа и это никогда изменится.
>>1808569
https://www.handsonscala.com
Сам не читал, но слышал положительные отзывы именно о том что тут разобраны реальные примеры. С другой стороны, автор использует свои библиотеки в книге. Это само по себе не плохо - они простые и позволяют сфокусироваться на языке и задачах, но если (скорее всего) в проде будут другие, придется их доучивать.
>входит в тайплевел стек
Туда много что входит, включая какие-то поделки от рандомных челиков.
>сам можешь подхачить что-то, не программист чтоле?
Зачем мне что-то "хачить" в библиотеках? За многие годы работы джава программистом мне не приходилось копаться в сорсах библиотек и что-то там править, т.к. все библиотеки и фреймворки поддерживались крупными конторами, где толпа разрабов на зарплате выкатывала релиз за релизом каждые несколько месяцев.
>он работает себе, пусть и не развивается активно
Посмотри когда вышел последний релиз и что в него включили. Заодно можешь посмотреть количество багов, которые весят в ишьюсах.
>Сам не читал, но слышал положительные отзывы именно о том что тут разобраны реальные примеры.
Слышал ты из-за того, что этот хитрый китаец бегает по всем площадкам, где тусуются скала программисты и пиарит свою книжонку. Сама книга довольно посредственная и во многом опирается на поделки этого китайца, который изобретает очередной велосипед, которым пользуются полтора анонимуса.
Откуда столько ненависти к Lightbend стеку? В основном это исходит из ру-сегмента скала коммьюнити. Большинство называет Akka, Play, Slick - легаси и рассказывает охуительные истории про то как "все компании" переходят на typelevel и горя не знают.
>Туда много что входит, включая какие-то поделки от рандомных челиков.
Там есть разделение на включенные проекты и incubator projects, doobie именно включен.
>Зачем мне что-то "хачить" в библиотеках?
Чтобы добавить то, чего в ней нет, очевидно же, а не ждать пока разработчики соизволят уделить внимание твоей проблеме.
>За многие годы работы джава программистом мне не приходилось
>что-то там править
Везет, мне и на джаве, и на С# приходилось. Судя по, например https://github.com/hibernate/hibernate-orm/graphs/contributors, сюда тоже контрибьютят люди не на зарплате.
>копаться в сорсах библиотек
А вот это вообще странно, очень часто по документации невозможно понять как точно работатет та или иная фича. Ну может тебе не нужно было.
>Заодно можешь посмотреть количество багов, которые весят в ишьюсах.
50 багов. Это много или нет? Не знаю. По моему опыту 3-4 летней давности еще 2-ой слик был вполне работоспособным, но не слишком удобным в использовании.
Можешь, кстати, посмотреть на баги в Hibernate - там их сотни.
> Сама книга довольно посредственная
Ну вот теперь у меня еще один отзыв есть, негативный. Хотя я бы все равно советовал дать книге шанс - китаец хорошо пишет как минимум блог-посты.
Подоспела качественная аналитики от инженера, который не может найти работу на Скале - https://habr.com/ru/post/520114/
>Scala мертва
>получил 4-5 офферов на Scala в нескольких Европейских странах
Как-то не очень вяжется.
>Подоспела качественная аналитики от инженера
>Раунд 1: Go vs Java
>Безоговорочно Go.
>мой опыт с ним составляет всего пару месяцев
На этом думаю стоит закончить, и не тратить время на очередную аналитику про микросервисы - ебанутые совершенно не понимают сколько проблем создает перенос вызова из памяти в сеть.
Гоу сочетает в себе простоту освоения (неделя-две) и удобство программирования. На Scala, пока не осилишь красную книгу и не прорешаешь все задачи без подглядывания в решение - можно даже и не начинать проект, т.к. все равно обосрешься без понимания комбинаторов, монад и типов высших порядков.
Гоу не так уж и легко освоить на уровне написания идиоматичного кода, особенно если до этого не работал с CSP-based системами и не привык к structural typing и это еще go2 не вышел, а удобно на нем программировать только тривиальные сетевые сервисы, которые легко создавать на любом достаточно распространенном языке вплоть до Хаскеля. Его преимущества в другом, а именно в рантайме, заточенном под определенные типы задач и унифицированном тулчейне.
>на очередную аналитику про микросервисы - ебанутые совершенно не понимают сколько проблем создает перенос вызова из памяти в сеть.
Ты совершенно напрасно драматизируешь. Микросервисы и serverless - это будущее разработки масштабируемых приложений. Проблема Скалы заключается в том, что за ней не стоит никакой крупной технологической компании, которая бы выпускала библиотеки/фреймворки, которые бы, в свою очередь, радикальным образом упрощали жизнь типичному разработчику.
Какое-то время люди были в восторге от Akka и Play Framework, но вскоре основательно поели говна с акторами (которые слишком поздно сделали типизированными и это так и не решило никаких основных проблем, а только добавило новых, в основном с деплоем новых версий сервисов в кластере). С Плеем так вообще смешно вышло - сейчас бы в 2к20 писать на толстом веб-фреймворке вместо того, чтобы отдельно выкатить фронт, который бы отдавался инжинксом и отдельно рест-бек на чем-нибудь легковесном.
В итоге, получили ситуацию, когда весь LIghtbend стек в скала-коммьюнити считается легаси и не рекомендован для новых проектов.
Остается typelevel стек. Но проблема тайплевела в том, что это не технологическая компания как редхат или оракл, а просто конгломерат из приходящих челиков, которые проталкивают свои мутные велосипеды в инкубатор и консалтеров, которые напилили всяких котов, сёрсе и прочих дубей и теперь пытаются выехать на поддержке и внедрении.
Это не идет ни в какое сравнение с тем же Spring за которым стоит VMware или Helidon за которым стоит Oracle или взять тот же Quarkus, который пилится с подачи Красношапки.
Т.е. не стоит сравнивать жалкие потуги скалистов, которые нажравшись дерьма на Akka, побежали пердолить микросервисы на котах и гонять месседжи через кафку, попутно объясняя менеджменту, что такое моноиды и как залифтить монаду себе в очко и почему это важно для проекта.
>Его преимущества в другом, а именно в рантайме
Да похуй на твой гоу рантайм, старина. Там до недавнего времени GC врубался по таймауту. Преимущество гоу в том, что можно взять условную похапэ-макаку и она через неделю будет выдавать код, который можно будет лить на бой. Код при этом получается однообразный и в нем нет никаких сюрпризов, когда нужно себе анус рвать, чтобы понять, как он работает.
За интересным рантаймом это тебе в Erlang/Elixir и виртуальную машину BEAM или взять тот же OCaml.
Я уже хотел было написать развернутый ответ про микросервисы и фреймворки, но после этого
>попутно объясняя менеджменту, что такое моноиды и как залифтить монаду
передумал, слишком толсто. Менеджменту похуй на монады и технологии.
Для мимокрокодилов могу только сказать что
> весь LIghtbend стек в скала-коммьюнити считается легаси и не рекомендован для новых проектов.
только на дваче и можно услышать, большинство проектов как стартуют, так и остаются на нем. Хорошо это или плохо - другой вопрос.
>>1813263
Конечно есть рантаймы намного интереснее, да у той же JVM есть перимущества перед ним. Но для простых сетевых лоу-латенси сервисов он очень хорошо работает из коробки, как и CSP и то как он обрабатывает блокирующие вызовы. Ключевое слово здесь из коробки, его не нужно тюнить.
>OCaml
Интересно, а что в нем особенного?
>преимущество гоу в том, что можно взять условную похапэ-макаку
Это миф, на уровне "хороший программист осилит любой язык за неделю, они все одинаковые". Языки разные, и научиться писать идиоматичный код за неделю не выйдет. Кроме того, не похоже чтобы на Go писали макаки, судя по тому сколько за него платят.
>когда нужно себе анус рвать, чтобы понять, как он работает.
Что интересно, самый запутанный код который я видел в жизни бы написан на С# в абсолютно процедурной парадигме - только циклы, рекурсивные вызовы и изменения переменных. Ничего такого же сложного в скале со всеми ее фичами я никогда не видел, так что думаю что сложность, привносимая самим по себе языком очень преувеличена (кроме С++, но это отдельная история).
>Менеджменту похуй на монады и технологии.
Нет, не похуй. Менеджмент понимает, что если начать проект на непопулярной технологии, то это может загубить весь проект. Так случилось с Моим Складом. Пока его писали борщехлебы на Scala, то дела у компании шли так себе - новых сотрудников было тяжело нанять и они стоили каких-то безумных денег, продукт был забагован и вхождение в проект было тяжелым испытанием для новых программистов. Но вод пришел Козуля и переписал проект на Java и теперь разработчики находятся на раз-два, проект очистился от FP-дерьма и теперь все будет ништяк.
>большинство проектов как стартуют, так и остаются на нем. Хорошо это или плохо - другой вопрос.
Ну вот M2 стартанул на лайтбенде (акка), а потом раз, и теперь они ищут людей только на typelevel стек со знанием кафки. Тут уже вкидывали видео, где еще одна компания в ужасе съебала с акторов на тайплевел и кафку и горя не знает.
Сложность поиска людей конечно имеет значение, я скорее про технологии внутри одного языка говорил. Обьяснить разницу между lightbend- и typelevel-стеком менеджменту сложно, для них это сорта одного говна. Но lightbend продвинуть легче, если станет вопрос - мне вот недавно нужно было стек для нового проекта выбирать, я подумал-подумал над http4s + doobie, и решил что продвинуть akka-http + quill проще будет. Основные конкуренты были (и еще есть наверное) finagle и go, кстати.
> вот M2 стартанул
Понятно что кто-то переходит, но это единицы. Я достаточно часто на собеседованиях бывал (хотя последний год не хожу), чтобы иметь достаточно большую выборку.
>компания в ужасе съебала с акторов на тайплевел
С акторов кто угодно съебет в ужасе, а вот akka-streams вполне себе прилично работают и имеют огромное количество коннекторов. Я не то чтобы гоню на typelevel, просто он не и близко не занимает той доли проектов, что lightbend.
>ищут людей только на typelevel стек
>со знанием кафки
Если они действительно ищут людей со знанием этих обеих технологий, то удачи, хех. Что в той, что в той очень мало кто разбирается, а пересечение вообще почти пустое множество.
Ага, помню обратную ситуацию в Приватбанке, когда в одном из отделов страшно обосрались со своей джявой, в этот день уволили нахуй СТО вместе с половиной джавадебилов, остальным был предложено изучить Erlang в кратчайшие сроки (к счастью простота языка позволяет) или съебать тоже. Дальше разработка в том отделе велась исключительно на Erlang правда с ним тоже в конечном итоге поели говна, очевидно надо было брать Haskell или на крайний случай Scala
>Приватбанке
>обосрались со своей джявой
Как вообще такое возможно? Ну т.е. если обосрались с джавой, то там уже проблемы на уровне хромосом CTO.
А технологии и стек - вообще дело десятое.
>Я не то чтобы гоню на typelevel, просто он не и близко не занимает той доли проектов, что lightbend.
Ру-сегмент Scala с тобой в корне не согласен. В их понимании Lightbend стек - это легаси и все адекватные компании сразу стартуют новые проекты на тайплевеле. Схожая риторика проскакивает и в зарубежном коммьюнити, где ту же Akka поливают говном и рассказывают как сладко живется на typelevel + Kafka.
>Если они действительно ищут людей со знанием этих обеих технологий
Сейчас как-бы 2к20 и от рядового бекендера требуют опыт работы с Kafka практически в обязательном порядке.
Никто не хочет пердолиться в кластеры или херачить микросервисы через какой-нибудь gRPC - все гоняют месседжы через кафку.
Ну так это известная история. Там же Максимка опердени на своем ёрланге ебал. По итогу все вылилось в то, что его возвышенный код никто не понял из команды и все пошло по пизде. Учитывая то, что они и с джавой говна поели, то можно сделать вывод, что уровень разработчиков там было довольно низкий.
>Ру-сегмент Scala с тобой в корне не согласен
Не очень знаком с ру-сегментом, даже скалалаз давно не слушал. Есть что почитать на эту тему?
>где ту же Akka поливают говном
То что в интернете все что угодно говном поливают - не новость. Не нужно из этого делать далеко идущие выводы.
>опыт работы с Kafka практически в обязательном порядке
Не толсти, кафка редко где нужна.
>>1813922 >>1813622
>если обосрались с джавой, то там уже проблемы на уровне хромосом CTO.
>с джавой говна поели, то можно сделать вывод, что уровень разработчиков там было довольно низкий.
Джава это залог успеха чтоле? Пишешь на ней и задачи сами собой решаются? Открою секрет, люди часто используют не мейнстримные языки именно из-за того что им надоело жрать на них говно.
>Джава это залог успеха чтоле?
Это, как минимум, куча не требующих изобретения велосипедов по поеданию типового энтерпрайзного говна.
>Открою секрет, люди часто используют не мейнстримные языки именно из-за того что им надоело жрать на них говно
ЭТО ПРЕКРАСНО, НО НАМ НУЖНО РЕАЛИЗОВАТЬ ЕРП СИСТЕМУ СУТЬ ТАКОВА ЕСТЬ БУХГАЛТЕРСКИЕ ПРОВОДКИ И ЕСЛИ ПОЛЬЗОВАТЕЛЬ ИГРАЕТ ЗА МЕНЕДЖЕРА, ТО БАЛАНСОВЫЕ СЧЕТА В ЛЕСУ СКЛАДЫ НАБИГАЮТ КОРОЧЕ ВОЗМОЖНОСТИ КАК В 1С
>Есть что почитать на эту тему?
Достаточно открыть @scala_ru где общаются тимлиды и разработчики топовых компаний в СНГ и РФ.
>Не толсти, кафка редко где нужна.
Если мы отбросим Big Data на Scala и посмотрим на чистые бекенд позиции, то увидим, что там либо Akka, либо тайплевел с Kafka. Люди пишут микросервисы на тайплевел стеке, а для общения между этими микросервисами используется Kafka.
Есть истории, когда люди сидели на кластере из Akka, а затем переходили на связку typelevel + Kafka.
Кафка обеспечивает надежную доставку сообщений между сервисами.
В Java разработке она тоже повсеместно используется - пилятся сервисы на Spring Boot, а затем они связываются через Kafka.
>Джава это залог успеха чтоле?
Если грубо, то - да. Java это считай 50% успеха проекта. Это не только простой в освоении язык на котором может писать любая макака, но и десятки фреймворков за которыми стоят крупные компании и сотни библиотек на все случаи жизни. Большинство проектов основаны на Spring Framework, т.к. он позволяет тебе собрать каркас приложения за считанные минуты и начать накидывать бизнес-логику предоставляя различную функциональность через всевозможные модули. Ничего подобного в экосистеме Scala даже близко нет.
Я не говорю про простоту найма джава-разработчика, которых на рынке труда только в РФ - десятки тысяч. Это со Scala ты вынужден брать кого попало и учить на месте. С Java ты можешь выбирать лучших, т.к. пул разработчиков невероятно огромен.
Готовые инструменты это замечательно, но помимо чисто технических аспектов есть еще и сложность доменной области. И проекты часто фейлятся из-за того что команда именно с ней не справляется, а не из-за того что в базу что-то записать не получилось или билиотеки не хватает. И вот хороший язык как раз позволяет писать логику понятно. Еще конечно случаются обсеры с архитектурой, например если пытаются в CQRS не подумав, или в 100 микросервисов, или, упаси Господи, какому-то долбоебу придет в голову связывать сервисы через Kafka. В общем такого чтобы обосрались просто из-за выбора языка я еще не встречал.
>>1814157
Ну так может 1С взять и все?
>>1814184
>@scala_ru
Зайду почитаю, чтоле.
>то увидим, что там либо Akka, либо тайплевел с Kafka
Да полно всего есть, Кафка далеко не везде. Ну и Акку с Кафкой часто видел, да и сам использовал.
>Кафка обеспечивает надежную доставку сообщений между сервисами.
Ты точно понимаешь что такое Кафка и что она отличается от очередей сообщений?
>Если грубо, то - да.
Все эти мифы про
> каркас приложения за считанные минуты
> и десятки фреймворков за которыми стоят крупные компании
уже в прошлом треде разобрали, не интересно уже.
>В общем такого чтобы обосрались просто из-за выбора языка я еще не встречал.
Целую команду скалистов из озона на хуй выгнали и все переписали на Пщ.
>Ты точно понимаешь что такое Кафка и что она отличается от очередей сообщений?
Есть паблики, на которые подписываются клиенты. Ты туда складываешь сообщения и они доходят до получателя.
>Господи, какому-то долбоебу придет в голову связывать сервисы через Kafka.
Вот тебе история успеха, как команда свалила с Akka и переписала все на микросервисы + Kafka - https://youtu.be/_sIOwQdQPIQ?t=525
>Целую команду скалистов из озона на хуй выгнали и все переписали на Пщ.
С чего ты взял что это связано именно языком? Истории миграции вообще интересные, можно почитать об этом кейсе?
>Есть паблики, на которые подписываются клиенты. Ты туда складываешь сообщения и они доходят до получателя.
Так обще можно о чем угодно сказать. Есть таблица в постгресе, кто-то туда кладет данные, а кто-то читает. Почти Кфака. У Кафки есть особенности, которые делают ее не слишком пригодной именно для использования как очереди сообщений, но очень классным распределенным логом событий.
>Вот тебе история успеха
Видел, как по мне это говорит только о том что ZIO вероятно пригодно к продакшену, а сырые акторы - неудобны, что впрочем достаточно известно. Если они организовали коммуникацию (именно коммуникацию, запросы-ответы, а не просто поток событий) между сервисами через кафку, ну что ж, земля пухом. Для этого должны быть какие-то очень серьёзные причины, которые я бы хотел узнать, будет очень интересно.
Работаю в около биг дате.
Жидко обосрались с кафкой между компонентами и всё переделывали на http сервисы. Так как нужно было часто гонять большие сообщения между сервисами, а потеря одного сообщения ломала всё. При этом нам ещё надо было ответ отдать клиенту. Слишком поздно мы поняли что кафка не подходит для запрос-ответ систем.
Тот кто её привнес в проект конечно ушёл задолго до вскрытия проблем.
Теперь вижу кафку только как уведомлялку между интеграциями, для чего-то более серьёзного нужно писать овердохуя кода
>С чего ты взял что это связано именно языком?
>Команда борщехлебов рвала себе анус и безуспешно пыталась в этерпрайз, подсев на уши менеджеру, что "вот-вот и Scala всем покажет, ух покажет!".
>Менеджер видит, что работа стоит, выделенный бюджет тает на глазах, а все что он имеет - это команду великовозрастных ебланов, которые свои монадки додрочить не могут, чтобы наконец-то запустить пилот
>Вся команда борщехлебов идет на хуй и заместо нее нанимаются гоферы, которые в кратчайшие сроки запускают проект
Да, действительно, что же тут не так с языком, хмммм?!
>обосрались с кафкой между компонентами
>переделывали на http сервисы
>нужно было часто гонять большие сообщения между сервисами
>потеря одного сообщения ломала всё
Ты же в курсе, что в случае, если твой сервис, посылающий HTTP запрос умрет или пропадет соединение между двумя сервисами и твой запрос отвалится по таймауту, то ты его потеряешь навсегда?
Кафка же тебе позволяет гарантированно доставить сообщение в кластер, сохранить его на диск и так же надежно доставить до получателя. Сравнивать HTTP запросы и Kafka - как минимум странно.
>Ну так может 1С взять и все?
ЭТО СЛИШКОМ НИМОДНА МЫ ЖЕ СИРИУС ГАЛЕРА МЫ ДОЛЖНЫ ПРЕДЛАГАТЬ КЛИЕНТАМ УНИКАЛЬНЫЕ БИЗНЕС РЕШЕНИЯ.
Это твои фантазии или где-то можно получить более достоверную информацию об этом кейсе, чем от анонимуса с двача?
Суть в том что я не один проект сделал на Скале, и знаю еще больше успешных проектов как у знакомых, так и во всемирно известных компаниях. Так что я точно знаю что на скале можно писать очень быстро и качественно, хотя и допускаю что она может быть не оптимальным инструментом и некоторых ситуациях. И вот о таких случаях хорошо знать, чтобы не наступать на те же грабли.
>>1814763
Ты же в курсе, что в случае, если твой сервис, посылающий сообщение в Кафку умрет или пропадет соединение между сервисом и брокером и твой запрос отвалится по таймауту, то ты сообщение потеряешь навсегда?
>Кафка же тебе позволяет гарантированно доставить
Because Kafka is webscale.
>Сравнивать HTTP запросы и Kafka - как минимум странно.
Сравниваются способы организации коммуникации между сервисами. И Кафка - не самое подходящее решение. Казалось бы, почему не взять нормальную очередь сообщений, если обычные запросы не подходят?
>>1814894
Вот действительно сириус пацаны - https://habr.com/en/company/lsfusion/. Целый ЯП вместо 1С придумали.
>Вот действительно сириус пацаны - https://habr.com/en/company/lsfusion/. Целый ЯП вместо 1С придумали.
Пиздец, одна история охуительнее другой:
https://habr.com/ru/company/lsfusion/blog/463095/
Думал, пиарить свою начальную стадию данинга-крюгера на хабре это совсем зашквар, но нет - пацаны шмагли.
>нормальную очередь сообщений
А ничего другого нормального и нет. RabbitMQ - это говно-говна, которое не умеет в кластеризацию (разваливается при split-brain) и херит данные, которые хранит в мнезии.
>можно получить более достоверную информацию об этом кейсе
Конкретно эта история затерялась за задворках scala_ru и scalaponv
Вот тебе еще история ребят, которые перешли со Scala на Пщ и горя не знают -
http://jimplush.com/talk/2015/12/19/moving-a-team-from-scala-to-golang/
>Ты же в курсе, что в случае, если твой сервис, посылающий сообщение в Кафку умрет или пропадет соединение между сервисом и брокером
Ну, не передергивай, старина. Одно дело, когда у тебя есть кластер из коммит логов и другое дело, когда ты шлешь запрос и ждешь на него ответ. В одном случае ты кладешь мессендж в кафку и идешь дальше заниматься своими делами, а в случае хтпп запроса - ты отправляешь его, ждешь ответ, а потом идешь что-нибудь делать. В случае асинхронных запросов ты все равно жрешь ресурсы.
> RabbitMQ - это говно-говна
> split-brain
Начинается, анонимус на двачах обсирает одну из самых проверенных в продакшене технологий. Во-первых, это может быть, а может не быть проблемой. Во-вторых, насколько я помню, стратегию обработки сплит-брейна можно конфигурировать. В-третьих, ты знаешь как Кафка сплит-брейн обрабытывает, или в чатике в котором ты вычитал про проблемы рэббита об этом не писали?
>А ничего другого нормального и нет.
Как минимум есть старый добрый ActiveMQ, NATS, SQS если на амазоне, если уж хочется велосипеды покрутить, можно что-то свое на ZeroMQ придумать, проще чем на кафке получится.
>Конкретно эта история затерялась за задворках scala_ru и scalaponv
Ну так и говори - я читал в каком-то чатике, что .... Не очень убедительно и полезно.
>Вот тебе еще история ребят, которые перешли со Scala на Пщ
Читал, у них там больше со scalaz проблема была и разными стилями. Ну и это 2015 год, эти уроки уже давно выучены.
>В одном случае ты кладешь мессендж в кафку и идешь дальше заниматься своими делами
И посылка в кафку может точно так же зафейлится, как и HTTP запрос.
>а в случае хтпп запроса - ты отправляешь его, ждешь ответ
В первом случае ты тоже должен ждать ответ, только он придет в виде сообщения в другом топике. После этого ты должен как-то сматчить запрос с ответом. Это можно реализовать, но достаточно сложно - не лучше ли позволить HTTP это сделать за тебя?
>В случае асинхронных запросов ты все равно жрешь ресурсы.
Соединение или что? С Кафкой ты его не держишь?
Это "говно говна" используют примерно все, лол. Просто как и у любой технологии у него есть свои ограничения. Конкретно раббиту, вроде бы, становится плохо при 300к сообщений в секунду (что-то такое я слышал от очень крупных ребят, которые имели его в продакшене), но при этом если у тебя есть такие нагрузки - ты или уже имеешь деньги на целый штат инженеров, чтобы тюнить его или переписать всё на гораздо более мудрёную кафку, или ты что-то сделал очень плохо и дидосишь сам себя.
А построение кластера и борьба со сплит-брейном - это сложная штука вообще всегда.
И да, раббит идеально подходит для простых проектов, потому что он прост в освоении и с ним легко работать. Кафка же сложная, как самолёт, с миллионом ручек, настроек и всякими зукиперами под капотом.
Это правда? Она умирает или есть какие-то перспективы? (я слышал, хадуп написан на предыдущей мажорной версии скалы и, поскольку переписывать такую сложную хрень себе дороже, а хадуп - основной поставщик вакансий для скалистов, то новую скалу будет использовать заметно меньше народу)
Какие вообще подводные для вката?
Давай так - кролик разваливается при сплит-брейне и там нет никакой автоматики, которая бы собрала кластер обратно и отрезолвила сообщения между половинками. Все это нужно делать руками, включая перезапуск самого кролика. Поэтому люди уходят на кафку, т.к. там эти проблемы решены на уровне архитектуры.
Но если область твоих проектов - это какие-нибудь сельские интернет-магазины, которые хостятся на VPS за 300 рублей в месяц и их посещают полтора сельчанина, то да - кролик лучший выбор в качестве MQ.
Хадуп написан на Java. Apache Spark написан на Scala. Да, все верно говорят. 3/4 всех вакансий - это т.н. data science/big data/data engineer job, где Scala нужна на уровне DSL к Apache Spark. Остальные 1/4 всех вакансий это какие-нибудь мутные стартапы, которые пытаются в FP на котах, либо какие-нибудь залетные микрочелики, которые пытаются писать энтерпрайз на Akka, когда есть Spring.
Основные подводные заключаются в том, что без опыта в Java, ты вряд ли попадешь на позицию Scala разработчика, либо будешь сосать бибу первые 3-5 лет, пока выйдешь на адекватный уровень компенсации.
Большинство вакансий в РФ - это либо желтые банки (где царит своя, собственная атмосфера из тру ФП и наколенных поделок), либо компании поменьше, где эта Scala используется сбоку в маленьких командах (big data/akka).
Если хочется чего-то нового и не хочется побираться и нищенствовать, то попробуй Go - платят больше чем на Scala, куча вакансий, полно библиотек и фреймворков, отличная поддержка IDE и прочего тулинга, включая билд системы.
При этом учится он за месяц максимум. Дальше люди выдают боевой код.
>>1815168
>Это "говно говна" используют примерно все, лол. Просто как и у любой технологии у него есть свои ограничения. Конкретно раббиту, вроде бы, становится плохо при 300к сообщений в секунду (что-то такое я слышал от очень крупных ребят, которые имели его в продакшене), но при этом если у тебя есть такие нагрузки - ты или уже имеешь деньги на целый штат инженеров, чтобы тюнить его или переписать всё на гораздо более мудрёную кафку, или ты что-то сделал очень плохо и дидосишь сам себя.
Если много денег то берут вот такую хуету и забрасывают все эти ваши игрушки в долгий ящик:
https://www.ibm.com/support/knowledgecenter/SSMKHH/mapfiles/product_welcome.html
Зачем, когда в облаке уже есть все эти ваши очереди сообщений, через которые можно гонять сотни тысяч сообщений в секунду, отправляя их где-нибудь в Нью-Йорке и забирая в датацентре из Токио?
Так, понятно... Давай тогда тезисно:
- Scala используется преимущественно в big data (Apache Spark)
- За 11 лет существования так и не появилось нормальной поддержки со стороны IDE
- Билд тулы находятся в заднице по сравнению с Gradle/Maven
- Нет никаких киллер фич со стороны языка, которые бы сделали работу рядового разработчика проще и приятнее
- Нет никакой альтернативы библиотекам/фреймворкам из Java (Spring/Hibernate/Quarkus/etc). Все либо сырое, либо нужно пердолить очередную обертку самостоятельно
- Scala 3 окончательно добьет Scala, т.к. это по сути новый язык, а значит, что поддержка IDE откатывается на годы назад, библиотек нет, программистов нет, а те что есть - идут на хуй и все переписывается на Java/Go.
— Знаете, почему у LinkedIn много лет такой тормозной, глючный и неудобный сайт? Потому что они надолго увязли в Scala и до сих пор не могут оправиться — https://www.quora.com/Is-LinkedIn-getting-rid-of-Scala/answer/Kevin-Scott
— Twitter отказывается от Scala — https://www.quora.com/Is-Twitter-getting-rid-of-Scala
— https://movio.co/blog/migrate-Scala-to-Go/
— http://jimplush.com/talk/2015/12/19/moving-a-team-from-scala-to-golang/
— http://uberblo.gs/2016/12/golang-is-really-awesome-and-why-it-beats-scala/jvm
>It took some of us six months including some after hours MOOCs, to be able to get relatively comfortable with Scala. In contrast, we picked up ‘Go’ in two weeks. In fact, the first time I got to code some Go was at a Code Retreat about 10 months ago. I was able to code a very basic Mario-like platform game!
Nice, nice!
Хуй знает. По мне так стоит посмотреть в сторону Go. Чувак описал буквально боль любого Scala разработчика. Нахуй себе волосы на жопе рвать, когда можно получать удовольствие от разработки?
Go звучит как история успеха.
Го так-то норм, правда, лично мне там как раз недостаёт гарантий. Он в ряде мест слишком уж низкоуровневый и никак не страхует тебя от того, что ты забудешь проверить указатель перед разыменованием или не проверишь ошибку. Но при этом действительно очень простой, буквально "си с утиной типизацией и зелёными потоками".
>процедурная параша из 80х без ничего
>поучать удовольствие от разработки
С goвном только только перед жатниками проповедовать.
Просто у гошников есть куча интересной работы и зп в 300к а у тебя нет, вот и бесишься
Ну, смотри. Haskell или какой-нибудь OCaml еще строже и предоставляют больше гарантий, только тулинг там никудышный и библиотек - хуй да нихуя. Пишут на них либо фанатики, либо какие-нибудь научные работники.
А нужен простой и понятный инструмент для решения типичных проблем с которыми сталкивается разработчик.
Какая у гошников интересная работа? Этот недоязычек настолько невыразителен, что его применение в любом сложном домене на монолитном проекте неизбежно приводит к горам невменяемого быдлокода. Поэтому он подходит только для микросервисов, для плоской примитивной хуйни, исходя чисто из ограничений самого языка.
Может ли быть интересно писать сотни примитивной хуйни на 2.5 экшена и склеивать всё это воедино в основном девопс методами? Возможно, если ты студент или свитер.
П.С. вчера звали в калифорнийский е-комерс стартап, где они тоже стартанули на гоу, но потом решили что всё это хуйня, и без нормальной системы типов программировать нельзя и взяли скалу.
Это принимается. С другой стороны, моделирование сложной предметной области на примитивном языке приводит к куче бойлерплейта с огромным пространством для потенциальных багов, особенно если в языке нет почти ничего для повышения сейвовости. В итоге, за счёт тулинга, инфраструктуры, малого порога вхождения, простоты самого языка ты действительно получаешь буст на старте, но при переходе в стадию продукта с поддержкой неизбежно ждёт возмездие, потому что одно дело накидывать goвнокод на стартапе, другое - менеджить крупную кодовую базу, которая прошла через кучу рук.
Scala как бы должна была стать посередине, с одной стороны дав инфраструктуру, с другой дав необходимые выразительные средства самого языка.
Ну и касательно изначального поста на который я ответил, фан от быдллкодинга на ЯП уровня бейсика может получать только вчерашний студент. Опытный разработчик либо вообще не получает никакого удовольствия, а только хочет побыстрее закрыть задачу в жире (типичный джява/пхп сениор), либо получает, но для этого нужен как минимум ЯП позволяющий ясно выражать абстрактные мысли, и go таким ЯП очевидно не является.
Если ты думаешь что кафка как-то резолвит сообщения между половинками, то у меня для тебя плохие новости.
>там эти проблемы решены на уровне архитектуры.
Ну-ка расскажи, как по твоему мнению эта проблема решена в кафке, а мы посмеемся я-то знаю как, лол.
>>1815189
>без опыта в Java будешь сосать бибу первые 3-5 лет
Справедливости ради, переходить на новую платформу и изучать Скалу действительно сложно. Впрочем, если ты с С# или PHP захочешь на Java или Go переехать, тоже будет непросто.
>>1815199
Мы же про очереди сообщений говорили, разве нет? Ну а твоим тезисам (выдумкам):
> - Scala используется преимущественно в big data (Apache Spark)
Нет у меня такой статистики, но возможно.
>- За 11 лет существования так и не появилось нормальной поддержки со стороны IDE
Появилось. Тут спорить бесполезно, каждый может просто проверить.
>- Билд тулы находятся в заднице по сравнению с Gradle/Maven
Ну так используй мавен, в чем дело?
>- Нет никаких киллер фич со стороны языка, которые бы сделали работу рядового разработчика проще и приятнее
Есть, уже разбирали в прошлом треде.
>- Нет никакой альтернативы библиотекам/фреймворкам из Java (Spring/Hibernate/Quarkus/etc). Все либо сырое, либо нужно пердолить очередную обертку самостоятельно
Есть, и лучше. Я использовал обе экосистемы и работал с людьми которые их использовали. Тоже разбирали в прошлом треде.
>- Scala 3 окончательно добьет Scala, т.к. это по сути новый язык, а значит, что поддержка IDE откатывается на годы назад, библиотек нет, программистов нет, а те что есть - идут на хуй и все переписывается на Java/Go.
Я так не думаю: язык не новый, библотеки и идея уже подтягиваются. В любом случае, увидим через год.
>>1815250
> Пишут на них либо фанатики, либо какие-нибудь научные работники.
Либо компиляторы с криптой.
Я бы очень хотел с тобой согласится, на самом деле. Только опыт показывает, что бизнес выигрывает от выкатки даже полусырых фич сейчас больше, чем от идеальных фич после и поэтому скорость найма обезъянок и выкатки говнофич - чуть ли не главное достоинство правильного айти стартапа.
Вот когда станет много денег - тогда можно будет и переписать. Только за такие деньги и с такой пользовательской базой уже все баги будут отловлены руками пользователей и обёрнуты в if'ы руками тех же обезьянок.
И я сейчас говорю даже не про го, а скорее про пехапе и plain js: я уже видел множество компаний, с разваливающимся спагетти-монолитом, которые были успешными финансово и им было вообще наплевать, что там работает. Переписывалось оно только и исключительно в том случае, когда всё ложилось от больших нагрузок и то часто дешевле плашку памяти купить или сервер мощнее, даже если там просто в цикле запросы в базу делаются.
К сожалению, качество не нужно практически никому кроме того, кто непосредственно с кодом работает. Пользователям кстати тоже не нужно, они очень консервативные и ленивые, им вообще не влом страницу обновить или вернуться через полчаса, они начинают отваливаться только если там действительно что-то ужасное.
Далее, можно было бы сказать, что такие языки как скала или хаскель должны помогать в тех областях, где вероятность ошибки критична, типа процессинга банковских транзакций - но я сам работаю в банке и знаю, что эти вещи элементарно пишутся на го и проблем с ними не возникает.
Далее, про го: да, мне хотелось бы больше гарантий и больше выразительности, но в реальности выгода от их использования неочевидна очень многим, потому что нормальные разработчики и так не забывают проверить указатель на nil и всё такое плюс пишут много тестов, на которых отлавливается подавляющее большинство глупых ошибок. Я вот вообще по tdd работаю.
Так что, к сожалению, мы живём не в идеальном мире и выразительность с мощностью и безопасностью нужны очень и очень мало кому. Особенно безопасность, гугл пароли для gmail до 2019 года в открытом виде хранил и всем было насрать, лол.
Я бы очень хотел с тобой согласится, на самом деле. Только опыт показывает, что бизнес выигрывает от выкатки даже полусырых фич сейчас больше, чем от идеальных фич после и поэтому скорость найма обезъянок и выкатки говнофич - чуть ли не главное достоинство правильного айти стартапа.
Вот когда станет много денег - тогда можно будет и переписать. Только за такие деньги и с такой пользовательской базой уже все баги будут отловлены руками пользователей и обёрнуты в if'ы руками тех же обезьянок.
И я сейчас говорю даже не про го, а скорее про пехапе и plain js: я уже видел множество компаний, с разваливающимся спагетти-монолитом, которые были успешными финансово и им было вообще наплевать, что там работает. Переписывалось оно только и исключительно в том случае, когда всё ложилось от больших нагрузок и то часто дешевле плашку памяти купить или сервер мощнее, даже если там просто в цикле запросы в базу делаются.
К сожалению, качество не нужно практически никому кроме того, кто непосредственно с кодом работает. Пользователям кстати тоже не нужно, они очень консервативные и ленивые, им вообще не влом страницу обновить или вернуться через полчаса, они начинают отваливаться только если там действительно что-то ужасное.
Далее, можно было бы сказать, что такие языки как скала или хаскель должны помогать в тех областях, где вероятность ошибки критична, типа процессинга банковских транзакций - но я сам работаю в банке и знаю, что эти вещи элементарно пишутся на го и проблем с ними не возникает.
Далее, про го: да, мне хотелось бы больше гарантий и больше выразительности, но в реальности выгода от их использования неочевидна очень многим, потому что нормальные разработчики и так не забывают проверить указатель на nil и всё такое плюс пишут много тестов, на которых отлавливается подавляющее большинство глупых ошибок. Я вот вообще по tdd работаю.
Так что, к сожалению, мы живём не в идеальном мире и выразительность с мощностью и безопасностью нужны очень и очень мало кому. Особенно безопасность, гугл пароли для gmail до 2019 года в открытом виде хранил и всем было насрать, лол.
>Появилось. Тут спорить бесполезно, каждый может просто проверить.
Проверяй - https://youtrack.jetbrains.com/issue/SCL-18207
Остальное даже комментировать не хочу. Ты либо поехавший фанатик, либо на зарплате в JB/желтых банках.
>100 постов жирный тролль на самоподдуве тянет рандомные фразы из понва и смакует любой кейс где со скалой что-то пошло не так, в то время как сам пишет на пхп и жалуется что не может перейти на Scala
Хороший у вас тут тред. Ладно, скоро рабочий день начинается, пойду писать на Scala в прод за 4 средних зарплаты пхпшника.
>пойду писать на Scala в прод за 4 средних зарплаты пхпшника.
Ну расскажи-покажи! Ну расскажи-покажи!!
Ты и здесь обосрался, долбоеб. BSP - относительно недавняя разработка, как со стороны скалы, так в IDEA, так что баги там ожидаемы.
Для тех кто интересуестя скалой и просто мимокрокодилов: поддержка скалы и в IDEA хуже чем джавы, по вполне понятным причинам - джава приносит больше денег джетбрейнсу и проще как язык для анализа и компиляции. Я сам иногда сталкивался с тем что валидный код подсвечивается как некорректный и наоборот, а также что некоторые рефакторинги работают некорректно. С другой стороны, это и раньше нблаюдалось на коде использующем много магии системы типов (то есть 0.1% от всего кода, а во многих проектах 0%) и со временем ситуация улучшается (в 2013 действительно все было намного хуже). В любом случае, называть поддержку скалы не нормальной - не более чем троллинг, для каждодневной разработки ее хватает с головой.
>Ты либо поехавший фанатик
Да не сказал бы, просто пока Скала - самое удобное что есть на JVM.
>Остальное даже комментировать не хочу.
Слив засчитан. А мы еще даже на серьёзные темы вроде сплит-брейна говорить не начали, это тебе не какашками в ЯП бросаться, тут чтением чатиков не обойдешься.
>>1815445
В общем-то согласен, но вот это
>Только за такие деньги и с такой пользовательской базой уже все баги будут отловлены руками пользователей и обёрнуты в if'ы руками тех же обезьянок.
не вся правда. Проблема в том что софт развивается, и после определенного порога говнокода и количества ифов вносить измнения, не ломая уже сущесвующую функциональность становиться иногда невозможно, но чаще очень трудно, а точнее долго. А вот этого бизнес уже очень не любит.
>Пользователям кстати тоже не нужно, они очень консервативные и ленивые, им вообще не влом страницу обновить или вернуться через полчаса,
Так работает только если ты монополист.
>потому что нормальные разработчики и так не забывают проверить указатель на nil
Это сарказм?
> не вся правда. Проблема в том что софт развивается, и после определенного порога говнокода и количества ифов вносить измнения, не ломая уже сущесвующую функциональность становиться иногда невозможно, но чаще очень трудно, а точнее долго. А вот этого бизнес уже очень не любит.
Как бы да, но потихоньку рефакторится и всё такое. Таким изящным, каким он был бы на той же скале, код на го будет наверное никогда, но поддерживать +- приемлемую структуру и избегать соскальзывания в говномонолит можно очень долго. Это даже не вопрос языка, скорее умения писать достаточно абстрактно и знания, когда нужно немного порефакторить.
> Так работает только если ты монополист.
Неа, даже в нишевых продуктах. Понятно, что если у тебя хуи на главной странице или корзина грузится 30 минут, то никто туда не зайдёт, но таких ошибок обычно не совершают. А менее критичные типа всратой верстки, минутной прогрузки корзины или легких лагов обычно все игнорируют.
> Это сарказм?
Неа. Без шуток, я давно программирую на го и как правило перед использованием всё проверяется. Я согласен, что какой-нибудь maybe даёт больше гарантий и был бы лучше, но правда в том, что за последний год точно я не ловил nil pointer error ни разу (ну может во время тестов что-то падало, такое не запоминается).
Что тебе показать, дебич?
>Как бы да, но потихоньку рефакторится и всё такое.
Конечно, рабочий и даже поддерживаемый софт писали на намного более сложных в использовании языках чем джава и гоу. Просто я за то чтобы хоть чуть-чуть двигать индустрию в сторону более оптимальных подходов.
>Неа, даже в нишевых продуктах
В нишах как раз часто и возникают монополии. Но никто не будет ждать минуту пока загрузатся сайт, если рядом есть такой же, загружающийся за секунду.
>я давно программирую на го и как правило перед использованием всё проверяется.
Прямо в каждом методе? Это на уровне стайл-гайда у вас? В джаве/шарпе это не так распространено, и там NPE - наверное самая частая ошибка. В любом случае, такой подход имеет свою цену в плане боилерплейта, а глобально с ним можно очень далеко зайти - можно сказать что раст не нужен, нормальные разработчики не делают free after free и не допускают выхода за границы массивов, статические анализаторы кода не нужны, да и вообще нормальные разработчики не делают багов вне зависимости от языка.
> Конечно, рабочий и даже поддерживаемый софт писали на намного более сложных в использовании языках чем джава и гоу. Просто я за то чтобы хоть чуть-чуть двигать индустрию в сторону более оптимальных подходов.
Я тоже и излишняя примитивность го мне тоже кажется во многом ошибочной. Не во всём (в их подходе есть здравое зерно, надо сказать), но во многом. В областе дженериков - так точно, лол, благо что их таки введут в го2.
> В нишах как раз часто и возникают монополии. Но никто не будет ждать минуту пока загрузатся сайт, если рядом есть такой же, загружающийся за секунду.
я имел ввиду не монополии. Даже сраный интернет магазин, продающий матрацы, может позволить себе минутную загрузку корзины. Да, может существовать другой магазин, грузящийся за секунды и самая прошаренная часть аудитории уйдёт туда (до 20 лет, айтишники и то), но подавляющая часть - какие-нибудь бабушки, деревенские, рабочие с заводов и прочий пролетариат очень непритязательны, у них и так всё тормозит, потому что комп обвешан яндекс-барами и mailru-игорами, они разницы и не заметят.
Но это зависит от целевой аудитории, это 100%.
> Прямо в каждом методе? Это на уровне стайл-гайда у вас?
При использовании перед разыменованием, если параметр опциональный и ты не проверил его раньше.
Ну и всем известные правила вида "не пили сук на котором сидишь", "не передавай nil непонятно куда, если это явно не требуется" и тп. Может, звучит странно и небезопасно, но повторюсь - проблем с указателями у меня не было примерно никогда, при том, что я работаю в команде и мы пишем довольно много кода.
> В любом случае, такой подход имеет свою цену в плане боилерплейта, а глобально с ним можно очень далеко зайти - можно сказать что раст не нужен, нормальные разработчики не делают free after free и не допускают выхода за границы массивов, статические анализаторы кода не нужны, да и вообще нормальные разработчики не делают багов вне зависимости от языка.
Я осознаю, что такой подход небезопасен и ни в коем случае не говорю, что он правильный. И даже выше писал, что мне такое не очень нравится. Просто заметил, что при этом в реальной работе таких ошибок не настолько много, чтобы суровая необходимость в таком подходе чувствовалась. Поэтому многим отбитым гошникам и сишникам он кажется избыточным.
А линтер в го кстати очень мощный, много чего отлавливает, рейс детектор вообще огонь.
> Конечно, рабочий и даже поддерживаемый софт писали на намного более сложных в использовании языках чем джава и гоу. Просто я за то чтобы хоть чуть-чуть двигать индустрию в сторону более оптимальных подходов.
Я тоже и излишняя примитивность го мне тоже кажется во многом ошибочной. Не во всём (в их подходе есть здравое зерно, надо сказать), но во многом. В областе дженериков - так точно, лол, благо что их таки введут в го2.
> В нишах как раз часто и возникают монополии. Но никто не будет ждать минуту пока загрузатся сайт, если рядом есть такой же, загружающийся за секунду.
я имел ввиду не монополии. Даже сраный интернет магазин, продающий матрацы, может позволить себе минутную загрузку корзины. Да, может существовать другой магазин, грузящийся за секунды и самая прошаренная часть аудитории уйдёт туда (до 20 лет, айтишники и то), но подавляющая часть - какие-нибудь бабушки, деревенские, рабочие с заводов и прочий пролетариат очень непритязательны, у них и так всё тормозит, потому что комп обвешан яндекс-барами и mailru-игорами, они разницы и не заметят.
Но это зависит от целевой аудитории, это 100%.
> Прямо в каждом методе? Это на уровне стайл-гайда у вас?
При использовании перед разыменованием, если параметр опциональный и ты не проверил его раньше.
Ну и всем известные правила вида "не пили сук на котором сидишь", "не передавай nil непонятно куда, если это явно не требуется" и тп. Может, звучит странно и небезопасно, но повторюсь - проблем с указателями у меня не было примерно никогда, при том, что я работаю в команде и мы пишем довольно много кода.
> В любом случае, такой подход имеет свою цену в плане боилерплейта, а глобально с ним можно очень далеко зайти - можно сказать что раст не нужен, нормальные разработчики не делают free after free и не допускают выхода за границы массивов, статические анализаторы кода не нужны, да и вообще нормальные разработчики не делают багов вне зависимости от языка.
Я осознаю, что такой подход небезопасен и ни в коем случае не говорю, что он правильный. И даже выше писал, что мне такое не очень нравится. Просто заметил, что при этом в реальной работе таких ошибок не настолько много, чтобы суровая необходимость в таком подходе чувствовалась. Поэтому многим отбитым гошникам и сишникам он кажется избыточным.
А линтер в го кстати очень мощный, много чего отлавливает, рейс детектор вообще огонь.
>поддержка скалы и в IDEA хуже чем джавы, по вполне понятным причинам
Причина ровно одна - действительно важные фичи на вроде рефакторингов, инспекций кода, поддержки всевозможных фреймворков и т.д. есть в Ultimate версии IDEA для Java. В Scala за 11 с лишним лет существования плагина ничего такого не появилось, ровно как и нормального анализа кода, который бы не подсвечивал все красным. А, ну и в Ultimate версии для Scala ничего нет. Именно поэтому все сидят либо на Community, либо на EAP. Иными словами - разработка Scala плагина не приносит JB ни копейки.
> В областе дженериков - так точно, лол, благо что их таки введут в го2.
Интересно, кстати, будет посмотреть насколько go2 останется простым языком. Очень часто бывает что решения приклееные сбоку оказываются сложнее чем если бы проблему решали в изначальном дизайне.
>Даже сраный интернет магазин, продающий матрацы
Тут остается надеятся что через какое-то время сайты-магазины можно будет создавать без помощи программистов, а они будут заниматься более сложными задачами.
>подавляющая часть - какие-нибудь бабушки, деревенские, рабочие с заводов и прочий пролетариат очень непритязательны
Они действительно непритязательны к производительности (до определенного предела), но часто чувствительны к плохим интерфейсам - видел как приложения из телефона удаляли после минуты использования, а баги, особенно связанные с проебом данных никому не нравятся, особенно в B2B приложениях. Ну и если тормозит не магазин, в который ты заходишь раз в год, а что-то чем ты пользуешься каждый день, тут и работяга с завода альтернативу искать начнет.
>если параметр опциональный
Ну это понятно. А что если нет? Обычно проблема с null возникает когда его передают вместо обязательного параметра, а туда он в свою очередь попадает как результат вызова какой-то другой функции. По сути, нужно проверять не столько переданые параметры, а скорее возвращаемые значения. Это еще осложняется тем что функция, которая раньше нулы не возвращала, может начать это делать без изменения сигнатуры. А значит, эти проверки нужно делать просто всегда или же рано или поздно получишь NPE. С другой стороны, может в го это как-то по-другому обходится, или эти логические ошибки все равно существуют, но проявляются в другом виде. А может вы просто контролируете 90% используемого кода, не интегрируетесь с большим количеством библиотек и ловите все тестами.
>>1816473
>Причина ровно одна
Пока я нашел ровно одну причину нелепости твоих высеров - не никогда не пользовался тем, о чем пиздишь. Этот пост только подтверждает мой вывод.
>действительно важные фичи на вроде рефакторингов, инспекций кода, поддержки всевозможных фреймворков и т.д. есть в Ultimate версии IDEA для Java
Ultimate версия для Java действительно дает поддержку фреймворков, все остальное доступно в CE. Еще многие языки доступны только в Ultimate, если мне не изменяет память Node.JS, Python, PHP, Go.
>А, ну и в Ultimate версии для Scala ничего нет.
Есть, как раз таки поддержка фреймворков, а именно Akka и Play.
>Иными словами - разработка Scala плагина не приносит JB ни копейки.
Иными словами ты думаешь что бизнес потратил 11 лет и кучу денег на то что им не приносит прибыль, хотя бы косвенно?
> В областе дженериков - так точно, лол, благо что их таки введут в го2.
Интересно, кстати, будет посмотреть насколько go2 останется простым языком. Очень часто бывает что решения приклееные сбоку оказываются сложнее чем если бы проблему решали в изначальном дизайне.
>Даже сраный интернет магазин, продающий матрацы
Тут остается надеятся что через какое-то время сайты-магазины можно будет создавать без помощи программистов, а они будут заниматься более сложными задачами.
>подавляющая часть - какие-нибудь бабушки, деревенские, рабочие с заводов и прочий пролетариат очень непритязательны
Они действительно непритязательны к производительности (до определенного предела), но часто чувствительны к плохим интерфейсам - видел как приложения из телефона удаляли после минуты использования, а баги, особенно связанные с проебом данных никому не нравятся, особенно в B2B приложениях. Ну и если тормозит не магазин, в который ты заходишь раз в год, а что-то чем ты пользуешься каждый день, тут и работяга с завода альтернативу искать начнет.
>если параметр опциональный
Ну это понятно. А что если нет? Обычно проблема с null возникает когда его передают вместо обязательного параметра, а туда он в свою очередь попадает как результат вызова какой-то другой функции. По сути, нужно проверять не столько переданые параметры, а скорее возвращаемые значения. Это еще осложняется тем что функция, которая раньше нулы не возвращала, может начать это делать без изменения сигнатуры. А значит, эти проверки нужно делать просто всегда или же рано или поздно получишь NPE. С другой стороны, может в го это как-то по-другому обходится, или эти логические ошибки все равно существуют, но проявляются в другом виде. А может вы просто контролируете 90% используемого кода, не интегрируетесь с большим количеством библиотек и ловите все тестами.
>>1816473
>Причина ровно одна
Пока я нашел ровно одну причину нелепости твоих высеров - не никогда не пользовался тем, о чем пиздишь. Этот пост только подтверждает мой вывод.
>действительно важные фичи на вроде рефакторингов, инспекций кода, поддержки всевозможных фреймворков и т.д. есть в Ultimate версии IDEA для Java
Ultimate версия для Java действительно дает поддержку фреймворков, все остальное доступно в CE. Еще многие языки доступны только в Ultimate, если мне не изменяет память Node.JS, Python, PHP, Go.
>А, ну и в Ultimate версии для Scala ничего нет.
Есть, как раз таки поддержка фреймворков, а именно Akka и Play.
>Иными словами - разработка Scala плагина не приносит JB ни копейки.
Иными словами ты думаешь что бизнес потратил 11 лет и кучу денег на то что им не приносит прибыль, хотя бы косвенно?
На сколько хороша Scala в serverless? Как лучше всего собрать программу, чтобы не попасть на БАБКИ?
GraalVm - глюкодром и анальная лицензия от Оракула. Scala.js - еще один глюкодром, к которому подключается знание помоев в виде Node.js. Scala Native заброшен и по сути не имеет никаких байндингов к тому же AWS Lambda.
может потому что в жяве ты бойлерплейтишь и из-за этого тебе нужны рефакторинги сложные, а в скале бойлерплейта не так много из-за типов?
> Интересно, кстати, будет посмотреть насколько go2 останется простым языком. Очень часто бывает что решения приклееные сбоку оказываются сложнее чем если бы проблему решали в изначальном дизайне.
Ага, мне тоже интересно, во что в итоге это выльется.
> Тут остается надеятся что через какое-то время сайты-магазины можно будет создавать без помощи программистов, а они будут заниматься более сложными задачами.
Ну да. Только какой-нибудь pleer.ru (а сайт такого размера и сложности не так-то просто сделать "на цмске") может всё равно выглядеть всрато, обладать отстойным сервисом и при этом "жить".
> С другой стороны, может в го это как-то по-другому обходится, или эти логические ошибки все равно существуют, но проявляются в другом виде.
Ты наверное проводишь аналогии с джавой. В го можно передавать переменную по значению и тогда ты не сможешь передать вместо неё nil, а можно передать указатель на переменную и вот он может быть пустым. Но аргумента для передачи указателя может быть ровно два:
- или это опциональный аргумент и тогда его всё равно придётся проверять перед использованием;
- или мы специально передаём указатель вместо передачи по значению, чтобы не нагружать гц лишний раз (такое делается не всегда, а только если в каком-то месте на больших нагрузках гц проседает и приходится руками оптимизировать код) - но в таком случае ты всё равно будешь передавать аргумент вообще всегда и никогда не передашь nil, потому что ты знаешь, что он обязательный и указатель там чисто ради оптимизации.
Там есть отдельный момент, что вместо любого интерфейса (в смысле, когда вместо явного типа функция принимает интерфейс) можно передать nil и вот это жопа (и огромный камень в огород авторов го), потому что естественно никто в каждой функции не будет писать повторяющуюся лапшу типа if arg == nil return error - но реально это решается коллективным договором "никогда, вообще никогда не передавать nil вместо интерфейса". Звучит пиздец, конечно, но на самом деле это практика аналогичная "чисти за собой память" в си или "не делай die внутри библиотеки" вообще везде, просто никто никогда так не пишет, а если пишет - такой пакет никто не использует.
> не интегрируетесь с большим количеством библиотек
Их не так много, как в js, это да - но при этом почти все следуют тем же правилам, которые я описал выше, так что с этой стороны всё нормально.
> ловите все тестами.
Тестов пишем дофига, это верно, но даже не ради безопасности, а потому что так удобнее. Лень самому долбить в localhost джсончиками, когда тестируешь только написанный код. А так ты и проверяешь то, что только что написал - и на будущее тесты остаются. Хотя это настолько легко только потому, что у меня выстроена вся инфраструктура для тестов: под тесты создаются бд, миграции, вот это всё - и поэтому я реально только предсоздаю данные, шлю запрос и потом проверяю ассертами ответ.
И да, даже на тестах я не помню, чтобы были какие-то частые проблемы с указателями, значит, или не было совсем, или так редко и такие тривиальные, что в памяти не отложились.
> Интересно, кстати, будет посмотреть насколько go2 останется простым языком. Очень часто бывает что решения приклееные сбоку оказываются сложнее чем если бы проблему решали в изначальном дизайне.
Ага, мне тоже интересно, во что в итоге это выльется.
> Тут остается надеятся что через какое-то время сайты-магазины можно будет создавать без помощи программистов, а они будут заниматься более сложными задачами.
Ну да. Только какой-нибудь pleer.ru (а сайт такого размера и сложности не так-то просто сделать "на цмске") может всё равно выглядеть всрато, обладать отстойным сервисом и при этом "жить".
> С другой стороны, может в го это как-то по-другому обходится, или эти логические ошибки все равно существуют, но проявляются в другом виде.
Ты наверное проводишь аналогии с джавой. В го можно передавать переменную по значению и тогда ты не сможешь передать вместо неё nil, а можно передать указатель на переменную и вот он может быть пустым. Но аргумента для передачи указателя может быть ровно два:
- или это опциональный аргумент и тогда его всё равно придётся проверять перед использованием;
- или мы специально передаём указатель вместо передачи по значению, чтобы не нагружать гц лишний раз (такое делается не всегда, а только если в каком-то месте на больших нагрузках гц проседает и приходится руками оптимизировать код) - но в таком случае ты всё равно будешь передавать аргумент вообще всегда и никогда не передашь nil, потому что ты знаешь, что он обязательный и указатель там чисто ради оптимизации.
Там есть отдельный момент, что вместо любого интерфейса (в смысле, когда вместо явного типа функция принимает интерфейс) можно передать nil и вот это жопа (и огромный камень в огород авторов го), потому что естественно никто в каждой функции не будет писать повторяющуюся лапшу типа if arg == nil return error - но реально это решается коллективным договором "никогда, вообще никогда не передавать nil вместо интерфейса". Звучит пиздец, конечно, но на самом деле это практика аналогичная "чисти за собой память" в си или "не делай die внутри библиотеки" вообще везде, просто никто никогда так не пишет, а если пишет - такой пакет никто не использует.
> не интегрируетесь с большим количеством библиотек
Их не так много, как в js, это да - но при этом почти все следуют тем же правилам, которые я описал выше, так что с этой стороны всё нормально.
> ловите все тестами.
Тестов пишем дофига, это верно, но даже не ради безопасности, а потому что так удобнее. Лень самому долбить в localhost джсончиками, когда тестируешь только написанный код. А так ты и проверяешь то, что только что написал - и на будущее тесты остаются. Хотя это настолько легко только потому, что у меня выстроена вся инфраструктура для тестов: под тесты создаются бд, миграции, вот это всё - и поэтому я реально только предсоздаю данные, шлю запрос и потом проверяю ассертами ответ.
И да, даже на тестах я не помню, чтобы были какие-то частые проблемы с указателями, значит, или не было совсем, или так редко и такие тривиальные, что в памяти не отложились.
>может всё равно выглядеть всрато
Да может. Вопрос в том почему нет конкурентов. Хотя может они и есть и отжирают у него аудиторию. Ну и у бизнеса могут быть другие преимущества - цены у магазинов и например количество уже существующих пользователей. В B2B с этим посложенее - если твои платные сервисы проебывают чье-то время или деньги, это не может продолжаться бесконечно (хотя может долго по разным причинам).
>никогда, вообще никогда не передавать nil вместо интерфейса
А что делать если тебе нужно вернуть значение которого у тебя нет? Нет пользователя в базе или ключа в мапе? Или не получилось выделить память, как в malloc? Почти во всех языках, которые я немного знаю (условно С, Python, C#, Java, Clojure), для этого обычно используется null и именно отсюда и вылезает пресловутая billion-dollar mistake. В С++ используют что попало, в Scala - Option или похожие типы. А в Go какой принят паттерн обработки таких ситуаций?
>Тестов пишем дофига, это верно, но даже не ради безопасности, а потому что так удобнее
Это радует, а то в 2020 все еще есть ебанутые, который именно что руками JSONы пуляют.
>>1817116
Гугли in-sync replica set и unclean leader election. Возникнут конкретные вопросы, спрашивай.
Все, кто хотел вкатиться в Scala, рекомендую прочитать сегодняшний срач тимлидов крупных контор в scala_jobs, которые на пальцах объясняют, что перебежчиков, вкатунов и прочих мутных личностей им не надо. А нужны люди с опытом (минимум 1 год коммерческого опыта разработки), чтобы войти в Scala. При этом они подтверждают, что в Scala люди идут не за высокой зарплатой, а за возможностью работать над сложными задачами, которые, по какой-то причине, невозможно решить на Java.
> Да может. Вопрос в том почему нет конкурентов. Хотя может они и есть и отжирают у него аудиторию.
Всегда есть конкуренты. Но при этом практически невозможно захватить ровно 100% рынка, всегда будут недовольные, кому не понравился дизайн или просто кто в гугле не на ту ссылку ткнул. Так что в B2C ты не обязан даже быть лучшим - просто держи свой говносайтик и живи, пока твой доход меньше твоих расходов. Тем более, что там куча маркетинговых механизмов, скидочки, реклама, вся хуйня. Если у тебя говносайт - то тебе сложно стать лучшим, но это не означает, что ты умрёшь, короч.
> А что делать если тебе нужно вернуть значение которого у тебя нет?
Ага, через указатель, точнее, указатель с ошибкой: в го функция может возвращать несколько переменных (как правило это [pointer, error]) - и гошные линтеры умеют понимать, проверил ты это ошибку или используешь указатель "всырую".
Но даже если функция возвращает только указатель (хотя так обычно не делают), если это геттер, то ты же не дурачок и сразу напишешь что-то вида
```
val := GetVal()
if val == nil {
return err
}
// use *val
```
и убьешь возможную ошибку в зародыше.
Было бы лучше, если бы были к примеру юнион тайпы и в го можно было писать `func Foo() (value | error)`, но чего нет, того нет :(
>работать над сложными задачами, которые, по какой-то причине, невозможно решить на Java
Божечки, что же это за задачи такие-то?
this >>1818978 Типа сложный домен (обычно финансовый), где нужно накрутить побольше тайпклассов и упороться монадами на отличненько. Все как один негативно относятся к Akka/Play/Slick и говорят, что это "не тру скала" и что им "жаль" людей, которые тратят время на беттер джава подход, когда можно все тоже самое писать на котах.
>жейли
Жейли с Каем (Михаилом) - это как Весемир с Геральтом из мира Ведьмака. Они же ебанутые на всю голову.
Немчинского послушай по Scala. Он дурного не посоветует. Там грамотный разбор, между прочим.
> сегодняшний срач тимлидов крупных контор в scala_jobs
Видимо потёрли уже, ничего не нашёл :(
>Очевидно, написать кастомный scala-based-dsl.
Что еще можно услышать в скала треде кроме - скала ради скалы.
Нет такой бизнес задачи написать кастомный scala-based-dsl, есть задачи где это один из вариантов решения. Но кастомный DSL можно много на чем написать, есть и котлин и груви, в конце концов ANTLR.
>>1818997
>Типа сложный домен (обычно финансовый), где нужно накрутить побольше тайпклассов и упороться монадами на отличненько.
У кого в руках скала - тому все кажется тайпклассами и монадами.
>У кого в руках скала - тому все кажется тайпклассами и монадами.
Эти разговоры не на пустом месте появились. Большинство бекенд вакансий - это коты и прочий тайплевел стек. А это тайпклассы через тайпклассы.
Ни спарк ни лайтбенд стек не признается в скала коммьюнити как тру-скала. Хотя вакансии по спарку еще присутствуют.
>Ни спарк ни лайтбенд стек не признается в скала коммьюнити как тру-скала
Коммьюнити уровня чатиков в телеге?
Коты, как видишь, растут. Ну так выучи если работу не найти, делов-то.
>Нет такой бизнес задачи написать кастомный scala-based-dsl
Там выше "сложными задачами, которые, по какой-то причине, невозможно решить на Java".
Как видишь, слова "бизнес", там нет.
>Там выше "сложными задачами, которые, по какой-то причине, невозможно решить на Java".
>Как видишь, слова "бизнес", там нет.
Там еще выше
>При этом они подтверждают, что в Scala люди идут не за высокой зарплатой, а за возможностью работать над сложными задачами, которые, по какой-то причине, невозможно решить на Java.
Как видишь там есть слово "работать", что подразумевает решение именно бизнес задач, а не скала ради скалы.
>Ну так выучи если работу не найти, делов-то.
Ах если-бы все было так просто! Ведь в РФ никому не нужен перебежчик без коммерческого опыта в Scala. Ну и вакансии на котах меня ничуть не возбуждают. Ведь я могу лишь только догадываться сколько боли и унижения приходится терпеть рядовому программисту, которые в очередной раз пытается реализовать тайпкласс из котов, а идея все краснит!
>Ну и вакансии на котах меня ничуть не возбуждают
Ну и че ты в скалатреде забыл, если тебе ни betterjava ни ФП стек не нравятся, опущ? Иди на питоне пиши скрипты.
>betterjava
Отсутствие вакансий как класс. Общественное гонение на лайтбенд стек.
>ФП стек
Полторы вакансии в РФ, где нужно 3 года коммерческого опыта на котах и прочих фс2, минимум. Весь фп-стек - это леваки из тайплевела + пару отбитых кадров на вроде болгарина, который топит за дайверсити, и какого-то чела, которого поперли из твиттера и теперь он воюет с воображаемыми белыми супремасистами и пишет жысон парсеры.
Тааак, сейчас буду писать масштабируемые приложения на Скэйле!
@
Падажжиии, а почему ИДЕЯ краснит! Тааак...
@
Что же это такое, почему Скейла срет в хип! Падажииии!
@
Хм, а это что за закорючка?! Таааак!
@
Да как так то?! Почему всего 1к запросов в секунду! У на с же должно быть РЭКТИВ ПРАГРУММИНГ! Тааак, падажжии!
@
Михал Брсыч, ну дайте еще полгода - мы все на котлин перепишем и людей наймем!
@
Сап /pr, мне не перезванивают...
> Нет, не похуй. Менеджмент понимает, что если начать проект на непопулярной технологии, то это может загубить весь проект. Так случилось с Моим Складом. Пока его писали борщехлебы на Scala, то дела у компании шли так себе - новых сотрудников было тяжело нанять и они стоили каких-то безумных денег, продукт был забагован и вхождение в проект было тяжелым испытанием для новых программистов. Но вод пришел Козуля и переписал проект на Java и теперь разработчики находятся на раз-два, проект очистился от FP-дерьма и теперь все будет ништяк.
Я уж сильно извиняюсь, что отвечаю на пост далекой давности. Но блэт, какая же бредятина здесь написана. У МоегоСклада на Scala.js был написан только один маленький подпродукт (онлайн-касса), который не так уж сильно влиял, и говорить, что у компании шли дела плохо из-за этого - просто большая и наглая ложь. Основную прибываль в компании приносил сам МойСклад (невероятно, да), в котором скалы нет и использовался супер-древний полу-мертвый Java EE стэк (немножно вру, ибо капелька скалы в виде, например, джавовой обертки на скаловым персистентным вектором там была в коде). И лучше бы в МС хотя бы использовали Scala.js на фронте, ибо в реальности там используется для этого GWT, о котором ничего кроме кучи мата сказать вообще нельзя.
мимо бывший сотрудник МС, который ушел в скалу
Ты бот, который на кейворды триггерится? Или ты просто малолетний дебил, которому понабрасывать хочется?
- СКАЛА ГОВНО
- Ок, говно так говно, хуле ты в треде забыл?
- СКАЛА ГОВНО РАБОТЫ НЕТ
- Ну не нравится так пиши на пхп
- ГОВНО ГОВНО
Всем похуй, чел
Аналитика по Akka подоспела -
>Вот в акке ты что-то добавил и у тебя всё развалилось, и ты об этом не узнаешь
Проходить курс от Олега стоит только в случае, если ты потом собираешься идти в финтех школу Тинькофф и являешься при этом студентом. Только учти, что туда подаются одни из лучших ребят, которые побеждают в межнарах и щелкают задачки с литкод уровня HARD как орешки перед завтраком. 300кк/нс тебе, конечно же, никто не предложит. Типичная вилка для рядового разраба с 3-5 годами опыта - 100-130к. Сам желтый банк теперь куплен Яндексом (на самом деле Сбербанком, который держит "49%" акций Я).
В зависимости от вакансии, тебя ждет либо скандальная бабенка, которая будет тебе выносить мозг, доказывая, что Option - это не монада. Либо будет челик из инвестиций, который обмазывается тофу и прочими поделками ирландских бездельников, которые дожидаются выдачи паспортов.
В любом случае, перспективы у тебя далеко не радужные.
Неистово проигрываю в голосинушку с вакансий, которые вкидывают в скала_джоубс. "до 200к!", "ищем строго сеньоров!", "5 лет на спарке!", "физмат или математическое образование!". Какие-то мутные конторки, онлайн-казино из Литвы, где заебанные жизнью крупье со слезами на глазах крутят рулетки. Какие-то "стартапы" из Эстонии и Финки, пытающиеся найти сенек на 2к баксов через ИП.
Все эти "вакансии" не имеют ничего общего с настоящей работой, которую можно лицезреть в про_джмджобс. Вот где работа так работа! Каждый день вкидывают по 5-7 новых вакансий и все как на подбор - адекватные требования, вилки от 150 до 400к и выше (для лидов и крутых парней). Все хорошо у джавистов. Одни скалисты работают не за зарплату, а ради интересных проектов и пердолинья монад.
Очередная вакансия в скала_джоубс. Очередная компания пытается найти Apache Spark разработчика на вилку до 175к, лол.
Как начать писать пет-проекты? Прочел несколько книг, но все равно появляются моменты, когда я понимаю, что освоил не всю скалу. Понимаю, что без пет-проектов мое резюме даже рассматривать не станут, а на собеседованиях, скорее всего, будут попускать на алгоритмических задачках и каких-нибудь тонкостях языка на вроде линеаризации трейтов, например.
О, да, знаю эту проблему. Творческий кризис.
Если в кратце, старайся почаще задаваться вопросом "хуйнянейм не существует, а было бы супер, если бы она была".
Возможно, на андройде нет клиента для твоего любимого сервиса?
Или один бот в телеграмме работает не так хорошо, как бы тебе хотелось (если он вообще есть)?
Или ты бы хотел, чтобы малинка крутила резитивный диммер на маслянном обогревателе?
У меня нет проблемы с идеями проектов. Я боюсь, что мой код на Scala будет не оптимальным или всратым, в духе Java, т.к. я могу не знать каких-нибудь фишечек или паттернов, которые распространены в Scala-мире. Из-за этого у меня некого рода паралич, когда просто записываю и анализирую идеи (выбираю библиотеки и фреймворки, ищу аналоги и анализирую, что я мог бы улучшить, рисую архитектуру), но за написание кода так и не берусь...
Понятно
Почему ты такой жестокий? Я гребу джавистом и хочу перейти в скалу. Вот из-за таких как ты, люди уходят из скала-коммьюнити.
У тебя на работе скорее всего есть куча штуковин, которые возможно многим лень сделать (ну или просто нахрен не нужно, а тебе может быть весело). Такие штуки и есть отличный плейграунд для маленьких пет-прожектов. Не факт, что кто-то будет использовать, не факт, что получится годно, но для игр с интересным стеком такие задачи прекрасно подходят.
Чаще всего можешь посмотреть в сторону CD (в очень многих проектах, особенно свежих, это целый простор для своих тулзов)
или, например, если сервис большой и публичный и с предыдущим пунктом все ок, можно написать какую-нибудь тулзу, играющуюся с АПИ. А может у тебя тестеры есть? Вот посмотри, что им не хватает.
- Лысый рекламщик-нацист
- Психически неуравновешенный Мистер Коричневый
- Гей-пара из Ирландии
- Поехавший тимлид из желтого банка с аниме на аватарке
- Телеграм-пацаны с λ и [F] в именах
Шавка Трэвиса? Это ты?!
ЛАУС!
Еще раз - Опшн это монада и она следует лаус монады, а именно реализует методы мэп и флэтмеп и является тайпклассом.
Я тебе еще раз объясняю, что монада - это тайпкласс с методами мэп и флетмеп. Почитал бы красную книгу.
Потёк
Открой любое пояснение, что такое монада и увидишь, что это тайпкласс с методами мэп и флетмеп.
>Открой любое пояснение, что такое монада
Но ведь монада - это коробка, из которой вантуз выталкивает значение...
Каждый раз в голос.
Ты каждым постом мисконцептишь или путаешь вообще всё от теортиповых категорий до подходов к их реализации
Ващет монада определяется тайп конструктором М с двумя операциями:
return :: a -> M a
join :: M (M a) -> M a
где join можно заменить на bind
bind :: M a -> (a -> M b) -> M b
Объясните уже кто-нибудь этому долбоёбу, что монада - это функтор T: K->K с двумя известными естественными преобразованиями, а все эти тайпклассы и мапы - это специфика реализации монад в конкретном ЯПе или даже библиотеке.
Это уже лишнее. Мой поинт был в том, что монада - это концепция, а тайпкласс с методами - это какая-то конечная уебищная реализация.
Учусь на старшем курсе и задался вопросами. Есть ли смысл вкатываться в скалу через Олежа-банк в Екате? И смогу ли я потом перекатиться в другую компанию на скалиста? Ведь жёлтый банк вроде как на тофу пишет.
Да, конкуренции меньше будет на скале. Пусть лучше подемпингует зпхи на Яве. Питонистам и так платят копейки.
У Apache есть либа kafka_2.12, я использую версию 2.3.1
В ней есть класс (Пик1)
Когда я подключаю как библиотеку в джава проект, я могу обращаться к этой штуке так: new RackAwareMode.Safe$()
Идея показывает байткод Пик2
Я попытался зашейдить эту зависимость с релокейтом ЗК, И теперь у меня нет доступа до Safe$ - не видно ее из джава класса + байткод стал другим (Пик3)
От чего это может зависеть? думал от таргет версии двм, но вроде как нет... Как такое гуглить?
Ух бля.
По идее делать new для обращения ко вложенным object тебе не нужно, гугли "scala static forwarders".
В остальном я хз, видимо зависит от того, как именно ты делаешь релокейт.
Но вообще, почему бы не написать код на скале, либо просто взять джавовый кафка клиент?
>>1859298
контекст: кровавый тырпрайз на джаве, а мне нужно обновить версию зукипера, при этом кафке нужна старая версия ЗК (Зукипер), поэтому я зашейдил кафка-зависимость и релокейтнул ЗК.
В итоге такой отвал жепы скалы случился.
то что new не нужно юзать - спасибо, но это не помогло, т.к. сам Safe$ не видно просто из джава кода, хоть как обращайся
способом тыка понял, что эта проблема появляется когда релокейт происходит
добавил в релокейт пакет, где лежит проблемный класс (kafka.admin) и все заработало.
Не знаю почему так :(
А ты шейдил бинарник кафки? Что-то по байткоду не видно, чтобы там что-то в другой пекедж уехало.
да шейдил, но пекедж менял только у "org.apache.zookeeper",
"org.apache.jute"
Попробовал зарелокейтить аналогично все пакеты с префиксом "kafka" - не помогло, та же проблема :(
Я пользовался для шейдинга плагином https://github.com/johnrengelman/shadow
Щас посмотрел - там много окрытых ишью со скалой - видимо плагин криво работает с ней.
Может кто нибудь посоветовать плагин для шейдинга кафки? с учетом что там сорцы на скале.
у мавен шейд плагин тоже какие-то проблемы есть https://issues.apache.org/jira/browse/MSHADE-345
>да шейдил, но пекедж менял только у "org.apache.zookeeper",
>"org.apache.jute"
Не понял, зачем ты менял пекдж у зукипера, если у тебя конфликт версий кафки?
зукипер в проекте должен быть новой версии, а кафка должна использовать старую
поэтому для кафки зашейдил старую, а в основном проекте поднял версию
короче деконплеировал бинарник самой либы kafka_2.12 (пик1) и то что у меня получилось зашейдить (пик2).
Почему-то плагин для шейдинга наколбасил для каждого вложенного object отдельный класс.
При этом джавовы конпелятор его не видит, иде показывает синтаксическую ошибку, когда пытаешься к нему обратиться. Но! Class.forName("kafka.admin.RackAwareMode$Safe$") работает.
ну и хуйня....
зашейдил с помощью maven shade plugin'а - абсолютно такая же проблема. может все таки я что-то не так делаю, а не плагины кривые...
Сделать таск в SBT, который шейдит эту ебучую кафку и вызвать этот таск из градла как показано здесь https://stackoverflow.com/questions/51793555/how-can-i-call-an-sbt-task-from-gradle
пиздец остановите меня кто нибудь, скажите что есть способ легче
1) Ты точно понимаешь как шейдинг работает?
2) Опиши граф зависимостей - что и в каком порядке ты компилируешь и собираешь.
Есть вариант попробовать разные класслоадеры.
ну смотри как я понимаю
шейдинг - когда код зависимостей прямо запихивается в сам джарник, это удобно для развертывания приложения на серваке - чтоб все нужные зависимости нужных версий в самой джарке были
Во время шейдинга можно релокейтнуть классы в другой пекедж (т.о. изменить их FCN и импорты все соотв. в джарке поменять), таким образом можно позволить в рантайме иметь две версии одной и той же либы: джарка использует ту, которую сохранила и релокейтнула, а клиентский код, который подключил эту джарку как либу - может юзать другую версию
Верно, только обычно шейдингом называют именно сборку с релокейтом. Если просnо запихнуть все зависимости в джарник, это не шейдинг. Теперь нарисуй граф зависимостей.
>Создаю класс
>передаю ему как аргумент
>pattern matching
Тебе бы у специалиста провериться. Боюсь, что программирование это не твое. Возможно, что будет лучше, если ты пойдешь работать кассиром или дворником.
Паттерн матчинг это фича языка, как ты можешь ее в класс передавать? Код показывай и скажи какие значения он должен возвращать.
Я не претендую на гениальный код, я всего лишь начинающий разработчик и могу ошибаться, вот код, слева реализация класса с одним методом(пока), справа основной фай. Реализую нечеткие множества. Паттерн матчинг прекрасно передается в класс и используется в методе(первый метод работает), в ином случае никак не могу обратиться к паттерн матчингу. В принципе по коду все понятно должно быть, создаем юниверс(общее множество элементов) и несколько нечетких множеств. Прошу сильно не ругаться
сейчас скину второй скрин снова, чет тут хуево показывается
У тебя FuzzySet принимает не "паттерн матчинг", а double или флоат, который и является результатом выражения с паттерн матчингом.
значит он получает несколько значений, верно? Если так, то как мне к ним обратиться в теле класса?
Извини, пропиздоглазил. Класс получает функцию int -> float, ее и можешь вызвать в теле класса.
могу, но как? в методе isEmpty это получается благодаря юниверсу и forall, но других вариантов я не нашёл вовсе
И да, класс получает не Int - double, а T - double
Не понял вопроса. Ты не знаешь как функцию вызвать? Или ты хочешь узнать ее область область определения?
Я хочу узнать как получить доступ к значениям, которые передаются при создании класса. Там есть закомментированный метод contain и я хочу понять есть элемент v в тех значениях, которые я передал в класс.
Вызвал, передаёт ее хэшкод. Как получить ее элементы? Просто вызов не совсем работает.
Что такое элементы функции? Покажи как ты ее вызываешь.
> Да что ж у вас за коммюнити-то такое раковое
Это ты ещё в телеграм-чатики модерирующиеся виабушниками из желтого банка не заходил, уровень токсичности OVER9000.
Потом они ещё удивляются, почему никто не хочет использовать их поделки тофу
> занимаюсь сейчас Java, но необходимо scala за короткое время обозреть/понять на уровне основ и чтобы можно было эти знания применять
кто ж это в скалко-комьюнити так заходит? так тебя сразу определят в джявачерта и будут соответствующим образом относиться всегда
правильно заходить через хаскiль, чтобы все сразу поняли что ты правильный пацан
нужны знания хотя бы уровне осиленной тайпклассопедии, устройства основных либ и умения применять цацкель на практике
лишнего лучше не припёздывать, а то если фраернёшься адванседом и не вывезешь, то потом ещё хуже, чем джявочертом сидеть
ну и про свой старый опыт как ты там на джяве спринг лизал тоже помалкивай офк
пис
уже понял что тут за децибелов джавистов держат, я не в теме, почему так происходит? Интересно стало)))))
>дут не за высокой зарплатой, а за возможностью работать над сложными задачами
Классика, лол.
Работа за идею, горящие глаза, умным деньги не нужны и так далее.
Ты, для начала, пройди 4 алгоритмические секции в Вертикали, да за канкурэнси и модель памяти расскажи. А потом посмотрим, брать тебя на 30к или нет.
То самое коммьюнити, где один вайс си-ти-оу хвастался как они пересели на базель, и как у них все заверте...
А потом выяснилось, что под базель нет и десятой доли плагинов, да и поддерживается он так себе. И теперь вайс си-ти-оу, запрягает команду, чтобы те метнулись кабанчиком и вернули все взад?
>пройди 4 алгоритмические секции в Вертикали, да за канкурэнси и модель памяти расскажи
Подобное является впечатляющим для скалистов?
Джависты проходят одно собеседование и влетают на царские 200к минимум.
Я лет 6-7 назад заходил из С# через Scala for the Impatient. Сейчас есть второе издание, оно наверное тоже не совсем актуально, но для твоих целей должно подойти.
>Q: Какой стэк библиотек взять?
>A: cats, http4s, doobie, circe, ZIO
Почему, когда я открываю HH.ru, то вижу вакансии либо на Apache Spark, либо на Akka?
ну Акка очень неплоха, отработал на проекте больше года где все было на акке, мне понравилось. Это нормальные вакансии.
А вот с спарком лучше не сунутся туда. Так как сейчас надо овер дохрена макак которые все говно которое писали с 2003 на мап редюсе, сейчас переписывают на спарк, так как быстро и молодежно. и спарк писали на скале, значит нам надо скала девы. хотя им надо обезьяны знающие спарк. рекрутеры это не понимают поэтому ищут скалистов. Попал в такой местяк где хотели под шумок заставить выучить спарк и пойти на бигдату.
Хочу для себя поучить что-то интересное необычное. Из вариантов хаскель, идрис( но я так понимаю без хаскеля смысла нет макаться), эрланг, кложур, и возможно дотти.
Что имеет смысл попробовать? Цель - узнать всякие приколюхи которые глубокие по концепции. Например как в скале сделали с имплиситами, и таким корявым образом сделали тайпклассы из хаскеля.
А что был хоть за проект на Акке? Я куда не приду - везде либо от нее отказываются, либо говорят, что это легаси и сейчас все пилят микросервисы на котах/зио и связывают их через кафку.
гемблинг, вся бизнес логика была на модели акторов. Ну либы для функционального у нас тоже были, типа котов, шейплесов.
Та все так говорят, но я хз, может есть проблемы с перформансами. Некотрые жалуются что тяжело разбираться. Но надо просто привыкнуть к модели. Мне нравилось что тестировалось очень хорошо. плюс у акки есть типизиованые актеры. с персистансом хорошо сделано. Но если бы я начинал делать свой проект то явно не на акке, а скорее на зио и всяких модных вещах
>гемблинг
Сразу вспоминаю ЭволюшнГейминг и того бравого парня, который рассказывал как на Акке жить тошно и как они все лихо переписали на зио с котами, а поверх посыпали кафкой.
Где можно спиздить? И стоит ли книга того?
так потому что так и есть. часто джависты это тупые вкатывальщики без какого либо интереса к программированию. так как если бы оно их интересовало, они бы смотрели на разные подходы. разные языки. и тогда точно бы небыли бы джавистами.
Беда только в том, что на Scala в РФ пишет полторы помойной конторы, которые считают за честь, что ты у них будешь писать на поделии свихнувшегося немца из Швейцарии.
Варианты такие:
- clojure - макросы, трансдьсеры, CSP
- agda/coq/TLA+ - формальные доказательства/завтипы
- rust - new generation байтоебство
- prolog - логическое прогрмаиирование
А я вообще для себя решил что после после понимания основных парадигм слишком задрачивать их дальше смысла особо не имеет - нужно изучать что-то более фундаментальное (в моем случае распределенные системы).
Распределенные системы отлично пишутся на связке котов/зио + кафка, между прочим.
>с имплиситами, и таким корявым образом сделали тайпклассы из хаскеля
Как будто тайпклассы были изобретением разработчиков хаскеля
И что в них корявого, если реализация с самого начала называется имплисит?
>Type classes were first implemented in the Haskell programming language after first being proposed by Philip Wadler and Stephen Blott as an extension to "eqtypes" in Standard ML,[1][2] and were originally conceived as a way of implementing overloaded arithmetic and equality operators in a principled fashion
Ну имплиситы вещь весьма выразительная, с ними можно делать вещи, которые даже в хаскеле нельзя, но и говна с ними поесть можно, поэтому в скала3 их будут менять.
Я имел в виду общий концепт ад-хок перегрузки с группировкой типов в классы, а не одну из его реализаций
В момент приведения типы в скале ничем не отличаются от типов в хаскеле, только всё остальное время твои яйца не зажаты пьюр-фп костылями
>Халло!
>Ай воркд он таск 953 энд ай хэв э куэстшон
>Хау ду ай коннект ту датабасэ, плэз?
Если ты учился в школе с углубленным изучением английского и тебя родители натаскивали, то да, проблем устроиться в подобные конторы не будет. А так будешь мычать как побитая собака на собеседовании с рекрутером, вспоминая слова.
Ну и не забывай, что там, за забором, столько первоклассных разработчиков, что ты должен быть литерали гением, чтобы с ними конкурировать.
ладно, тогда сиди в рашке и не пизди, если не можешь выделить 200 долларов в месяц и пойти на курсы английского, или даже нанять репетитора. и за год уже говорить в 5 раз лучше.
А еще пиздят на хохлов, тут каждый 2 кто не совсем даун, или уже перекатился или перекатывается, или сидит дома и пиздячит на пиндосов.
>на курсы английского
Это где собирают группу в 10 человек на одного препода и тот пытается со всеми поговорить и что-то там объяснить за 40 минут?
Ну так таким нужно английский, а не скалу учить. И знать его нужно на уровне что быть понятым, а не идеально использовать речевые обороты и знать нюансы синонимов (хотя и желательно).
>Ну и не забывай, что там, за забором, столько первоклассных разработчиков, что ты должен быть литерали гением, чтобы с ними конкурировать.
1) Первоклассных не хватает. Работодатели за них конкурируют, а не наоборот.
2) У тебя точно есть конкурентное преимущество - цена.
>>1874113
Это по-разному. За пару лет активного изучения (курсы, сериалы в оригинале, грамматика по учебникам) вполне можно подтянуть до сносного уровня. Лет семь назад я за полгода разговорный язык с околонулевого подтянул до достачного для работы (ну это я, среднестатистическому двачеру как раз года два нужно будет).
Я коплю деньги на препода с айталки, с которым можно было бы качать разговорную практику
В чем смысл переката в Scala, если в скала канале вкидывают один раз в месяц полудохлую вакансию на 160-200к на хадуп, спарк?
На буржуев работать за баксы? Ну так для этого нужно уметь в разговорный английский и знать Akka.
В 2020 году никакого смысла перекатываться в скалу нет.
Этот хайп из овер.
Скала - одно из самых больших разочарований прошедшего десятилетия.
Подтверждаю.
Зычно проиграл на всю квартиру с этого высера - https://developer.lightbend.com/docs/akka-platform-guide/index.html
Такая-то нелепая попытка примазаться к тематике микросервисов.
Порог входа невысок, если ориентируешься в фп с тайпклассами можешь попробовать как простую альтернативу жаве
О да, перекатываться нужно именно в хайповые технологии. Что за дауны здесь сидят.
Чувак, причём тут хайп?
Скала просто закончилась.
Изначально было принято несколько принципиальных провальных архитектурных решений, и итог был, в общем-то, предрешён.
Например, делать процедурный сахар для джавы и фп 2 в 1.
По итогу хайпанула скала именно из за сахара и как только появился более переслащеный в лице котлина тут же стала не нужна.
А фп не развивалось никак.
слыхал неплохо дают бабок если быть жопной проституткой. Не хочешь попробывать?
я хз где вы видите что все закончилось. мне постоянно кидают вакансии, да, из них 40% это спарки. Куча людей работает, куча стартапов запустилось, плюс минус живое комьюнити, в раз 100 приятней чем в жабе. Люди развивают свои библиотеки, делятся знаниями.
может в россии и закончилось, но явно не в мире
добавлю, а не выстрелила потому что-пиндосы в своем большинстве крайне ленивые и не склонны к изменениям в карьере. был на проекте где люди работали по 20-25 лет в одной компании. и пришли туда как перл, потом переучивались на скалу. и таких 60%.
они не будут вкатываться с джавы на скалу.
наше снг комьюнити чаще всего готово в жопу давать за долларовые зарплаты, и им вообще похуй на чем писать, они пишут зарплаты прогромистов, видят что на жабе выхлоп один из самых высокий. на обжектив С и свифт сложнее вкатываться.
В итоге на скалу перекатились только ебнутые, которым не сидится на месте.
КОмпании которые примазались к "хайпу" в 2012-13 начали ахуевать, где им искать работяг на вашу это скалу. а остальные посмотрели на этих дураков и решили даже не макаться. Так как джава-макаку найдешь за пол часа, а хорошего специалиста за месяц-2. Порочный круг рынка, поэтому в нулевых было 2 базы или мускл(бесплатный) или оракл. так как на оракл ты найдешь всегда людей. и все ребята которые хотели идти в дба знали, что выучишь оракл, найдешь работу.
Если какой-то придурок с двача считает что какое-то решение провальное, то так очевидно и есть. Особенно если его уровень - рассуждения о переслащености языка и о том что фп в скале не развивалось никак.
>>1877170
>не выстрелила
Я вот что понять не могу - что для вас было бы выстрелила? Иметь такой же уровень использования как у джавы или что?
>>1877075
Ну это хорошая причина для преката, но я-то отвечал на пост в котором слова хайп и перекат в одном абзце стоят.
выстрелила, это значит как кубер, что его каждая собака использует, или как реакт, или как например как котлин, графкьюл, сваггер.
или технологии которые не стали топ запрашиваемым, а заняли свою нишу, например, спарк, го, кафка.
А скала по факту для бизнеса не нужна, и даже вредна. И проекты на скале сейчас ,или от энтузиастов, которым нравится фп и скала, или от "дураков" которые на нее перекатились/стартанули в 2012-2015 и думаю как найти людей.
Олег же пишет инвестиции и рассказывает про вэлью. Есть еще пара ирландских проходимцев, которые создают инструменты для вэлью. Ну и лысый из брейзерс тоже не отстает и толкает свои курсы и собирает на патреоне по 10к грина в месяц.
>или от энтузиастов
Ну так работать стоит только на таких проектах.
Там как минимум учитываются интересы дев-отдела, а значит есть понимание его важности, важности культуры разработки и т.д.
Конечно, полностью с тобой согласен. Но большинство(95%) пришли работать девами за бабки. Есть товарищ, прога ему всегда как и мне нравилась, занимались олимпиадным. Но сейчас, он хочет, до усрачки, попасть в топ компании типа амазона, гугла, фейсбука, САП , в любую залупу, главное чтобы было много людей, и он так и оценивает все компании, мол, "200 человек, ну что за говноеды, вот у гугла 10 милиардов к людей работает", мотивируя тем что там он поднимется по лестнице и будет получать очень дохуища бабок. Ну и таких дохуя.
>выстрелила, это значит как кубер, что его каждая собака использует, или как реакт, или как например как котлин, графкьюл, сваггер
Никакую из этих этих технологий каждая собка не использует (ну кроме реакта наверное). Особенно кубер, лол - пиздят о нем много, а используют единицы.
>или технологии которые не стали топ запрашиваемым, а заняли свою нишу, например, спарк, го, кафка.
Ну вот и скала заняла свою нишу - лучший язык для JVM для тех кто понимает как ее использовать.
>А скала по факту для бизнеса не нужна, и даже вредна
Мне кажется или ты по кругу в своих рассуждениях ходишь? Скала не выстрелила потому что вредна, а то что она вредна подтверждается тем что не выстрелила? Ты все-таки можешь сказать что такое выстрелила, не на примерах, которые больше на список текущих хайповых технологий похожи, а определение которое можно применить к любой технологии?
я сразу написал что это замкнутый круг
Я не понимаю предмет спора и что ты хочешь доказать. хочешь сказать что скала популярная в бизнесе, ну ты тогда не прав. У нее хорошее комьюнити, она развивается, много хороших идей есть. Но бизнесу она не надо, так как заебешься искать людей.
>я сразу написал что это замкнутый круг
Этот круг делает необоснованным любое рассуждение в котором используется. Например - ты дебил, потому что сидишь на дваче, а сидишь на дваче потому что дебил. Вывод - ты дебил.
>Я не понимаю предмет спора и что ты хочешь доказать
Я ничего не хочу доказать. Ты (или кто-то еще) высрал фразу скала не выстрелила. Я хочу понять что под этим имеется в виду.
>Но бизнесу она не надо, так как заебешься искать людей.
Слишком сильное обобщение. Все что мы можем обоснованно заявлять - скала менее популярна чем джава, а потому на нее труднее искать людей. Все остальные обобщения - фантазии, пока не приведены факты и непротиворечивые рассуждения, а реальная ситуация зависит от конкретных обстоятельств.
Ошибка в том, что «бизнес» это слишком общее понятие.
Я знаю лично несколько контор, которые работают исключительно на ФП-стеке, в том числе на скале, и вполне себе успешно живут в своей нише, оставаясь конкурентноспособными. Да, их меньшинство, но это тоже «бизнес». Поэтому если пишешь что «скала бизнесу не нужна», нужно указывать какому именно. Супер-крупные компании как раз могут себе позволить (и позволяют) экспериментировать сколько угодно с каким угодно стеком, так как кадрового голода не испытывают, а бюджеты и количество разрабов позволяют спавнить сколько угодно экспериментальных проектов, контрибьютить в опенсорс и т.д.
Стартапу тоже всё равно на чём стартовать, тут даже чем хайповее или необычней - тем лучше. Средние и большие конторы тоже разные бывают, типичные снг-галеры заточены на максимальные охваты, поэтому фокусируются на консервативном стеке, чтобы с одной стороны иметь как можно больше заказов, а с другой чтобы была возможность быстро захайрить нужно кол-во рабов из местных. И то, даже там завозят пару скалистов, чтобы не пропускать скала-заказы, когда они всё таки случаются. Но ещё сейчас есть много чисто виртуальных полностью ремоут-контор, которые собирают людей со всего мира, поэтому проблема захайрить людей у них особо не стоит. Так же есть масса консалтеров, с CTO на своей стороне, где выбор технологии полностью зависит от них, которые берут только те проекты, которые соглашаются на их правила разработки. Все они существуют и некоторые функционируют десятилетиям.
Но:
1. горело жопьё с токситиси чатов скалки, видимо поцы оттудава внебрачные сыны старого пердуна мартина которые звали не маму и папу при рождении а монады и моноиды очень умные и не для меня сравни с рукомьюнити раста -это как жопа и палец
2. как котик плакал сру вакансий: либо какие-то адепты, либо вечер в типа большую дату
Короче для меня ru Scala environment - so-so. А язык прикольный, вписался бы в какую-нибудь опенсорс компашку долбачей но без желтого налета и был бы рад как слон, но нiт яких хлопцев.
Вкатывайся в англоязычное коммьюнити (реддит, гиттер) если владеешь языком.
В телеграм-чатики по Скале не заходи, там тусуются одни и те же долбоёбы. Мне вот с ними на работе приходится общаться, с постоянным А КАК В ТАЙПЛЕВЕЛ СТЕКЕ КАКАТЬ и прочими фразами уровня /b/
сил тебе, Иисус все видит
вообще не понимаю нахерас работать с командой с которой некомфортно? Да в кудепсту их, пусть там в говне своем варятся сами.
>как кубер, что его каждая собака использует
>>1878581
>Особенно кубер, лол - пиздят о нем много, а используют единицы
и оба мимо. k8s много где, но не везде используют. k8s используют в больших компаниях, тк в этом случае это значительно упрощает жизнь компании. каждая тима, которая деплоит свои приложения, не изобретает свой (кривой) способ деплоймента
Да ясен хуй что много где используют. В абсолютных числах и хаскель наверное много где используют. Я про процент от тех кто о нем пиздит.
> кто работал в желтом банке
В каком из?
В любом случае, что там что там обычноработа, без особых подводных, но детали конечно зависят от того, в какую команду попадешь.
>желтом банке
>пояснить за подводные
Пойдешь в один желтый банк - встретишь тимлида-анимешника, который упарывается тру эфпе и пердолит свои, никому ненужные, библиотеки.
Пойдешь в другой желтый банк - попустят на собеседовании, да так попустят, что выбежишь весь взмыленный и помчишь в свою съемную однушку, чтобы поскорее принять душ.
Всё так. Только в другом желтом банке тоже используют ненужные библиотеки из первого желтого банка, т.к. это считается тру фп и как раз поэтому на собеседованиях попускают всех кто не согласен
>сил тебе, Иисус все видит
"и подошли к нему кНижники и фарисеи и вопрошали" (с) евангелие от
На мой взгляд сейчас в обоих желтых банках самые сильные команды скалистов в рашке. Но я ни в одном из них не работал, не знаю, есть ли подводные. ИМХО обычная банковская работа должна быть и з.п. должна быть средняя по рынку.
Еще они там большие фанаты ФП, причем странные фанаты. Типа считают, что ФП - это круто само по себе. Поэтому давайте писать монады на Скале и пихать zio куда не поподя. А то, что в Скале ФП - не пришей кобыле хвост, их как-то особо не волнует.
На мой взгляд, если ты не шаришь в ФП, но очень от него фанатеешь, иди в любой из желтых. По крайней мере ничего не потеряешь в плане финансов и попадёшь в сильную команду где будут всё это использовать. Если тебе пофиг, можешь идти в любой другой банк.
мимо из зеленого
> пихать zio куда не поподя
Сама по себе ZIO неплохая вещь, считай что это такие продвинутые Future'ы.
Однако, в жёлтобанках(тм) за использование просто ZIO тебя обоссут, потому что (по мнению отдельных упоротых персонажей) нельзя завязываться на конкретную реализацию IO-монады, грубо говоря, ты должен абстрагировать использование ZIO и писать всю бизнес-логику в абстрактном виде.
Дальше - больше, весь мир для таких целей использует cats-effect, но эта тусовочка не особо вдавалась в мотивацию и идеи положенные в основу этой библиотеки/стека, вместо этого они просто заявили что "тайплевел-стек говно", и сделали свою, более лучшую нет либу tofu, в которой идея абстрагировать конкретные типы возведена до абсурда.
И даже хуй бы с этими упоротыми челиками с их психическими расстройствами, но эта около-Московская тусовочка настолько токсичная, что за любое отличное мнение тебя просто загнобят (если ты уже там работает) либо попустят на собеседовании, как писали выше.
>Сама по себе ZIO неплохая вещь
Лол, базаришь. Я сам в ФП лет как 10. Вкатился на самом хайпе. Коты и ZIO - это попытки натянуть сову на глобус ФП на Скалу. ZIO лучше котов. Сам её использую просто потому, что мне так хочется. Раньше котов использовал. Тоже просто потому, что мне так хотелось. Но реальных причин этого делать в Скале нет в 98% приложений.
Что касается упоротых фанатов - я слушал их выступления. Есть хорошие работы, уважаю. Если ты фанат ФП, то почему не желтые? Быстро вкатишся, быстро прокачают. У меня минимум 2 сотрудника съебали к желтым, оба по итогу очень довольны.
tofu - нет не слышал. Вообще, срать на Скале ФП-либами - такое себе. Но раз они высрали, это уже говорит об уровне их культуры кодинга. И говорит о том, что культура есть.
И да, cats - говно (про tofu не знаю, возможно такое же говно, просто сбоку). Zio - говно (потому что сама Scala - говно, но лучше zio на этом говне уже не придумать). ФП на Скале - не нужно.
Но если ты молодой специалист, который угорел по ФП, то желтые - не говно. Причем оба желтых. И мне нет смысла их рекламировать, я сам из зелёных, как уже раньше писал.
> Чем тебе предстоит заниматься:
> изучением решения на Scala и переписыванием его на Java
Ну вот, ещё одна фигня-для-засирания-интернетов-рекламой переходит на надёжный и проверенный стек вместо хипстерского ФП
Просто ты не умеешь использовать CompletableFuture, править баги многопоточности и делать new Thread {}!
Не слушайте этого - >>1915290
Вкатывайтесь в Скэйлу. Вам все условия для этого обеспечили - https://fintech.tinkoff.ru/study/fintech/scala/
Даже если не найдете работу, то вырастите как инженер и на крайняк сможете колесить по миру и вызволять гарнiх дiвчiн из лап мужей тиранов - https://twitter.com/Oleksandra_A/status/1351287068681515012
> cats - говно
> Zio - говно
> сама Scala - говно
> ФП на Скале - не нужно.
> я сам из зелёных
Мы заметили.
Отхватил жирный контракт на запил BPM движка на Скэйле, между прочим - https://twitter.com/jdegoes/status/1349369761570947073
Будет вам функциональная камунда, лол.
>Q: Хочу угорать по функциональщине и теории категорий
>A: Посмотри на Хаскелль
как такое можно пейсать? это диверсия же.
Потому что Haskell - это флагман мира ФП.
Pure FP, без поддержки оопе, мутабельности, интеропа с двявой и всей связанной с этим тяжёлым наследием и наркоманией, так что всё честно.
> Haskell - это флагман
конечно. только почему-то весь энтерпрайз юзает Скалу.
Х-ль был нормальным языком в 98-м, но с тех пор заметно устарел.
А Скала шагает в ногу со временем, Дотти будет (уже есть) на порядок круче вашего Х-ля.
> Дотти будет (уже есть) на порядок круче вашего Х-ля
Когерентных тайпклассов - НЕТ
Вывода констрейнтов для GADT - НЕТ
Тайп тегов - НЕТ
Зато есть питоносинтаксис им. Одерски и сотни багов
Нормальной IDE, которая не краснит код за 12 лет - НЕТ
Жим штанги, поедание хинкалей и покуривание кальяна - ДА
Зачем вы обсуждаете Х-ль? Его нет.
я не в зеленой банке, лол.
штангу свою обычно выпячивал один (не будем упоминать всуе) Х-лист.
Ой, будто бы конкурентность - это такая неебаться проблема и будто бы вещи типа Zio её ой как хорошо решают. Про многопоточность я вообще молчу (ты, кстати, перепутал многопоточность с конкурентностью).
>>1917325
Неоднозначно. Сам я старый и больной, но, думаю, где-то 300 рублей в месяц можно поднимать, если ты не совсем скатился в позапрошлом году больше 350 было с учетом бонусов, а сейчас вообще подозреваю, что меня уволят нахуй.
Те, кто помоложе и поживее - больше поднимают. Фокус сейчас на датасаентистов. Хотя какие-нибудь джавакодеры критических сервисов поднимают не меньше датасаентистов, но там работа менее интересная и со своей спецификой.
Думаю, максимум - это должность исполнительного директора и 500 р. Есть ребята, которые и в 25 лет это делают. Но я с ними общался, они реально умные и заряженные, я прекрасно понимаю, почему они могут 500 рублей зарабатывать, а я столько не смогу.
Нет, ну серьёзно, с чем ты из этого не согласен? Я вообще не представляю, какие профиты может дать cats. Он просто неюзабелен в текущих реалиях. Zio - юзабелен. Но с кучей оговорок. А профитов, опять же, не много. Почему не надо писать на Scala в FP-стиле я уже тут тысячу раз разбирал, не хочу делать это еще раз. Просто изучи нормальный FP-язык и посмотри, чем Scala от него отличается.
>Дегоус давно зашкварен
Кста, что за драма вокруг Дегоуса? Он у себя в твиттере пишет, что он весь дохуя толерантный, не токсичный и геев уважает. Я особо не следил, но подозреваю, что драмы в Scala-сообществе, это как драмы в европейских странах - люди просто с жиру бесятся и за неимением реальных проблем придумывают интрижки из нихуя.
> Я вообще не представляю, какие профиты может дать cats
Рискую начать срач, но тем не менее. Как ты будешь решать такую задачу:
Твоё приложение это некий HTTP-сервер. Ему нужно ходить к другим сервисам по HTTP и например к базе данных. Если клиент твоего сервиса отвалился, нужно канцелить все подзапросы к базе/другим сервисам, корректно закрывая соединения и другие ресурсы, а если ошибка прилетела от апстрима, ретраить её на другой инстанс.
В джава-мире это решается примерно никак. Максимум какой-нибудь fault-tolerance от нетфликсовых либ прикрутят, но чаще просто хуй забьют. Или поставят сервис-меш и будут надеятся что ресурсы внутри приложения не будут течь.
На акке ты охуеешь писать стейт-машины для этого добра.
На фьючерах не пробросишь кэнсел.
В cats-effect + fs2 это делается сравнительно легко.
>почему-то весь энтерпрайз юзает Скалу
Потому что ФП - это не энтерпрайз. И Скалы там с гулькин хуй, кстати.
>Х-ль был нормальным языком в 98-м
Нет. В 98-м он был абсолютно неюзабельным языком. В 98-м на нём нельзя было написать что-то практически применимое в принципе. Писать на Haskell в 98-м кстати, писать на стандарте Haskell-98 на современном стеке и писать на Haskell в 98-м году - это совершенно разные вещи, это как на Агде или Идрисе сейчас что-то писать. Ну язык вроде есть, но, с другой стороны, больше нихуя нет.
Более-менее нормальный GHC - это где-то начиная с 8-й версии. После появления Stack, либ Сноймана и прочей инфраструктуры. Вообще, хороший Haskell - это только самый новый Haskell. Старую версию ты даже устанавливать заебёшся, не говоря уж про то, чтобы что-нибудь с ней сделать.
>А Скала шагает в ногу со временем
Не. Скала - cripple by design. Дотти уже 100 лет пилят и никак допилить не могут. И, скорее всего, Дотти так и не станет продолжением Скалы. Будет альтернативный язык, вроде Питон-2, Питон-3.
Как раз Хаскель, в отличие от Скалы, развивается гармонично, потому что там за дизайном следят. Чем Дотти может быть лучше Хаскеля, я вообще не знаю. Тем, что там есть интеграция с JVM? Но JVM - это как раз против принципов ФП. Т.е. в языке пытаются решить изначально неразрешимую задачу. Поэтому всё будет на костылях и странных дизайнерских решениях, продиктованных существующей платформой, а не тем, как надо делать язык правильно.
>В cats-effect + fs2 это делается сравнительно легко.
Согласен. Но это очень частная задача, под которую effect и fs2 заточены.
>На фьючерах не пробросишь кэнсел.
Ну я же говорю, что это частная задача. В Джаве отменяемые фьючерсы сделали. Ждём, пока интегрируют со Scala-future (если интергируют вообще). Но это - марахайка. Кстати, effect и Zio - такие же марахайки, которые ничего магического не делают. Просто умеют останавливать интерпретатор между отедльными эффектами. И асинхронные исключения в Haskell - это тоже марахайки. Они тоже ничего магического не делают, у них просто есть шанс прервать исполнение программы не между биндингами, а при обращении к мусоросборнику. Но если ты пишешь высокопроизводительное приложение на Haskell, ты же не хочешь, чтобы оно теребило мусоросборник, ты пишешь его так, чтобы всё оптимизировалось в минимальный цикл. И там никакой кэнсел работать не будет.
Т.е. все эти штуки тебе предлагают просто красивую семантику, но за этой семантикой стоит контретная реализация. И в реальных высокопроизводительных приложениях тебе надо очень хорошо понимать, как именно эта реализация работает и очень грамотно её использовать. Это, в принципе, не сильно отличается от того, как бы ты это делал на Джаве, просто аккуратно чекая флаги в цикле и прерывая вейты.
Т.е. да, есть красивая обёртка. Но если кодить по хардкору, там внутри она не многое даёт, там разбираться надо. Поэтому самые высокопроизводительные приложения написаны, внезапно, не на Скале и не Хаскеле, а на тупой Джаве и С++, где всем этим говном страдают вручную. Потому что им в любом случае или вручную страдать, или это просто такой же замуд, как в нетфликс, который так же может не сработать, если ты всё вручную не проверил.
>В 98-м он был абсолютно неюзабельным языком. Ну язык вроде есть, но, с другой стороны, больше нихуя нет.
Вы путаете язык и тулчейн.
Да, Майкрософт инвестировала в развитие тулчейна в районе 2000-2010, когда Х-ль как язык собственно стагнировал, но зато его форсили наёмные маркетологи Майкрософта, и сформировали в результате субкультуру хипстеров-фрикциональщиков, которые сами не знают, чем хорош их Х-ль, а просто самоидентифицируются по принципу "мы не такие как все". типа готы от программирования, ага.
>Как раз Хаскель, в отличие от Скалы, развивается гармонично, потому что там за дизайном следят. Чем Дотти может быть лучше Хаскеля, я вообще не знаю.
Вот не знаете, а говорите, замечательно.
Проблема Х-ля в том, что в него напихали овер дохуа расширений системы типов, которые в совокупности не консистентны. В результате в скомпилированном коде местами невозможно обойтись без динамической проверки типа. Соответственно, есть примеры кода на Х-ле, который тайпчекает статически, но выдает ошибку типов в рантайме. Если вы об этом не осведомлены, то сожалею. И чем это отличается от JS, например? Так что современный Х-ль не лучше JS, а его фанбои - не лучше JS-макак, даже если они привыкли возносить молитвы статической типизации. Х-ль 98 был торт, а нынешний уже нет.
Теперь посмотрите на Дотти. В ней специально урезали ситему типов, чтобы достичь гарантированной консистентности. Она типобезопасна не хуже System F, она никогда не выдаст ошибку типов в рантайме.
Получается, что Скала за это время наверстала упущенное, зато Х-ль деградировал.
> есть примеры кода на Х-ле, который тайпчекает статически, но выдает ошибку типов в рантайме
Пруф или пиздабол.
И unsafeCoerce и другие unsafeSomething не считаются
>И unsafeCoerce и другие unsafeSomething не считаются
эта новость стара, как мир, и про нее не слышали, наверное, только сами Х-листы.
https://migmit.dreamwidth.org/39346.html
но проблема не только отдельном в примере такого кода.
вопрос глобальный - как может возникнуть рантайм ошибка типов, если язык со статической типизацией? а он не совсем со статической, лол.
проблема в том, что система типов на поверхности языка отличается от системы типов внутри (Core). как следствие, статические гарантии высокого уровня отличаются от реальных гарантий скомпилированного кода. как следствие, компилятор в некоторых случаях ВЫНУЖДЕН вставлять динамическую проверку типа там, где гарантий Core не хватает. в результате код выполняется частично как динамически типизированный. это будет с любым кодом, содержащим некоторые сочетания расширений. а поскольку анон в своем коде будет использовать 100500 библиотек, которые используют 100500 расширений, то результат всегда будет такой.
с JVM точно такие же проблемы, если что.
но Дотти хотя бы не допускает глюков на верхнем уровне языка.
Твоей ссылке 8 лет, с тех пор появились type roles и этой проблемы уже нет.
То есть ты вообще не в курсе куда и как развивался Хаскелль за последние годы, но кукарекнуть про несовместимые расширений и райнтайм ошибки типов надо, да.
Иди нахуй с таким уровнем аргументов обмудок тупой
Хочу вкатиться в скалу и работу. Чё посоветуете?(кроме самовыпила)
Бочку.
>рантаймы для JVM и JS позволяют строить высокопроизводительные системы с удобным доступом к огромной экосистеме библиотек.
>Q: Какие либы НЕ брать?
>A: play, izumi, tofu, джавовые фреймворки
Как вам живётся с такой шизофренией?
В котлине вон тоже двоемыслие, рекламируют полную совместимость с экосистемой джавы и при этом пилят свои котлиновские велосипеды. Болезнь всех убийц джавы, как-никак.
Библиотеки берите, фреймворки не берите.
>Т.е. все эти штуки тебе предлагают просто красивую семантику
Не просто. Эта семантика дает универсальные протестированные блоки, который в каждой твоей программе будут работать одинаково. Так же как ты не пишешь свои коллекции и используешь не циклы для операций над ними, а высокоуровневые комбинаторы, теперь ты можешь работать с асинхронными вычислениями. И это очень сильно отличается от
>от того, как бы ты это делал на Джаве
потому что аккуратно чекать флаги в цикле и прерывать вейты очень непросто. Люди все время off-by-one ошибки допускают, а ты про wait говоришь.
Разбираться что дает cancel в разных абстракциях нужно, но это часть понимания семантики. Разобраться с особенностями реализации нужно чтобы понимать какие проблемы с производительностью могут быть или как обойти уже существующие.
>кодить по хардкору
>самые высокопроизводительные приложения
High-load это спектр. На биржах, где тебе нужно вкладываться в миллисекунды, люди кодят по хардкору и выжимают все из железа. В каком-нибудь сервисе на 100к запросов в секунду тебе уже нужен асинхронный IO, но еще можно позволить себе променять быстродействие на четкую семантику библиотек.
Потому что экосистема джавы - говно и юзать её в скале, кложе и т.д. - неидеоматично.
https://techcrunch.com/2021/01/28/fintech-darling-nubank-raises-blockbuster-400m-series-g-at-25b-valuation/
Бразильский клон Тинькофф-банка гребет баксы самосвалами и зогхватывает мир. А в чем отличие? Да только в том, что Тинькофф-бэкенд на сабже, а нюбанк - на кложе+датомик.
Передайте этот пост Олегу, это очень важно.
> что люди в этом фп, решают вообще не те проблемы, которые решать важно
Есть разные виды проблем, и все они важные, и все так или иначе решаются во всех языках.
1) Проблемы программирования (сюда же входят проблемы порожденные языком или парадигмой). Сюда относятся библиотеки-улучшения стандартной библиотки (думаю есть в любом языке, в джаве это например apache-commons или guava, в скале - cats/zio), разработка библитек для уменьшения боилерплейта (lombok в джаве, shapeless в скале), а также разработка паттернов использования языка (в ООП это практически неформализуемо в виде библиотке, поэтому эти подходы изложены в GoF и других книгах по OOD, в ФП их частично можно выразить тайпклассами). Поскольку скала с ФП позволяет создавать намного более высокоуровневые абстракции, в ней есть больше библиотек для этих проблем, и это хорошо потому что в других языках эти проблемы есть, но их каждый раз нужно решать заново.
2) Инфраструктурные проблемы - хадупы, брокеры и все остальное. Это прямо пропорционально возрасту языка и количеству программистов на нем. Еще нужны библиотеки для взаимодействия со все этим добром, асинхронщины и сериализации и всего остального (вот они в скале есть). Кроме того, скале зачастую не нужны свои инфраструктурные библиотеки - netty работает отлично, хадуповские классы используют из спарка и т.д. Можно сразу использовать язык для
3) проблем бизнеса. Тут-то для написания поддерживаемого кода тебе и приходят на помощь наработки из п. 1)
Пока скалисты рассуждают как им читать .properties файлы и лифтить монады в очелло, джависты уже запускают очередной микросервис и рубят капусту.
Ты не сравнивай местечковый банк, который отмывает грязные деньги в странах Латинской Америки, с детищем Олега - проект тревел-инвестиции.
Пока джависты неделями выжигают глаза xml-ем и рассуждают как им добавить 99й слой абстракции с помощью AbstractSingletonProxyFactoryBean, пхпшники и гошники уже запускают очередной микросервис и рубят капусту.
> 3) проблем бизнеса. Тут-то для написания поддерживаемого кода тебе и приходят на помощь наработки из п. 1)
Тем не менее туча бизнесов как работали на императивных языках так и работают, а функциональные языки им только проблемы создают с их способностью писать высокоуровневые абстракции и невозможностью из-за этого масштабировать команду и заменять в ней людей. Само ФП создает не только проблемы для программистов, которые они решают абстракциями, так и бизнесам, которые пытаются людей обучать ему, если уж попали в ФП. А обучить человека хреначить на скале\хаскеле дело хлопотное и у него должна быть изначально предрасположенность к этому, иначе его просто не убедить, что ФП - это полезно.
Ну и вообще за 20 лет можно было бы кроме библиотек с тайпклассами хотяб ide сделать, которая не краснит. Про билд тул у меня такое же впечатление, но с ним я скорее всего не разобрался пока нормально.Тоже дополнительные проблемы.
>как работали на императивных языках так и работают
Это так себе аргумент. Если что-то работает это не повод не совершенствовать подходы.
>функциональные языки им только проблемы создают с их способностью писать высокоуровневые абстракции
Обычно в бизнес-коде тебе не нужно писать свои абстракции. Ты просто используешь то что тебе дают библиотеки. Если тебе понадобилось накручивать что-то свое сложнее функций типов данных, то или у тебя действительно сложная задача, или ты занимаешься оверинжинирингом. Последнее регулярно происходит и в ОО-языках (а может и чаще, потому что в них свои абстракции нужны всегда из-за невыразительных библотек), но там как-то уже научились в этом обвинять людей, а не инструменты.
>невозможностью из-за этого масштабировать команду и заменять в ней людей
Проблема масштабирования существует, но думаю она связана не с абстракциями, а именно с тем что есть масса людей уже обученых процедурщине (я видел буквально пару людей, умеющих в ООП).
>у него должна быть изначально предрасположенность к этому
Не знаю что за предрасположенность, но действительно для того чтобы начать разбираться в ФП и его плюсах нужно любопытство какое-то, чтоли. Или нужно просто подольше пожрать говна со стандартными подходами и в какой-то момент увидеть что можно-то по-другому.
> Про билд тул у меня такое же впечатление
Да мавен используй и не еби мозг. Можешь еще mill попробовать, он как раз из-за усталости от sbt сделан.
вы на дотти пишете без иде?
Вот думаю что пора отстраняться от JS и попробовать какой-то язык посерьезнее, с большим упором на ФП и с возможностью переката поэтому Хаскель не хочется рассматривать чисто из практической точки зрения. Стоит ли в Скалку вкатываться? Подводные камни? да, я хочу услышать позитивные ответы в Скала треде от скалистов
Другой вариант, который мне кажется реалистичным, это Эликсир.
Стаж 4 года, работаю на фронте и есть опыт работы на беке Руби.
Анон, ты как и многие опять поддаешься на провокации местных борщехлебов. ФП - это не тайпклассы и ебля монатками в очко. ФП - это тупо референциально транспарентные функции и иммутабельные данные. Когда у тебя у композитных объектов такая же семантика (эквивалентность, изменямость), как например у чисел. х = 2, потом х = 3. Икс изменился, а число 2 как было числом 2, так и осталось. И теперь генерализируй эту семантику на бизнес-объекты. Все, в этом и заключается ФП. Это уже лет 10 как common wisdom, что с такой семантикой в общем случае работать проще. Все новые языки и технологии(!) ориентируются на нее по дефолту. Вот и все, это и есть ФП. В расте фп, в джаве фп. Везде фп. Кроме тех мест, где оно дает большой оверхед по памяти\производительности, т.е. там, где надо ебаться в байтики. Но иногда и там можно.
А то, что местные фанатики тебе рассказывают - это на 20% полезные, но не критичные штуки (дело вкуса), а на 80% - маркетинговый буллшит и бойлерплейт, потому что тут так принято.
Добра, анон!
>референциально транспарентные функции
А как ты будешь соблюдать чистоту в языке с сайд эффектами без монад, или ещё чего ядрёнее типа афинных/линейных типов, что именно должно тебе поможет позволить изолировать чистую часть программы от сайдффектной на уровне типов, если не это?
пора бы уже начать пиздить за использование лингвистического термина reference transparency применимо к программированию, где он полностью теряет смысл
>А как
Просто и без задней мысли, я же не шизоид с ОКР.
>reference transparency применимо к программированию, где он полностью теряет смысл
Бред. Лень объяснять.
В любом случае, я свой пост адресовал конкретному анону, а не местным господам борщехлебам. Не вижу смысла устраивать очередной унылый одинаковый срач, кому-то нравится арбуз, кому-то - свиной хрящ. Я просто довел до анона информацию, что фп != борщи.
>Просто и без задней мысли, я же не шизоид с ОКР.
Ясно, то есть никак.
>Бред. Лень объяснять.
https://stackoverflow.com/a/9859966
>Я просто довел до анона информацию, что фп != борщи.
Это называется дезинформация.
Если ФП - это ФВП, замыкания + парочка стандартных комбинаторов, то 95% менйстрим программирования это ФП, даже пхп.
Но если ты уж начал говорить про чистоту, то нормальная система типов, позволяющая сэйвово разделить чистую программу и эффекты есть лишь кое-где и является тем, что ты определяешь как "борщи".
>>1926619
Челик начинает вкатываться в ФП, видит некоторые полезные для себя вещи и некоторые непонятные.
Но вместо того чтобы продолжить разбираться в мат.части, он решает для себя что есть "ФП" а есть ненужные "борщи", ведь проще назвать кого-то борщехлебом и смишно пошутить про "монады в очелло", чем пытаться найти профиты в "борщах".
>>1925652
>>1926619
Профиты "борщей" я понимаю, но всё-таки насколько в целом парадигма сильнее императивного подхода я понимаю только в теории. Планирую пописать какой-нибудь велосипед на скале/хаскеле, чтобы все-таки иметь какой-то опыт к чему-то приближенному к реальной жизни, пока я только книжки читал, да курсы проходил, там упражнения конечно показывают полезность ФП, но все это выглядит как что-то вырванное, отдельное.
Всем спасибо за ответы.
Лол, Антон ДэГузло пытается оправдать свои попытки залифтить монаду себе в очелло!
Не знаю, что в словах "мне неинтересно в очередной раз иметь тот же самый срач с юным адептом борщей" тебе непонятно.
>>1926645
Вообще мимо.
>>1926701
Для души бери х-ль и кложу\эликсир, чтобы ощутить все грани. Скалка объективно неактуальна, а чисто для изучения подхода в ней слишком много семантического шума.
> мне неинтересно! слышите, вообще не интересно!
> скала неактуальна! мне это неинтересно но я пришел вам написать что она неактуальна!
>Не заходил в тред полгода
>Местная истеричка все еще детектит меня в каждом втором посте
Смешно.
Антон Де Гузло
Так вот кто в овощной кидает!
в sbt у меня два таргета:
lazy val lib = (project in file("."))
lazy val app = (project in file("app"))
.aggregate(lib)
.dependsOn(lib)
app зависит от lib
в app я при помощи runtime рефлексии хочу создавать классы из lib.
для этого думаю заюзать ClassFinder
import org.clapper.classutil.ClassFinder
val finder = ClassFinder()
finder.getClasses()
если выполнить данный код в lib, то все ок, я вижу классы определенные в lib
если выполнить этот код в app, то я не вижу классы из lib.
Что в sbt поправить, чтобы классы из lib так же были видны?
>в app я при помощи runtime рефлексии хочу создавать классы из lib.
1) Не страдай хуйней (рефлексией), а лучше опиши что именно ты хочешь сделать с точки зрения бизнес-логики. Скорее всего есть вменяемое решение без рефлексии или на крайняк либа которая уже это делает за тебя.
2) Словами описывать такие проблемы бесполезно. Чтобы хотя бы надеяться на помощь, кидай проект на гитхабе.
>лучше опиши что именно ты хочешь сделать с точки зрения бизнес-логики.
Вот тут чел описывает ровно ту проблему, которую я пытаюсь решить - https://stackoverflow.com/questions/27756064/java-register-available-classes-to-list-automatically
У меня конечно не монстры с пауками, но суть та же. Хочется иметь возможность просто добавлять новые классы, а приложение, которое бы эти классы использовало - чтобы само узнавало об их сущестовании ( например по специальным аннтоациям или еще как, не суть важно )
>2) Словами описывать такие проблемы бесполезно. Чтобы хотя бы надеяться на помощь, кидай проект на гитхабе.
Да, видимо придется чет такое сделать
Никогда оверинжиниринга в джаве не видел? Для насмешки над ним даже enterprise fizz buzz придумали.
Поздравляю, скаланы! ДелиМобиль наконец-то съехал со Скэйли и все переписал на Kotlin + Arrow. Теперь компания не в опасности!
>Arrow
Коты, только хуевей. В Kotlin без эмуляции тайпклассов и нормального паттерн-матчинга НЕ НУЖНО.
Чел, людям проект нужно запустить и деньги зарабатывать, а не в котов пердолится и думать каким лучше залифтить монаду себе в очелло как Антон Де Гузло
Чел, прекращай себя закапывать...
Scala with Cats.
Джавист? Боже упаси. Я на плюсах пишу.
А так я скорее в функциональщину сейчас вкатываюсь, вкатился бы лучше в хачкель ( или хотя б F# ), но вакансий нет, только борщ, приходится вот в скалу
Вакансии на HH.ru, конечно же. Когда осознаешь, что без многолетнего опыта вкатиться в скэйлу не выйдет, то переходи в котлин или оставайся в джаве - там хотя бы деньги платят. В Скейле же IDE код краснит и очень странные кадры работают
Попустись! Все проклинают Сугака из-за того, что IDEA краснит Скала-код! Краснит даже на простых кейсах. А еще все тормозит и отжирает просто неприличное количество памяти!
>без многолетнего опыта вкатиться в скэйлу не выйдет
Вот это кстати чушь, я вкатился с опытом скалы 1 мес. Контора была хорошая, но не сильно притязательна, потому что скалистов нихуя нет в природе.
Чел, ты только не ври окружающим, окда? Даже помоечный динс воротит нос от перекатщиков и требует коммерческий опыт от 2 лет на скэйле. Что уж говорить о тиньке или райфе, которые такой анал-карнавал устраивают на собеседовании, что закачаешься. Они также требуют коммерческий опыт от года на скэйле. И да - пердоленье спарка не считается за скэйла опыт.
Гранин? Это ты?! Ты же контрактник на Хаскелле, который никогда и нигде не работал и пописываешь книжечки про хэйскэлл
Чел, данный паблик как и продджвм держат гуга и димсоул - контрактеры за 300кк в наносекунду. Им незачем нагонять ботов.
Интересуюсь Скалой и ФПхой вообще. Я яростно не люблю ООП классическое, программирую на Go. До этого писал на крестах.
С джавой не знаком вообще, знаю что рефлексия есть. На спринге в шкале один диплом делал.
Вопрос, можно ли вкатываться в скалу не залезая в этот явовый стек вообще?
Да, можно. Это в котлин без джавы не вкатишься. А в скэйле своего добра полно и можно обойтись без знания джавы. Только учти, что IDEA (единственная IDE, которая худо-бедно работает со скэйла) нещадно краснит код и отжирает просто гигабайты памяти и загружает твой процессор до отсечки.
Потому что не взяли туда анона, очевидно
Это норм подход - https://ideone.com/Fu1mXc ?
Где вообще почитать про дизайн и best practices при создании пользовательских библиотек в scala ?
Чел, неси деньги и вникай как проектировать действительно качественный код на скэйла
Верно ли я понимаю, что Cats для либералопедерастов-SJWшников, а ZIO для правильных пацанов?
Найс-найс. Сколько теперь ждать, чтобы идея перестала краснить? Еще 10 лет? Сугаку работы привалило, лол. Может сможет себе квартирку в Хамовниках взять.
1) в scala for comprehension всегда транслируется в вызовы map, flatMap, и withFilter, правильно?
2) map ( и flatMap ) на выходе создают новую коллекцию. Если новая коллекция не нужна, то предполагается вызывать map либо у iterator либо у view, правильно?
Соответственно вопрос:
Следует ли из пункта 1) и 2), что в for comprehensions стоит использовать iterator или view для того, чтобы избежать overhead'а от создания ненужных новых коллекций при вызовах map и flatMap
т.е. что-то типа
for{
x <- xs.iterator
y <- ys.iterator
} yield x + y
Или это все не нужно и никакого оверхеда не будет?
Если в двух словах: надо среди натуральный чисел найти наименьшее число удовлетворяющее некоторому условию. Хоть каждое число проверяется относительно быстро, чисел перебирать приходится много ( решением является число порядка миллиона ), поэтому хочется это все распараллелить.
Я сделал реализацию в которой берется некоторый chunk чисел ( скажем по 100 тысяч ), этот chunk делится на меньшие диапазоны, количество которых равно числу ядер и каждый диапазон заворачивается и вычисляется в Future. Далее все аггрегируется через Future.foldLeft и если не находится ни одного результата, берем следующий chunk и т.д.
Получилось вроде неплохо, практически линейный рост производительности по числу ядер. Но стало интересно может как-то подекларативнее можно все это сделать? Через parallel collection какой-нибудь или еще как.
Добавлю, что gradle используется во всем jvm-коммьюнити, поэтому можно переиспользовать опыт огромного комьюнити. Да, я люблю typed functional programming и считаю что это самый правильный способ разработки, но писать блид скрипты на груви или котлине - это не так уж страшно, все-таки билд скрипт это не основной код приложения.
Основной плюс sbt в том что он сделан специально для скалы и поэтому из коробки поддерживает кросс-компиляцию, и в меньшей сетепени в том что это де-факто стандарт опенсорса на скале. По поводу иероглифов - в последних версиях sbt с этим стало намного лучше.
А вообще последние два года использую maven со скалой и наверное предпочел бы его любой билд-туле основаной на тьюринг-полном языке, будь то sbt, gradle или lieningen.
я бы ожидал линейную сложность у сортированных коллекции и n log n у несортированных. А как в scala? А ХУЙ ЗНАЕТ. Может там вообще квардратичная? И как вообще вот хоть что-то писать с использованием алогоритмов стандартных коллекций? Все что здесь не перечислено - https://docs.scala-lang.org/overviews/collections/performance-characteristics.html использовать на свой страх и риск?
Проблемы, которые пришли мне в голову за 30 секунд размышлений:
1) Как только ты вносишь эту информацию в доку, это становится частью API, так что менять реализацию становится сложнее.
2) Это банально долго, коллекций и операций много, а тебе нужно описать их декартово произведение.
3) Операции типа intersect принимают другую коллекцию на вход, а значит сложность алгоритмам может зависть от ее реализации.
>А как в scala? А ХУЙ ЗНАЕТ
Исходники находятся в одном клике от тебя.
>как вообще вот хоть что-то писать с использованием алогоритмов стандартных коллекций?
1) Не заморачиваться - коллекции в 90% случаев настолько мелкие, что не важно что там внутри, а в 9% работают так как ожидается.
2) В последнем 1% - делать бенчмарки. И их нужно делать даже если в доке написаны все временные сложности - константы, взаимодействие с кешем и GC, а также баги реализации никто не отменял.
>делать бенчмарки
Лол, какие бенчмарки, чел? Кабан наседает и требует быстрее закрывать эпики. А ты там про какие-то бенчмарки рассказываешь
Ну не делай, лол, чел. Только тогда не нужно давать никаких оценок производительности. Если пользователи начнут жаловаться на тормоза - кабан откроет эпик, а ты его закроешь. Не начнут - поздравляю, ты попал в 99% задач, для которых не нужны бенчмарки.
Ну так зависит от объемов данных и нагрузки в проде.
Если там данных кот наплакал, то просто хуеришь максимально простую наивную реализацию, чтоб она была максимально читаема и очевидна и пусть там будет хоть 1000% неоптимизированнонго оверхеда.
Дальше у вас очевидно есть метрики, мониторинг, алерты и когда станет очевидно что нужна оптимизация - заводится отдельный тикет и в рамках него уже сидишь замеряешь и выбираешь ОК вариант.
Если данных много, то нужно объяснить, что можно сделать быстро и будет тормозить, а можно сделать хитро чтоб не тормозило, но нужно время на бенчи, тестирование на соотносимым с продом по объёму датасате и тд.
Ох уж этот дивный мир жава энтерпрайза.
>>1972124
Ага, а потом как начали лить трафик (даже тупо запостив какой нибудь высер на хабре), и получается классическая ситуация:
а) Если сервер выделенный — то он падает нахуй;
б) Если облако, то бизнес теряет 5-10 твоих зарплат пока кто нибудь не спохватится, и ты идёшь нахуй, лол.
я мидл плюсовик, есть маза на работе перейти в команду скалолазов
полный стек хз, но там какой-то фрейм на базе акки, вроде лагом, и катс
Я там потом не охуею работу искать через годик после такого перехода?
Нахуя ты токсишь, душное пидрило?
Очевидно, если резкое повышение нагрузки/объёмов возможно и имеет шансы больше определенного процента - то переходим к пунктику два (бенчи и тестирование). Но это не тебе, программистишке ебаной, решать, твоя задача уведомить ПМа, а решение, исходя из рисков будет принимать менеджер. Потому что страдать маняоптимизациями (тратить время и ухудшать код) некоторые долбоебы просто любят, как и делать «заделы на будущее», а причину придумать они всегда сумеют, даже если ее вероятность меньше долей процента и вся понаписанная хуита никогда не понадобится.
Осло, кекнул с хуйни про хабр, чем там нагрузка повысится, открытием индекс пейджа и регистрациями? Ну так маняоптимизации мерджа коллекций где-то в доменном коде - это последнее что тебе поможет.
Смысл переходить есть, как минимум чтобы попробовать совершенно другой подход к разработке (ГЦ + ФП vs ручное управление памятью + ИП). Поскольку ты мидл, то скорее всего в возрасте когда можно и нужно пробовать как можно больше разных подходов и областей, чтобы потом определиться со специализацией, ну и для расширения кругозора. Я сам перешел на Скалу в подобных условиях лет 7 назад и ни разу не пожалел.
По поводу работы - если ты толковый, то и на плюсы вернуться сможешь, и на скале найти что-то, да и на джаву будет намного проще перейти, если захочешь.
Единственное чего не советую - прыгать каждый год с проекта на проект. Обычно негативные последствия решений проявляются не сразу, то есть долгий опыт работы над одним проектом ценнее короткого. Больше 3-4-х лет работать тоже не стоит - взгляд замыливается.
>>1972169
а) Приделывайте ограничение запросов в том или ином виде.
б) Обычно кластер масштабируется до определенного предела.
Вообще, чтобы не ходить нахуй, советую почитать - https://www.amazon.com/Release-Design-Deploy-Production-Ready-Software/dp/1680502395
Ну, если тебе больше 30 и ты еще мидл, то наверное имеет смысл углубляться в то чем ты сейчас занимаешься, а не размениваться на скалу.
я вайтишник, два года назад вкатился вообще (да, в плюсы, лол, это отдельная история)
сейчас ищу куда двигаться дальше, охота пошляться по разным проектам, нахапать опыта и не поесть говна на галерах типа епама
скала интересна тем, что на ней как и на жаве ща пилят бекенд и прочие микросервисы для веба, и с этим опытом можно уже катиться дальше будет
Так а тебе не проще сорцы прочитать и по сорцам понять какая сложность? По идее все что нужно описано в книге Криса Окасаки Pure Functional Data Structures. Если интересуют классические мутабельные структуры данных, то очевидный Кормэн.
Рано, ты еще должен был попробовать пхп и джаваскрипт
tl;dr:
пик слева - кодовая база здорового взрослого человека
пик справа - кодовая база пердолемакаки, где каждые полгода половина всего кода выкидывается и переписывается заново (попутно ломая все на своем пути)
Логичное. Также логично выучить питон и PySpark, без скалы и джавы. Правда рано или поздно тебе придется разбираться с тем как устроен спарк и JVM, а значит на каком-то уровне скалу нужно будет знать, но это не сложно - спарк написан достаточно понятно даже для не-скалистов. Или не придется, но тогда у тебя будет очень низкий потолок по ЗП, если не занимаешься data science конечно.
>его свобода синтаксиса позволяет делать вещи, которые в других языках считаются ошибками
Поэтому я не буду работать с PySpark даже если мне очень хорошо заплатят разве что на позиции, которая не предполагает написание кода.
>>1983611
Или слева завершенный проект, а справа - проект стартапа. Или справа scalafmt меняли несколько раз. Или справа не боятся рефакторить из-за системы типов, а слева невозможно функцию переименовать без поломанного прода. Давай ссылку уже, что ты мозги ебешь.
>>1983614
Куда перекатился? Почему странный? Ты точно мне отвечаешь?
Опция выучить питон и пайспарк "просто" - действительно есть. Просто я не хочу в питон залезать вообще. Я глянул видео Дерека про скалу (которое по Scala for the Impatient Хорстманна), мне кажется, что скала это замечательно в пределах её назначения.
Скала это возможно лучший язык в мире но это не точно если можешь позволить себе JVM, но начать лучше с питона. Сможешь намного раньше начать набираться реального опыта - и язык проще, и вакансий много (может даже больше чем на скале даже для спарка). А скалу потом выучишь.
>>1983731
Справедливости ради на питоне (и еще на жс) конкуренция такая, что я ебу алибабу. А скала няшна. Плюс питошка нихуя общего со скалой не имеет. Но да, скала не бегинерфрендли язык, не надо ее брать своим первым. Прогерской девственности лучше лишаться через жабу ящитаю. Жаба это топ. Ну или учить сишарп, если веришь что в 2021 мелкомягкие могут и умеют.
Джава тоже для новичков так себе, это довольно сложный язык и особенно экосистема. Языки для новичков: паскаль, схема, питон. С# тоже сложный, но в с ним уже идет целая экосиситема и даже IDE, так что начинать гораздо легче чем с джавой.
>>1983935
>если у тебя мозг под Скалу заточен
Да нет такого, особенно у новичков. Могу поверить что мозг затачивается под что-то с чем ты 10 лет подряд работаешь, но это скорее негативный эффект.
>мозг под Скалу заточен
Вот когда завезут IDE, которая не краснит код и не жрет гигабайты оперативки на простейших кейсах при этом отжирая процессорное время словно я там интернет архивирую, вот тогда и приходите со своей скэйлой.
Чел, ты что-нибудь сложнее хеллоу ворлда запускал на скэйле в IDE? 10 топовых инженеров ЖетБрейнс за 12 лет не смогли сделать так, чтобы IDE не краснила код.
Или ты Энтони Дэ Гузлоу и ищешь как залифтить монаду себе в очелло?
> > если у тебя мозг под Скалу заточен
> Да нет такого, особенно у новичков
Есть такое. Скала позволяет быстро писать более качественный код с меньшим количеством багов, но для этого ты должен структурно мыслить, иметь какую-то computer science базу, в общем нужен намного более основательный подход к программированию в целом. Если у человека гуманитарный склад мышления, то со скалой у него вряд ли получится, а вот на питоне тыкать говно палкой до тех пор, пока оно не заработает, с должной усидчивостью вполне можно научиться.
Вот ты много индусов скалистов видел? Я, например, видел их только в бигдате и они там говнокодят что пиздец. В функциональном программировании я индусов вообще не видел. Потому что в ФП нужно думать и нормально все делать, а не абы как.
>для этого ты должен структурно мыслить
Это нужно для любого программиста. Люди без этого навыка просто профнепригодны. Не нужно ложного элитизма, таких действительно очень мало в профессии, а те что есть банально обманывают работодателей.
>гуманитарный склад мышления
Много раз об этом рассуждал и пока остаюсь на той позиции что гуманитарного склада мышления не существует. Есть просто тупицы, которых чтобы не обидеть называют гуманитариями, обижая при этом нормальных гуманитариев, у которых со структурным мышлением все абсолютно в порядке.
>Вот ты много индусов скалистов видел
Не работал с индусами, ничего не могу сказать. Зато не раз видел лютый говнокод на скале, который затыкали палками еле-еле, но который работал. На питоне было бы ровно то же самое, а в некоторых случаях и лучше просто из-за того что, например, там акторов нет.
Я бы сказал, не претендуя на полноту и выверенность определения, что это способность выявлять причинно-следственные связи.
> Это нужно для любого программиста. Люди без этого навыка просто профнепригодны.
Неправда. Любой бизнес хотел бы, чтобы код работал хорошо и без багов, но хороших разрабов на всех не хватит. Не все компании могут себе позволить платить 250-300к. Соответственно приходится нанимать некомпетентных программистов. Да, будет работать хуево, но другого выхода нет. И хуевым программистам соответственно нужны инструменты для хуевых программистов. Питон, например.
> Зато не раз видел лютый говнокод на скале, который затыкали палками еле-еле, но который работал. На питоне было бы ровно то же самое, а в некоторых случаях и лучше просто из-за того что, например, там акторов нет.
Ну вот я про что и говорю, говнокод на питоне или на джаве мэйнтейнить легче, чем говнокод на скале. Если у человека в голове каша, но он на скале такое высрет (особенно на акке), что сам через год не поймет и 20% написанного. На питоне или джаве его код тоже будет уебищный, но понять будет намного легче чем какой-нибудь асинхронный акторный ад с кучей concurrency багов.
Я бы сказал, что это способность подобрать абстракции и составить их них систему таким образом, чтобы:
1. В описании системы не было неоднозначностей
2. Можно было математически доказать, что эта система удовлетворяет свойствам, ради которых она задумывалась
Можно сказать, что структурное мышление это что-то вроде способности формулировать и доказывать теоремы
>Неправда
Правда. Ты видимо не понимаешь разницу между профнепригодным (который банально не может найти баг в своем коде, сколько бы не старался) и обычным программистом (который иногда делает баги и пишет говнокод). Со вторыми можно делать отличный софт при грамотных техлидах и отлаженых процессах, с первыми не выйдет ничего ни при каких обстоятельствах. Благо, если их очень легко отсеять при найме.
>инструменты для хуевых программистов
Я бы не ставил так акценты. Скорее есть инструменты, которые проще использовать, вот и все. И это как раз-таки основная проблема скалы (и, на самом деле, всех мультипарадигменных языков) - даже хорошим программистам, особенно без ментора, нужно время и усилия, чтобы понять как ее использовать правильно. Еще хуже то что разные хорошие программисты приходят к разным выводам по этому вопросу.
>Ну вот я про что и говорю, говнокод на питоне или на джаве мэйнтейнить легче, чем говнокод на скале
Я в общем-то согласен, но нужно понимать что это следствие именно мультипарадигменности скалы. Отсюда два вывода:
- говнокод на хаскеле более поддерживаемый чем на питоне
- если же говнокод на скале написан в одном стиле, то я бы предпочел его говнокоду на питоне как минимум из-за системы типов - ради уверенности во время рефакторинга в неговнокод.
В любом случае, это не имеет отношения к тому заточен подо что-то мозг или нет - это характеристики самих по себе инструментов.
>>1984824
Можно и так сказать, но проблема с этим определением в том что на практике оно не нужно - никто ну, почти не доказывает математически свойства программных систем.
>Это кодовые базы реализации языков
А, ну тогда не удивительно. Хики считает кложуру более-менее завершенным проектом и вообще у них не слишком времени на ее разработку. Поэтому у них достаточно строгий подход к взаимодействию с комьюнити:
https://www.reddit.com/r/Clojure/comments/a0pjq9/rich_hickey_open_source_is_not_about_you/
У этого есть как позитивные стороны, так и негативные, например core.async стагнирует:
https://twitter.com/timbaldridge/status/1066050438338756608?lang=en
Я не знаю как именно ведется разработка скалы, но не думаю что они именно переписывают компилятор постоянно - он более-менее в состоянии поддержки, все новое в дотти делают. Хотя, опять же, не знаю сколько кода поменяли когда добавляли поддержку 8-ой джавы или коллекции переделывали.
>В функциональном программировании я индусов вообще не видел.
Шрирам Кришнамурти преподаёт ФП очень хорошо, и он индус.
https://cs.brown.edu/~sk/
>Я не знаю как именно ведется разработка скалы
Примерно так:
>хуяк-хуяк
>а, бля... ну ладно, тогда нахуй это
>хуяк-хуяк
>не думаю что они именно переписывают компилятор постоянно
>дотти
Нутыпонел.
Ну а так речь не только о компиляторе, о стдлибе тоже, коллекции те же. И не только код, но и совместимость.
Так там про стороннюю библиотеку же речь. Алсо анончик, пожалуйста копипасти с твиттера, этот говносайтик недавно окончательно заблочил кучу браузеров по желанию левой пятки, так что через альтернативные фронтенды открывать приходится.Скорей бы эту помойку заблокировали, эхх...
Он и есть
>Примерно так
Понятно, ты тоже не в курсе.
>Нутыпонел.
Не понел. Дотти - исследовательская площадка, там не то что переписывали код, а фичи выкидывали и добавляли постоянно. Одерски не считал скалу завершенным проектом, как минимум пока не сделал ее на базе DOT-calculus. Может и сейчас не считает.
>И не только код, но и совместимость.
Это абсолютно ортогональные вещи. Можно переписать весь код и сохранить совместимость, а можно изменить одну строчку и сломать ее. Я вообще не очень понимаю что ты хочешь сказать, потрудись выражать мысли яснее.
>Так там про стороннюю библиотеку же речь.
Не совсем. Это часть стандартной библиотеки. Нажми Show replies и прочитай тред до конца.
>Since that moment no major updates have been made to core.async. Where "major update" means anything that isn't a semantic bug or a dep update. The library has utterly stagnated.
Как человек, который немного использовал core.async и еще больше выслушавший критики, могу сказать что лучше бы они меняли в нем побольше кода.
>Дотти - исследовательская площадка
Как и скала в целом как бы
>Это абсолютно ортогональные вещи
На практике у переписывальщиков и на компатибилити всем похуй
>Не совсем. Это часть стандартной библиотеки.
Нет, это сторонняя библиотека, которую просто хиккимори-контора типа поддерживает
>могу сказать что лучше бы они меняли в нем побольше кода
Что конкретно? Утечки вроде пофиксили
Скалисты скрытный народец, и делится своими секретами очень неохотно.
Неужели краснит?
Обоснуйте, нахуй вообще эта ваша скалка нужна? Ну типа есть жава, есть кложа, есть хачкель, есть раст. Нахуя ещё один язык программирования без задач?
Не заебало?
>жава
Много слов, не функционально
>кложа
нет типов
>хачкель
СЛИШКОМ много математики
>раст
Ты б еще C++ написал
Акка такая плохая?
IDEA перестала краснить код и жрать гигабайты памяти на простых проектах?!
>Optional braces that supports a distraction-free, indentation sensitive style of programming
Братишка, я тебе питончика принёс!
Сколько времени потребуется лучшим инженерам из JetBrains, чтобы написать новый плагин для совершенно нового языка Скэйла 3? Напоминаю, что им не хватило 11 лет, чтобы IDEA перестала краснить код Scala 2.
>Сколько времени потребуется лучшим инженерам из JetBrains, чтобы написать новый плагин для совершенно нового языка Скэйла 3? Напоминаю, что им не хватило 11 лет, чтобы IDEA перестала краснить код Scala 2.
Очевидно, что им нахер не упёрся этот полудохлый язык с 3,5 пользователями. Они отдали плагин в попенсорс - кому красит бери да фикси. А у них Котлин 1.5, каждые полгода новый релиз Джавы, новая IDE на подходе.
Ты фруктов поел? Кальян покурил? 150 кг от груди пожал? Манты поел? В Шемкент съездил?
Какие-то ебанутые мемы у вас
Я б съездил в Шымкент, выглядит классным городом.
Ну ты сначала 150 кг пожми хотя бы на 10 раз, затем в кальянной посиди часок-другой, а потом мы на тебя посмотрим как ты осилишь хотя бы 10 кг мант.
Я столько не вылеплю
Вы там своей функциональщиной совсем себе мозги прожгли?
>VS Code обычный текстовый редактор
По мне так это наоборот хорошо.
Я даже 2/3 фич идеи (и вообще любой IDE) никогда не юзал.
Последнее время начало с этой ваше скалы аж подташнивать. Когда натыкаюсь на нее когда хочу приобщиться к всяким ебаморфизмам и прочим высоким еба материям и по каким то необъяснимым причинам автар выбирает не специально выверенный и рассчитанный под высокие еба материи хачкель.
По началу мне просто было немного некомфортно от скала-синтаксиса ну и от того что то что на хачкеле делается в x строчек на скалке занимает 3-5x строчек. Но жить можно, вон скобко дауны так вообще выписывают сотни своих скобочек и в хуй не дуют.
Но недавно я заглянул в новости из скала-мирка и основательно прихуел. Оказывается я не единственный кому скала-синтаксис был не по нутру, но даже ее создателям он не очень. Ну они и нахуевертели отступов как в пердоне и всякие end-хуемое. (Вместо того чтобы по человечески вынести тайп-хинты в отдельную строку; ну может еще через десяток лет и до этого дойдут) Я как бы и не против этих нововведений в принципе, но менять синтаксис языка когда на нем уже написаны миллионы строк - они что там совсем ебанулись что ли?
Ну а вообще, синтаксис это верхушка айсберга. Думаю что на самом деле корень проблем состоит в том что основа языка (dot) появилась так же ретроспективно. В то время как языки здорового человека брали отточенный десятилетиями лямбада-калькуль и уже двигались от него.
Что скажете в защиту этого поделия?
Никто ничего не скажет в защиту, упоротые скалисты могут только пассивно-агрессивничать, в открытом конфликте уходят в игнор; для всех остальных скала это очевидно ретроспективный говноязык уровня джаваскрипт, который используется потому что сначала был на хайпе, а потом стало поздно что-то переписывать и теперь нужны специалисты по укрощению этого говна. Такая же история у руби.
Заебали вакабу свою шатать, з-макакичи. я знаю, ты сюда заходишь
Алсо в сообщении об ошибке запятая лишняя (и в целом построение фразы хуевое) - программист текст писал, да?
В Scala 3 book полностью новые фичи и старые
https://docs.scala-lang.org/scala3/book/introduction.html
Нет, даже теория типов не нужна
У меня примерно ноль знаний, поучите меня немного?
Суть задачи:
Есть linkedList из объектов Item, например. С полями: дата выпуска, тип, цена, серийный номер.
Например, таких объектов воткнуто в список 10 (не спрашивайте почему там LinkedList, надо так)
Мне нужно схлопнуть объекты по типу. Например, объектов дано 10, а типов всего 3. Т.е. из 10 объектов сделать 3 объекта.
Принцип схлопывания:
1. дату берем самую раннюю
2. тип одинаковый( по нему и скхлопываем же)
3. цену складываем из всех схлопнутых
4. серийник берем любой (например, первый попавшийся)
До чего я дошел:
val itemsMap = list.groupBy(_.type)
Сунул в мапу, сгруппировал.
Теперь понимаю, что reduce нужно сделать чтобы values схлопнуть, но я не могу понять как мне это оформить.
Помогите, плез
С меня как обычно
<code>
case class Smth(tp: String, a: Int, price: Int, sn: String)
</code>
<code>
lst.groupBy(_.tp).mapValues(_.reduce((a,b) => Smth(a.tp, Math.min(a.a, b.a), a.price + b.price, a.sn)))
</code>
котлен убил скалу
Слышал о йоба фреймворке Акка, но она походу ещё не запилина под 3
Искать что-то с поддержкой 3 или сидеть на 2? Как вкатывальщику
Тройка будет сырой ещё долго, пока что это версия для ёрли-адоптеров, энтузиастов и просто любителей тыкать палочкой новое, обычнолюди для прода её не возьмут, надо ещё пару лет минимум чтоб дозрела.
Касательно Акки, акка - это говно, не трать на неё своё время, jvm не создана для акторов, сразу смотри Cats Effects и ZIO или Monix.
Это копия, сохраненная 31 июля 2021 года.
Скачать тред: только с превью, с превью и прикрепленными файлами.
Второй вариант может долго скачиваться. Файлы будут только в живых или недавно утонувших тредах. Подробнее
Если вам полезен архив М.Двача, пожертвуйте на оплату сервера.