LINUX.ORG.RU
ФорумTalks

Чем scala лучше java?

 ,


1

3

Не вброс, не троллинг. Гуглил долго. Нормальных аргументов так и не нашел. Может тут кто-то что-то знает. Стоит ли выбросить яву и начать изучать скалу? И почему?

stevejobs на всякий случай

Перемещено tailgunner из development

Deleted

Ответ на: комментарий от r0ck3r

А что значит «если нужна»? Кому она вообще нужна? Людям нужен готовый стабильный продукт. Уже несколько раз попадал в ситуации, когда в вакансии пишут java, а на деле у них scala.

Deleted
()

Чем scala конечно лучше.

anonymous
()

Продвинутая система типов.
/thread

Deleted
()

Гуглил долго. Нормальных аргументов так и не нашел

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

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

https://github.com/scalaz/scalaz

Дык катс же.

Просто воспринимай не как джава++, а как отдельный язык.

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

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

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

На скале, как по мне(сугубо личное мнение), удобнее писать многопоточные приложения, асинхронщину и обработку данных. Итог не будет эффективнее, чем императивная реализация на джаве, но будет читаемее и тестируемее.

Смерть джаве ни котлин, ни скала не принесут.

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

Scala лучше Java тем же, чем Rust лучше Си

Rust — маргинальщина, которая ничем не лучше Си. А про Scala я бы такого не сказал.

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

Мм ну ладно тогда. Котлина боюсь по причине JetBrains. Не доверяю я этой шараге.

Видимо, фапают на scala вместо явы просто потому что смузи-коворкинг-борода.

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

О, это я, кажется, тебя хотел скастовать, а не стивджобса. Запутался уже во всех этих жабоевангелистах всея лора.

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

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

Гуглил долго. Нормальных аргументов так и не нашел

Исхожу из вот этих лаптей на глазах. Если ты ничего не нагуглил, то мы тут тебе не поможем

vertexua ★★★★★
()
Последнее исправление: vertexua (всего исправлений: 1)

Скала странная штука — они взяли все худшее из java (jvm) и выкинули все лучшее (язык java). Естественно ничего хорошего из этого не вышло.

redixin ★★★★
()

Стоит ли выбросить яву и начать изучать скалу?

Да.

И почему?

Уже несколько раз попадал в ситуации, когда в вакансии пишут java, а на деле у них scala.

Вот поэтому.

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

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

Ты меня с ттт перепутал. Я выше писал почему интересуюсь.

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

Видимо, фапают на scala вместо явы просто потому что смузи-коворкинг-борода.

Ну не поэтому, но к ней обычно приходят наевшись джавы/императивщины, а если тебя все устраивает - то нафига что то менять?)

Но если надумаешь освоить скалу - то тут скорее вакансия со сменой языка тебе в помощь, чем самостоятельное изучение скалы - потому что есть небольшой разрыв между реальной скалой и скалой из книг

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

наевшись джавы/императивщины

Это и есть синоним «смузи». В серьезном продакшене не «наедаются», там работают :)

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

Да, наелись сложного написания асинхронного кода, на работе

vertexua ★★★★★
()

Я не знаю почему, но написание non-blocking с использованием всяких реактивных api очень нетривиально на java, дебажить тяжело, стектрейс бесполезен, т.к. контекст вообще к треду не привязан, тред сам по себе, данные сами по себе. Может быть во всех этих fp языках уже есть соответствующие подходы и решения.

anonymous
()

Почему не Groovy? Почему не D? Почему не Swift?

menangen ★★★★★
()

По-моему, единственное существенное (для некоторых) преимущество Scala - возможность фанатствовать. Аналогично, среди дистрибутивов Linux этим достоинством обладают Arch Linux и Gentoo, и тут часто можно наблюдать, как кто-нибудь влезает в обсуждение проблемы с бесполезным советом «ставь Arch Linux, ставь Gentoo». Иногда бывает удивительно, какая дрянь является поводом для фанатствования. Большинство пользователей просто пользуются чем-нибудь практичным, в данном примере Java, но некоторым надо выпендриться. Хотя некоторые из преимуществ Scala, перечисленные предыдущими ораторами, имеют место. Но недостатки их перевешивают: уродство исходного кода, маргинальность языка и плохая поддержка в IDE (вызванная однако не сложностью языка, а малочисленностью сообщества пользователей).

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

