itechart_logo

Язык программирования, применяемый LinkedIn, Twitter и Netflix: за что любят Scala

Students Lab Development & QA

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

Основные сферы применения Scala — Big Data, Data Analysis, проекты, реализующие высокую нагрузку на Backend.

В новом материале вместе с Глебом Стрельцовым, Software Engineer iTechArt, разбираем плюсы и минусы, преимущества и перспективы Scala, порог вхождения и впечатления от работы с ним.

Наш собеседник
Стрельцов_Глеб_блог.jpg

Глеб Стрельцов

Software Engineer iTechArt

Ментор и куратор в Students Lab по направлениям Java и Scala. Участвует в разработке и проверке тестовых заданий.

Почему ты выбрал Scala?

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

Глеб Стрельцовов, Software Engineer iTechArt

Мне, как разработчику пришедшему из JVM-технологий — в частности Java, — Scala показалась логичным продолжением своей карьеры без потери накопившегося бэкграунда.

Последнее, но не менее важное, — мне открылась дорога к интересным задачам и проектам, связанным с Big Data и высоконагруженным бэкендом. Благодаря переходу на Scala я больше работаю с приложениями, использующими функциональную парадигму (ФП) программирования*, передовыми технологиями и опытными профи, у которых многому можно научиться.

* Функциональная парадигма (ФП) так же, как и ООП, определяет базовые принципы, техники написания кода. При ее применении в программе используются концепции чистых функций и ссылочной прозрачности. Важно понять, что ООП и ФП не являются взаимоисключающими парадигмами. Нередко они используются одновременно при разработке одного приложения.

Тема сравнения ООП и ФП — сложная и глубокая, вызывает много споров и дискуссий в сообществе разработчиков. Некоторое представление о ней тебе может дать эта статья.

В чем преимущества языка на фоне других языков программирования?

— Это мультипарадигменный язык. То есть, для работы со Scala можно использовать как объектно-ориентированный подход (ООП), так и функциональный. На практике, обе эти концепции можно применять даже совместно, используя гибридную модель разработки, позволяющую брать все самое лучшее от обоих подходов. В итоге, мы получаем синергию ООП и ФП.

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

Глеб Стрельцовов, Software Engineer iTechArt

По этой же причине LinkedIn, Twitter, Netflix, Airbnb используют Scala в своих продуктах. Они также инвестируют немало ресурсов и времени в развитие языка, прокачивая его показатели эффективности в продакшене.

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

Чем Scala не похож ни на один из других языков программирования?

— На мой взгляд, визитные карточки Scala — сбалансированность, стабильная экосистема и богатая история использования в продакшене в популярнейших технологиях:

  • Apache Kafka — фреймворк, позволяющий в режиме реального времени собирать пользовательские данные, например, регистрировать поведение пользователя на сайте. 
  • Spark — фреймворк для крупномасштабной обработки практически любого типа данных распределенных на кластере.
  • Flink — фреймворк для обработки неструктурированного неограниченного потока данных, используемый в высоконагруженных Big Data приложениях для анализа данных.

Когда речь идет о работе в распределенных средах (например, системы данных, состоящие из нескольких объектов: каталог с именами пациентов, каталог с датами записи, каталог с названием процедуры), где разработка ведется кластерами — или группами — машин, работающих с огромными выборками данных, на сцену выходит Scala со своим легким и высокофункциональным кодом, позволяющим быстро и удобно прописать функционирование всей системы.

Глеб Стрельцовов, Software Engineer iTechArt

Освоив Scala, можно легко создавать сложные программы, ограничиваясь малым количеством строчек с функциями. То, на что в других языках уйдут сотни и тысячи символов, в Scala можно представить несколькими строчками кода. Такая программа, кроме прочего, отличается высоким качеством, легкостью в сопровождении и лаконичностью.

Программисты-математики смогут получить дополнительное удовольствие от использования языка, поскольку, как я уже говорил, достигнут удачный баланс между математическими концепциями в программировании и их использованием для решения реальных задач. Scala является частью экосистемы JVM (Java Virtual Machine), и это огромное преимущество. Немало программ написано под JVM, и их, как готовые блоки, можно интегрировать в код на Scala, что значительно ускоряет разработку.

Высокий ли порог вхождения в Scala?

— Я бы сказал, если сравнивать с Java, C#, Python, Ruby, то порог вхождения чуть выше среднего показателя по ним. Это вовсе не из-за того, что язык сложный в изучении. Основная трудность — разобраться и понять функциональную парадигму программирования, которая, по сути, лежит в основе всех преимуществ этого языка. 

Хорошая новость в том, что можно войти в Scala с пониманием ООП и в процессе работы постепенно освоить функциональную часть. Поэтому бояться Scala точно не стоит.

С чего начался твой путь в Scala? Было ли тебе сложно? 

— Я начинал как Java разработчик. Но ни для кого не секрет, что в Java, как, впрочем, и в других языках программирования, нередко встречаются не самые интересные проекты. Так случилось и со мной. Проработав на нескольких legacy-проектах с большой текучкой разработчиков, старым кодом и шаблонными задачами, я понял, что хочу попробовать что-то новое. Тогда я и обратил внимание на Scala. Тут концентрация интересных проектов на порядок выше, намного больше нестандартных задач, необходимостей решения нетривиальных инженерных проблем.

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

За что ты любишь Scala?

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

Глеб Стрельцовов, Software Engineer iTechArt

Со Scala мне нравится чувствовать себя всегда увлеченным, общаться с очень интересными людьми. Бытует мнение, что Scala делает любого разработчика счастливым. Мне кажется, хорошая мотивация, чтобы приступить к изучению:)

Что бы ты посоветовал новичкам, которые только-только начинают разбираться в направлении? 

— Советую начать:) А вообще, делюсь небольшой шпаргалкой. По пунктам:

  1. Построй себе предварительный маршрут развития и изучения Scala на конкретный период времени. Не переживай, если с ходом времени в нем что-то изменится, это нормально.
  2. Обозначь измеримые цели. Поставь Readlines, Deadlines с целью контроля процесса обучения.
  3. Найди ментора или организуйся с другими ребятами, интересующимися Scala, чтобы вместе разбираться с языком, делиться знаниями, впечатлениями, проверять друг друга: коллективно учиться намного интереснее.
  4. Почаще тренируйся писать код, закрепляя полученную теорию практикуй. Помни: «Терпение и труд все перетрут» и «Лучше делать маленькие шаги, но каждый день».

Книги:

Другие ресурсы и онлайн-курсы: