Комментарии 10
Здравствуйте, Настя, Эвелина и Миша! Сможете объяснить выбор scala для ваших задач? Спасибо.
привет, Стас!
Почему мы выбираем строгую типизацию, масштабируемость и иммутабельность? За последние 8 месяцев у меня багов не было в написанном коде + гибкий код можно писать, если перейти за порог входа
Жаль. Зря вы ёрничаете, Миша. Задавая свой вопрос, я (как человек не имевший в жизни вообще никакого опыта со scala и желающий примерить ваш опыт на себя) ожидал увидеть развёрнутый ответ, со сравнениями с решениями на других яп, с описаниями плюсов и минусов, а от вас пришла отписка. Расскажите пожалуйста, как вы используете "масштабируемость и иммутабельность" и в чём гибкость вашего кода вообще и по сравнению с реализацией на каком-то другом яп в частности? Спасибо.
Едва ли это прямая заслуга языка:) По тезису Черча-Тьюринга все Тьюринг-полные языки эквиваленты, а значит выбор ЯП в большей степени зависит не от задачи, а от команды, которая будет с его помощью реализовывать продукт. Хоть на JS операционки пиши и запускай)
Прелесть Scala в том, что у него замечательная интероперабельность с Java и существенная академическая база , что позволяет использовать богатую экосистему Java и полноценно окунуться в мир ФП без обратной совместимости с Java, обремененной этим самым принципом обратной совместимости. Язык получился достаточно простой и гибкий, когда его понимаешь. И в этом всё и дело.
В силу того, что далеко не все преодолевают "порог входа", то те, кому это удалось, в принципе обладают явно и живым умом и любознательностью, потому заслуга того, что у них на выходе получается качественный код скорее их собственная, чем непосредственно языка. А так, почти любой проект можно писать на разных языках общего или специального назначения и выбор субъективен. А наделать багов на Scala умеючи совсем несложно как на любом другом языке.
Я бы переформулировал: Почему не все скульпторы лепят из глины или гипса? Почему некоторые берут мрамор, гранит?
А потому что могут. И им этот материал нравится.
Мне кажется, по функциональщине Rust скоро догонит Scala
Слышал, что у scala раскол сообщества - есть "простая Scala" (как better Java) и "типобезопасная Scala" (с Cats, Scalaz, ZIO). Команды часто конфликтуют по поводу стиля.
Так?
Привет, почему так считаешь? В целом многие языки догоняют Scala по ФП, хз что конкретно нового ФП-шного в Расте
Не, по поводу раскола, если ты откроешь книгу от Одерски (создатель языка), то там на первых страницах будет написано, что стараемся писать в ФП стиле.
Имхо, если чуваки пишут на Scala as a better Java, то почему бы им не перейти на Kotlin?
Например
Higher Kinded Types (HKT) — конструктор типов как реальный тип.
Rust - много лет в активной разработке,
В kotlin уже есть ограничения поддержка
В c#, go, java скорее всего не будет никогда
Python как бы есть, но в динамической типизации это фигня
может я неправильно нагуглил, но полноценных HKT как в скале нет. В Scala например мы можем сразу писать:
trait Functor[F[_]] {
def map[A, B](fa: F[A])(f: A => B): F[B]
}
В Раст есть GATs, которые писать что-то типа такого
trait Functor {
type Wrapped<A>;
fn fmap<A, B>(fa: Self::Wrapped<A>, f: impl FnOnce(A) -> B) -> Self::Wrapped<B>;
}
сразу понятнее, что сложнее описать несколько параметров типа, например F[_, _]
Потом я увидел crates, который пытается быть Cats, я не шарю, но как будто бы ему всего 2 года и непонятно насколько приживется
имхо, как бывший плюсовик я бы хотел увидеть на хайпе язык с ФП стилем, без GC и с генериками как в Rust
Scala Digest. Выпуск 29