Чем scala лучше котлин?

Фор компрекеншн, типы с дырками, для бэкендов более развитая инфраструктура и больше именно скаловых либ(у котлина меньше своих библиотек)

Просто котлин моложе, думаю чуть позже котлин тоже займет свою нишу в роли Java++

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

Про сам язык не скажу, но котлин обеспечивает JetBrains. У меня лично неприязнь к этой компании. Сегодня она есть, завтра ищи свищи.

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

Нет, ФП нужно, очень нужно. Например самые стандартные монады обычной Scala - List, Future, Option, Either, они очень удобны и хороши

Фетишизм не нужен со стрелками, Kleisli и тд. Это не ФП, а ононизм с всенарастающим количеством церемонии поверх того что ты хочешь реально сделать.

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

Про сам язык не скажу, но котлин обеспечивает JetBrains. У меня лично неприязнь к этой компании. Сегодня она есть, завтра ищи свищи.

kotlin очень похож на все современные языки (hello world на swift от kotlin может отличить только зоркий глаз), т.е. после него освоить другой язык будет не сложно, время на сам язык тратится не много, а classpath и фреймоврки это фактически изучение инфраструктуры java.

Aber ★★★★★
()
Последнее исправление: Aber (всего исправлений: 1)

stevejobs на всякий случай

Он по Java.

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

Ну не го же, гц дил брикер. Он скорее современная альтернатива.

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

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

Скалу пилят - академики-романтики

Котлин - реалисты и практики

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

Не подскажешь, что это за тема пошла с var и fun? Они это специально делают, только чтобы никаквси?

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

Полный интероп с Жабой.

4.2

Интероп такой же, как и у скалы - тоже не всегда прозрачный. Знаю достаточно котлинистов - не все там гладко.

Скаловцы свой дотти все запилить не могут, так что уже почти все сбежали на Котлин.

Дотти же - проект для обкатки фич - он для того и есть, чтобы на нем пробовать всякое.

Тем, что нет дебильных имплиситов, из-за которых хрен поймешь как этот код работает.

Ясно, просто не осилили или работали в говно-команде, где пихают все, что могут, куда угодно.

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

Дык с появлением и распостранением сишки все эти ненужнокейворды вроде как закопали. Сейчас они опять повсюду. Вот не понятно зачем? почему не int i = 0;? Зачем и кому нужно это var i : type; i := 0?

Да еще и семиколон выкидывают. Не пути. Припекает.

Deleted
()
Последнее исправление: rj45 (всего исправлений: 2)
Ответ на: комментарий от Guest_1488

Тебе приятно его везде расставлять?

Дак а толку спорить с утятами?

Не привычно == плохо

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

Короче, в сях проблема с инструментальной обработкой и постарением ast, ты там очепятку сделал в теле функции, а ошибка пишется вообще в другом месте. Clang пытаются использовать для статического анализа сишного кода, но он же медленно работает по отзывам самих сишников. Плюс теперь мода делать в статически типизированных языках вывод типа, это когда компилятор сам заглянет в объявление метода или функции и посмотрит возвращаемый тип там, потому обязательная декларация типа во многих ситуациях не требуется, постфиксная декларация типа позволяет сделать саму декларацию опциональной и все эти ключевые слова (fun, fn, var) нужны только для того, чтоб убрать неоднозначности когда типы в коде явно не указаны. Это все происходит во всех современных языках (Go, Rust, Kotlin, Swift, Scala, Nim).

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

Второе мусор не из-за указания типа, потому что так написано.

val i=1

Или

var i = 1 // автор кода мудак

Вот и все.

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

Я про семиколон (точку с запятой).

Тут во втором примере несомненно мусор, хотя нормальные языки умеют в вывод типов:

let i = 0

Тут не очень однозначно, но в F# и, должно быть, OCaml, например, мы получим int.

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

Потому-что тип можно не указывать и он будет автоматически выводиться.

Семиколон нахрен не нужен. Выкинули и правильно сделали.

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

Потому-что тип можно не указывать и он будет автоматически выводиться.

Имхо, это неправильно. Явное указание типа — половина успешно написанной программы.

Deleted
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.