Pull to refresh
151.39
JUG Ru Group
Конференции для Senior-разработчиков

Scala или не Scala? Вот в чем вопрос

Reading time 4 min
Views 23K
Original author: Matthew Casperson


Дискуссия вокруг Scala не стихает уже много лет, разворачиваясь в основном на поле противостояния с Java. Действительно, несмотря на общую платформу, языки разные.

Аргументы за Scala известны:

1. Scala лаконичная;
2. Scala функциональная;
3. Scala крутая и современная;

В ответ на то, что Scala медленно загибается, Мартин Одерски заявил следующее: «В 2015-м было затишье, но вот в 2016-м развитие Scala должно ускориться».

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

Ну и в конце дам пару ссылок на популярные статьи по теме за последние несколько лет, если вдруг вы какие-то из них пропустили.

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

Переехав на Java 8 и освоив Optional и стримы, я начинаю понимать привлекательность функционального подхода. Когда я вижу, как вложенный цикл for выполняет итерации по коллекции или пачку проверок на null в иерархии класса, меня немного передергивает… Не столько из-за того, что такой код попросту уродлив, сколько из-за того, что до недавнего времени я и сам не знал ничего лучше.

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

ЗА: Scala – один из немногих функциональных языков, за разработку на котором вам будут платить


Если бегло пройтись по вакансиям Scala, можно увидеть, что коммерческие проекты начинают использовать этот ЯП. Это при том, что вакансии по Clojure и OCaml не находятся в моем городе вовсе, а Erlang, Kotlin и Haskell возвращают по одной вакансии каждый (обычно как дополнительный скилл). Тут стоит отметить, что Scala, во всяком случае, востребована как первичная компетенция.

(прим. пер.: В Санкт-Петербурге на момент перевода статьи 61 вакансия Scala, Erlang и Kotlin – 22 и 11 соответственно, а другие приведенные языки действительно выдают минимум вакансий).



ЗА: Если компания использует Scala, можно быть уверенным в их серьезном подходе к разработке


Если честно, я еще не видел вдохновляющих вакансий, рассчитанных на Java-разработчиков. Читая эти объявления можно почувствовать запах сырого подвала, в котором вы будете вымучивать из себя код для того, чтобы было что написать в отчете, или на коленке собирать очередное CRUD веб-приложение.

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

ЗА: Даже если вы останетесь на Java, вы станете лучшим разработчиком


Почему эта переменная не final? Может быть лучше возвращать новый объект, а не модифицировать существующий? Является ли этот return Optional или нет? Все эти вопросы я задавал себе, когда писал на Java из-за моего слабого понимания функционального программирования. Ответив на эти вопросы, я улучшил свой код.

Даже если я не смогу писать на Scala, знание Scala повлияет на мой код только положитедбно, даже если этот код будет написан на Java.

ПРОТИВ: Scala – это один вариант из бесконечного множества вещей, которые можно изучить


Станет ли изучение Scala наилучшим вложением моего времени, учитывая, что у разработчика список возможных компетенций стремится к бесконечности? Я могу потратить время на изучение Scala, а может быть лучше заняться изучить все подводные камни работы с облачными платформами наподобие AWS? Или стоит изучить логику процессинга Big Data? А может стоит посмотреть в сторону OWASP Top-10 или администрирования Linux-систем? Или заняться этой новенькой JavaScript бибилиотечкой?

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

Впрочем, попробуйте вспомнить последний раз, когда ваши обязанности как разработчика закончились, в момент успешной компиляции кода?

ПРОТИВ: Scala может просто «пробивать лед» для языков, подобных Kotlin


Kotlin еще предстоит взлететь (на май 2016 он даже не вошел в ТОП-50 индекса TIOBE), но я готов поспорить, что Kotlin станет ключевым языком функционального программирования на JVM в ближайшие несколько лет.

Язык разрабатывается JetBrains, так что tooling для него будет убойным в любом случае. Kotlin развивается из требований отрасли, а не из академических измышлений. К концу этого года, я думаю, Kotlin сравняется со Scala по количеству доступных вакансий.

ПРОТИВ: Возможно, функциональная Java достаточно хороша?


Программирование на функциональной Java даст код, который будет достаточно понятен и читаем для огромного количества других Java-разработчиков со всего мира, а у вас не будет болеть голова о переводе компании и имеющихся разработчиков на новый язык. В конце концов Java 8 даст вам поддержку функциональщины прямо в языке.

Да, это не будет чистым функциональным подходом, и у вас не будет права хвастаться Higher Kinded Types. А может вы просто получите 80% преимуществ от использования 20% функциональных coding features?

Простых ответов не бывает


Я разрываюсь между очевидными преимуществами глубокого понимания Scala, расширением кругозора в сфере IT-экосистем и практическими преимуществами, представляемыми конкурирующими молодыми языками.




И полезные ссылки для холивара Java vs Scala:

1. Как перейти с Java на Scala;
2. Scala хуже, чем Java;
3. Да, Вирджиния, Scala сложна!
4. Как будучи Java-программистом перестать сомневаться и перейти на Scala.
Tags:
Hubs:
+23
Comments 97
Comments Comments 97

Articles

Information

Website
jugru.org
Registered
Founded
Employees
51–100 employees
Location
Россия
Representative
Алексей Федоров