LINUX.ORG.RU

Проекты с Cats и Scalaz

 ,


0

5

Привет, ЛОР.

Мне тут рассказали, что на Scala можно писать почти как на Haskell, и даже какие-то чуваки предлагают писать на Scala+Cats за деньги.

Расскажи, а есть ли годные интересные открытые проекты, использующие одну из библиотек из заголовка? Мне было бы очень интересно посмотреть код.

Спасибо.

почти как на Haskell

Врут, как бы я не относился к штангистам - код у них лаконичнее и приятнее чем scalaz\cats. Ну и то что всё это работает на jvm очень сильно бъет по рукам.
Годных проектов не скажу - большая часть того что я видел - либы для типодрочества, которые нужны только для того чтобы насаждать типодрочерство.
Знаю что часть проектов Питерского офиса одного из «телекомуникационных сервисов» работает на котах и даже вертится в продакшене.

Deleted ()
Ответ на: комментарий от Deleted

Ну вот это меня и пугает. Я вижу много историй в духе «я переписал проект на Scalaz, и мой член вырос на 30см, а количество кода сократилось в 8 раз, но сам код я вам не покажу». И если от Haskell или от чистой Scala я знаю чего ожидать, то их мутный гибрид в дикой природе я не встречал.

hateyoufeel ★★★★★ ()

За деньги часто пишут «закрытые» проекты под NDA - и таки да, cats/scalaz весьма популярны - но, увы, не всегда получается что-то читаемое, не всегда выдерживается единый стиль. По мне так код на чистой scala легче поддерживать, чем обильно обмазанный scalaz.

BattleCoder ★★★★★ ()
Ответ на: комментарий от BattleCoder

Закрытые проекты не обязательно должны быть под NDA. Я вполне ожидаю, что кто-то где-то делал хотя бы доклад с историей успеха использования Scalaz/Cats в разработке, с описанием плюсов и минусов и примерами кода. Про другие штуки я это встречаю регулярно. Про Scalaz/Cats: такое ощущение, что их пишут просто потому что могут, а пользуются ими в основном всякие странные отщепенцы, которым очень хочется монады в продакшене, но использовать Haskell запрещает комиссия по утверждению используемых языков.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

Про Scalaz/Cats: такое ощущение, что их пишут просто потому что могут, а пользуются ими в основном всякие странные отщепенцы, которым очень хочется монады в продакшене, но использовать Haskell запрещает комиссия по утверждению используемых языков.

Очень похоже на правду. И scala совсем не haskell.

dave ★★★★★ ()
Ответ на: комментарий от dave

Использовать Haskell мешает главным образом то, что он не предназначен для использования. За рубежом его используют для обучения методике функционального программирования. По-моему, сомнительный метод - обучать лучше на том, что потом может пригодиться для работы.

Scala имеет некоторую поддержку функционального программирования, но допускает и чисто процедурное программирование. Надежды энтузиастов, что он заменит Java, мне с самого начала казались преувеличенными, так как этот язык был создан без определённой цели. Теперь уже видно, что эти надежды не сбудутся. Но в отличие от Haskell, Scala используют и для работы. Недавно у Scala появился конкурент - Kotlin, ещё одна чья-то попытка создать свой Java, которая вызвала интерес у любителей оригинального. Для программирования на Scala и Kotlin желательно предварительное знание Java, так в них используются классы JDK, а с ними ознакомление обычно происходит при программировании на Java. Хотя глубокое знание Java не обязательно.

Если задача простая, а деньги нужны, то автору вопроса подумать, стоит ли тратить усилия на изучение этого. Заочно не сказать.

Partisan ★★ ()
Ответ на: комментарий от hateyoufeel

Это твой личный опыт?

Взгляд со стороны. Знаю одного товарища такого. И должен сказать, что со scalaz и cats мало знаком, но имею представление. После плотного знакомства с haskell как-то совсем не тянет.

dave ★★★★★ ()
Ответ на: комментарий от Partisan

Использовать Haskell мешает главным образом то, что он не предназначен для использования.

Твою ж мать! Я уже несколько лет пишу за бабло на хацкелле с посонами, и тут внезапно выясняется, что пользоваться им нельзя, потому что какой-то хрен с ЛОРа так сказал.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от dave

У scala свой подход к написанию идиоматического кода. Его лучше и придерживаться.

Это-то понятно.

Мой вопрос вызван желанием понять, стоит ли менять работу с Haskell в одной компании на работу со Scala+Cats в другой, и, если да, сколько плюшек сверху за это просить.

И должен сказать, что со scalaz и cats мало знаком, но имею представление. После плотного знакомства с haskell как-то совсем не тянет.

У меня примерно та же ситуация. Но если стрёмный синтаксис скалы я ещё готов стерпеть, то неясность с профитом от впихнутого через странное место FP меня слегка пугает. Так-то я и для C++ подобные библиотеки видел, взять хотя бы ту же ftl.

hateyoufeel ★★★★★ ()
Последнее исправление: hateyoufeel (всего исправлений: 1)
Ответ на: комментарий от hateyoufeel

«успехом» назвать не могу... могу назвать пару историй успеха использования каких-нибудь akka/play, но не cats/scalaz - они особо много не привносят в продукт в плане функционала - сахар только. И то не всегда однозначно на пользу - бывает и во вред.

BattleCoder ★★★★★ ()
Ответ на: комментарий от Partisan

но допускает и чисто процедурное программирование

Технически и Haskell допускает:

import Data.IORef
import Control.Monad

fib :: Int -> IO Int
fib n = do
  first <- newIORef 0
  second <- newIORef 1
  replicateM_ n $ do
    firstVal <- readIORef first
    secondVal <- readIORef second
    writeIORef second (firstVal + secondVal)
    writeIORef first secondVal
  readIORef second
monk ★★★★★ ()

стер пару параграфов, т.к. действительно под НДА. Короче, при работе с соавторами котов история неуспеха.

Как только ты начинаешь использовать типы обоих, у тебя теряется возможность использовать value classes & type erasure и памяти начинает сильно не хватать (месяц назад переписывал библиотеку сериализации - сократил в среднем на сервис использование памяти в 500 раз). В хаскеле все компилятор в машинный код генерит и такой проблемы нет.

Скорости разработки совсем не добавляет. Все примеры основаны только на positive scenarios. Попробуй через for comprehension сделать не «если произошла любая ошибка, то валим всю транзакцию», а «если запись в одну базу прошла, то во вторую с ретраем, а если после пяти повтором не получилось, откати изменения в первую» и поймешь, что проще их не использовать.

Неиспользование импорта скалази, а потом и полное его выпиливание в веб сервисе уменьшило время компиляции с 40 минут до 14, по скорости стало быстрей раза в три.

Писание стэков монадных трансформеров - головная боль в хаскеле, лучше сразу застрелиться в скале. Производительность как разработки, так и продукта проседает на порядки.

JVM != Haskell.

При этом (чтоб потом по 4.2 снова не удалили) у *меня*, равно как и у моих приятелей при поиске работы наличие *коммерческого* опыта на скале в среднем добавляет 50-80к в год к зарплате по сравнению с хорошим джавистом. В некоторых случаях, из-за популярности среди data scientists навык работы в скале в стартапе может выбить процент компании в виде опционов. Регион - западное побережье

kantoku ()
Ответ на: комментарий от hateyoufeel

Мой вопрос вызван желанием понять, стоит ли менять работу с Haskell в одной компании на работу со Scala+Cats в другой, и, если да, сколько плюшек сверху за это просить.

Пока телеграмм совсем не прикрыли, просто сравни активность групп «Scala Jobs» и «Haskell Jobs». Выводы напрашиваются сами.

А вообще, мне для души милее Haskell, но боюсь, не испортится ли мое восприятие после опыта коммерческой разработки на нем. Со scala я как-то теперь трезвее отношусь.

Ты, кстати, забыл еще про Shapeless :)

dave ★★★★★ ()
Ответ на: комментарий от dave

Пока телеграмм совсем не прикрыли, просто сравни активность групп «Scala Jobs» и «Haskell Jobs». Выводы напрашиваются сами.

У меня нет телеграмма, так что тебе придётся пояснить. По личному опыту, работу с хацкеллом найти вообще не проблема.

А вообще, мне для души милее Haskell, но боюсь, не испортится ли мое восприятие после опыта коммерческой разработки на нем.

Раньше были нюансы. После появления stack и lts стало НАМНОГО проще, и теперь на разгребание и обновление зависимостей уходит в разы меньше времени. Это камень в сторону других языков в том числе.

Ты, кстати, забыл еще про Shapeless :)

Это из другой оперы уже, разве нет?

hateyoufeel ★★★★★ ()
Ответ на: комментарий от hateyoufeel

У меня нет телеграмма, так что тебе придётся пояснить. По личному опыту, работу с хацкеллом найти вообще не проблема.

Просто мне кажется, что предложение по scala гораздо выше, чем по haskell, но могу ошибаться.

Ты, кстати, забыл еще про Shapeless :)

Это из другой оперы уже, разве нет?

Кажись из той же, где scala стараются превратить в haskell.

dave ★★★★★ ()
Ответ на: комментарий от hateyoufeel

По личному опыту, работу с хацкеллом найти вообще не проблема.

Просто на будущее. А как это делается? На том же hh как-то не густо. Допустим, на инглише человек немного гутарит и свободно читает технические книги почти без словаря.

dave ★★★★★ ()
Ответ на: комментарий от hateyoufeel

По личному опыту, работу с хацкеллом найти вообще не проблема.

Плюсую dave'а. Как это делается? Везде хотят senior'а, а мне что-нибудь для junior'а. Знаю пару компаний, которые берут на стажировки, но одна не релоцирует, а другая только летом.

anonymous ()
Ответ на: комментарий от anonymous

Потому что, честно говоря, я не встречал junior haskell dev. Практически у всех есть опыт в опенсорце как минимум.

С другой стороны, по личному опыту поиска людей, вполне можно нанять человека с хорошим опытом в других языках и дать ему месяц-два чтобы выучить хацкелл.

Насчёт вакансий, в haskell-cafe по нескольку раз в неделю падают. Большая часть в США, но в Европе тоже бывает. Многие с релокацией. Есть ещё чуваки, которые постоянно ищут на удалёнку людей. Навскидку, есть русские ребята из Serokell и есть IOHK, которые большей частью из Азии.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от dave

Допустим, на инглише человек немного гутарит и свободно читает технические книги почти без словаря.

Вот здесь будет тяжело, потому что сообщество по большей части англоязычное. В RuHaskell, конечно, есть люди, но их не так много.

hateyoufeel ★★★★★ ()
Ответ на: комментарий от dave

Если ты хочешь выучить ангельский, я очень рекомендую податься в какую-нибудь MMO-игрушку с более-менее взрослым населением. EVE Online здесь очень неплохо подходит.

hateyoufeel ★★★★★ ()

Коты в проде юзаются очень много где. В СПб знаю не меньше 4х компаний, которые в проде котов держат.

Хотя, думаю, что почти все современные скала-бэкенды затащили к себе котов в том или ином виде.

Хаскель из скалы не получается, коты - не реализация хаскеля на скале, а функциональные коллекции и реализация некоторых концепций терката.

У нас, принципе, тоже есть коты. Пишем, в прочем, в смешанном стиле. Любим ФП больше, чем его любят в котлине, но меньше, чем в хаскеле.

nihirash ★★★ ()