Зачем учить jvm языки кроме Java?

Какая конкретная цель всех языков: Kotlin, Scala, Groovy, Clojure и других, если можно писать все на Java?
Что конкретно заставляет людей создать/использовать другие? Кроме того, что сам синтаксис или стиль программирования разный, и то иногда кажется что совсем он и не разный, а просто специально изменен, чтобы так казалось(по типу «сначала имя, а потом тип», «вместо одной полосочки две в лямбде»).
Как понять, что вот проект А пишется на Java, а вот проект B ужеее неее, на Scala или Groovy лучше будет.
Про Kotlin вроде ясно, тупо сократили размер конструкций Java, чтоб проще было клепать Android приложения.
Ну и главный вопрос:
Почему программисты на Scala, говорят что это крутейший ЯП, и после него не хочется возвращаться в Java. Тогда если он такой крутой, почему я за 6 лет в айти(не коммерческого, но всетаки был рядом) не слышал почти про него, и тем более, что это такой Кайфовый язык? И где тогда куча вакансий на него?
  • Вопрос задан
  • 1447 просмотров
Решения вопроса 1
sergey-gornostaev
@sergey-gornostaev Куратор тега Java
Седой и строгий
Это очень странный вопрос. Почему под .NET существует множество языков, если можно писать всё на C#? Почему вообще существует множество языков, если можно писать всё на C? Почему так много разновидностей мобильников? Почему автомобили бывают разных марок? И т.д. и т.п. Потому что не бывает единственно правильного всегда и для всего решения.

Как понять, что вот проект А пишется на Java, а вот проект B ужеее неее, на Scala или Groovy лучше будет.

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

Тогда если он такой крутой, почему я за 6 лет в айти(не коммерческого, но всетаки был рядом) не слышал почти про него

В пещере может жили?

И где тогда куча вакансий на него?

Между "крутостью" языка и количеством вакансий на него нет прямой связи. Дворников сильно больше, чем нейрохирургов, но вы же не будете утверждать, что дворником быть круче?
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
@frozen_coder
Java-developer
А что мешает попробовать написать по одному приложению средних размеров на каждом из языков? Что толку вам от наших ответов? Вы же так не почувствуете разницу. Вот придут скалисты и опять скажут, что их язык самый лучший - вы это уже слышали)

Kotlin - это better java, по крайней мере на данный момент. Мб java весрии 30 или 35 дойдёт до кондиции. Подождём. Кто не хочет ждать - пишет на Kotlin. После Kotlin уже у многих возникают вопросы, а зачем на java писать?) Одна Null Safety многого стоит, имхо, конечно. И в сотый раз, kotlin не создавался под android, в нём нет никакой привязки к android, это язык общего назначения. А ещё есть kotlin.js и kotlin native.
Scala - можно писать как на better java, но лучше всего раскрывается при функциональном подходе. Полностью функциональном. Со всеми его + и -. Вроде библиотека cats сейчас на коне и tagless final (это всё, что я про современную scala слышал :D). И вот это уже совсем-совсем не как в java. Я не адепт, попробуйте сами, может зайдёт.
Groovy - это динамический язык. На нём хорошо прототипировать и писать скрипты (вспомните gradle). Быстро, вывод типов, сахарок. Мне в своё время очень зашли тестовые фреймворки на groovy - Spock Framework и Geb - с ними писать тесты было приятнее, чем на junit.
Clojure - это тоже функциональщина как Scala, но ещё хардкорнее. Это для тех, кто когда-то полюбил lisp и тащится от него. Знаю только, что Никита Прокопов на нём пишет. Вроде в интервью frontend-weekend он говорил, почему пишет на Clojure, а может ещё где-то. Довольно редкий язык на самом деле.
Ответ написан
jamakasi666
@jamakasi666 Куратор тега Java
Просто IT'шник.
Вот есть напиток кофе. одним подавай кофе со сливками, другим с молоком, третьим с сахаром а четвертым вообще двойной крепости и без кофеина.
Тут таже ситуация. Если Вам привычнее java пишите на ней т.к. вакансий все еще очень много, хочется нового ну кто Вам запрещает?
Ответ написан
Комментировать
angrySCV
@angrySCV
machine learning, programming, startuping
время идет, мир меняется, а в месте с этим и потребности к продуктам, например сейчас сильно увеличилось количество фреймворков/инструментов требуемых для среднего разработчика, железо также сильно изменилось с тех времен когда разрабатывалась джава, стали массового распространены многоядерные системы, в обыденность вошли продукты которые работают на кластерах и тд. Scala - разработан чтоб упростить нарастающую сложность.
при этом Scala - это не better java, это не про ООП или ФП, это язык практикующий в первую очередь практичный/прагматичный подход, стремящийся упростить работу с фреймворками, многоядерными системами, кластерами, различными платформами (компилироваться в js, нативно компилироваться и работать без jvm, работа с видеокартами и тд).
И как любой прагматичный язык, он позволяют работать с ним таким образом, как кто-то уже привык работать, например работать как с Java.
один из примеров упрощения : типы в скала, автоматически выводятся, их не обязательно указывать, из-за чего легко можно эксперементировать с кодом и его рефакторить, все зависимости по типам будут автоматически выводится сами.
Например зная интерфейсы Scala коллекций ты автоматически знаешь интерфейсы подавляющей части существующих в экосистеме фреймворков (общие интерфейсы).
Также ты можешь код разработанный как однопоточный, перенести на многопоточную среду, а затем и на кластер, и тд.
Есть простые схемы для создания собственных элегантных домен специфичных языков (используя перегрузку операторов, неявные параметры, неявные функции, автоматическую конвертацию типов).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы