Язык программирования Scala: скала, которую стоит покорить

22.08.2018      23587

Современные разработчики хотят от новых языков программирования краткости, понятности и типобезопасности. Именно таким был создан Scala. Впрочем, называть его новым не совсем верно – разработка Scala ведется уже 15 лет.

В июльском рейтинге RedMonk язык Scala занял 12 позицию. И это повод присмотреться к нему подробнее.

Общая информация

Scala – мультипарадигмальный язык программирования, который унаследовал изобразительные возможности от нескольких языков. Например, он напоминает и Java, и C#, но с гораздо большими возможностями.

Разработала Scala команда из Федеральной политехнической школы Лозанны под руководством Мартина Одерски. Он также занимался созданием Generic Java и компилятора Java фирмы Sun. В 2001 году Одерски решил создать типобезопасный язык для решения научных задач и улучшить языковую поддержку компонентного программного обеспечения.

В 2003 году создатели выпустили первый внутренний релиз, в январе 2004 года представили первую версию для общего пользования на платформе JVM (Java Virtual Machine – виртуальной машины Java). В 2006 году появилась Scala 2.0. В июне 2004 года Scala вышел на платформе .NET. С 2012 года поддержка этой платформы прекращена. Полноценный нативный LLVM-компилятор (Scala Native) был представлен лишь в 2016 году.

Разработчики преследовали две основные цели:

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

  • Масшабируемая поддержка компонентов: унификация и обобщение функционального и объектно-ориентированного программирования.

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

Компиляторы и библиотеки Scala распространяются под лицензией BSD (Berkeley Software Distribution license – программная лицензия университета Беркли).

Особенности

В Scala используется единообразная объектная модель: значение представляет собой объект, а операция – вызов метода. При этом функции являются полноправными значениями – так реализуется парадигма функционального программирования. И каждая конструкция языка возвращает значение.

Но, в отличие от Java, в Scala объявляется не класс объекта, а сразу экземпляр объекта. Это естественная реализация шаблона проектирования Singleton («одиночка») – класса с единственным экземпляром.

Язык поддерживает абстракции типов и значений. К примеру, здесь есть гибкие симметричные конструкции примесей для композиции классов и типажей. Кроме того, доступны представления для внешних расширений компонентов (views) и поддержка обобщенных функций (generics), в частности, дженериков высшего типажа (generics of a higher kind). Views – очень мощный инструмент, полезный для интеграции. Он позволяет расширять класс новыми членами и типажами. Лаконичность кода на Scala можно продемонстрировать так:
 

 

Применение

На Scala созданы два крупных веб-фреймворка: Play и Lift. Play задействует платформы Coursera и Gilt, а самым популярным проектом на Lift является Foursquare. Кроме того, LinkedIn использует микрофреймворк Scalatra для поддержки своего Signal API.

Рывок популярности Scala обусловило и объявление Twitter в 2009 году: сервис микроблогов перевел с Ruby на Scala значительную часть серверного кода и продолжил работу в этом направлении. В 2011 году онлайн-версия газеты The Guardian была переписана с Java на Scala. Разработку на этом языке ведут Novell, Siemens, GridGain. Средство автоматической сборки Sbt, которое является одной из ключевых составляющих инфраструктуры разработки языка, также написано на Scala.

Так как Scala поддерживает «свободное смешивание» с Java, на нем можно писать Android-приложения. А возможность компиляции в JavaScript позволяет разрабатывать веб-приложения.

Почему Scala – выбор молодых и современных

Scala – считают академичным языком, писать на котором смогут немногие. Бытует мнение, что на Scala пишут «умники», а те, кто любит попроще, выбирают Python, Haskell или Erlang. Scala – достаточно сложный язык, но эта сложность позволяет реализовать высокую производительность и нестандартные решения на стыке функционального и объектно-ориентированного программирования.

На Scala будет просто перейти Java-разработчикам. Это прекрасный выбор и в качестве второго языка. 12 место в рейтинге RedMonk – отличный показатель популярности Scala. По сравнению с предыдущим кварталом 2018 года этот язык программирования улучшил свои позиции, поднявшись с 14 места. В других рейтингах позиции Scala не столь высоки: например, в списке TIOBE в мае 2018 года этот язык программирования оказался только 20-м месте. Правда, критерием для присвоения индекса служит количество поисковых запросов, содержащих название языка.

Еще один интересный показатель – «индекс предпочтения» GitHub, относительное количество пользователей языка, которые для следующего проекта в своей области выберут его же. Разочаровавшихся в Scala меньше, чем в Java или С++:



Количество пользователей, которые выберут Scala для работы над следующим проектом

 

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


Автор:
Обозреватель


Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. zarucheisky 22.08.18 13:48 Сейчас в теме
Странная как бы новость. Зачем одинеснику скала...
papche; zabaluev; van_za; kild; ccserg; user774630; +6 3 Ответить
2. Gureev 22.08.18 14:46 Сейчас в теме
(1) 1Cникам давно пора расширять свои горизонты.
manuel; maxopik2; spezc; ELInfinito; user597616_i.d.kravchenko; olegtymko; roman.ch; KEV8383; dimisa; CyberCerber; neikist; Kochergov; +12 Ответить
3. kild 22.08.18 14:58 Сейчас в теме
(2) Ага, рандомный язык который на 12 месте и по которому мало литературы и работы. Или только 1сники настолько безумны и бездельники, что нечем больше заняться?)
portwein; Radkt; user597354_OSporysh; stanislav1esnik; evn-zorin; +5 1 Ответить
5. Gureev 22.08.18 15:05 Сейчас в теме
(3) А вдруг выстрелит. Сегодня на 12, а через 2 года на 1?
Kochergov; +1 Ответить
8. user774630 22.08.18 16:13 Сейчас в теме
(5) а вдруг завтра война. Схрон с тушенкой готов, ружье припрятано?
protexprotex; kild; +2 1 Ответить
9. Gureev 22.08.18 16:38 Сейчас в теме
(8)
а вдруг завтра война. Схрон с тушенкой готов, ружье припрятано?

А то!
TreeDogNight; Kochergov; +2 Ответить
16. Evil Beaver 7483 22.08.18 18:17 Сейчас в теме
(8) Надо пилить 1Scala наравне с 1Script, тогда, глядишь и поедет.
user597354_OSporysh; JohnyDeath; TreeDogNight; Silverbulleters; amon_ra; +5 Ответить
27. zarucheisky 28.08.18 12:30 Сейчас в теме
(16) Надо 1Script на .NET Core 2.0 переводить
Evil Beaver; +1 Ответить
28. Evil Beaver 7483 28.08.18 18:47 Сейчас в теме
(27) Зачем? Веб-движок переведен, ради докеров-шмокеров, а основной консольный для чего?
29. пользователь 14.04.20 06:33
Сообщение было скрыто модератором.
...
12. kild 22.08.18 17:14 Сейчас в теме
(5) А вдруг через год вообще про него забудут, а вдруг... Глупейшая логика.

Программист, который бессмысленно тратит свое время с такими приоритетами "а вдруг" и играет в слепую лотерею, точно никому не нужен.
Radkt; user774630; papche; stanislav1esnik; ccserg; +5 1 Ответить
18. ТыжПрограммист 22.08.18 18:28 Сейчас в теме
(12)
Программист, который бессмысленно тратит свое время с такими приоритетами "а вдруг" и играет в слепую лотерею, точно никому не нужен.

"Знал бы прикуп, жил бы в Сочи"
Kochergov; +1 Ответить
6. neikist 22.08.18 15:06 Сейчас в теме
(3) Язык конечно рандомный, но для расширения сознания судя по тому что я слышал довольно годный. К тому же если смотреть на график последний в статье - из первой пятерки он точно наиболее сильно сознание расширит.
Kochergov; maxPromC; +2 Ответить
14. kild 22.08.18 17:24 Сейчас в теме
(6) И чем же, пример?
Ну если для вас язык не инструмент, а психотропный препарат - BrainFuck вам в помощь. Или Haskell.
Radkt; nyam-nyam; +2 1 Ответить
15. neikist 22.08.18 18:01 Сейчас в теме
(14) В первую очередь программирование для меня это средство получения удовольствия. Но даже если рассматривать как инструменты - в скала реализовано очень много возможностей. По мнению некоторых - даже слишком много. Сам я с ним не работал, но насколько помню как минимум там и функциональная парадигма поддерживается, и ООП. Хотя специально я им не интересовался. И хочу поинтересоваться, чем это хаскель плох?
maxopik2; Kochergov; +2 Ответить
17. пользователь 22.08.18 18:18
Сообщение было скрыто модератором.
...
19. пользователь 22.08.18 18:29
Сообщение было скрыто модератором.
...
4. пользователь 22.08.18 15:02
Сообщение было скрыто модератором.
...
7. dimisa 132 22.08.18 15:16 Сейчас в теме
в свете последних статей ....
Просто не дождусь в новостях обзор языка GO.
myjob1c; Kochergov; +2 Ответить
10. Gureev 22.08.18 16:39 Сейчас в теме
(7) скорее clojure
Silverbulleters; Kochergov; dimisa; +3 Ответить
11. dimisa 132 22.08.18 16:51 Сейчас в теме
(10)
clojure

Рич Хикки разработал Clojure как современный Лисп для функционального программирования с интеграцией в Java-платформу, спроектированный для поддержки параллелизма.[5]


О, мисье знает толк в современных извращениях ;)
Kochergov; +1 Ответить
22. Silverbulleters 23.08.18 05:31 Сейчас в теме
(11) clojure крут, clojurescript+react еще круче https://reagent-project.github.io/

(defn timer-component []
  (let [seconds-elapsed (r/atom 0)]
    (fn []
      (js/setTimeout #(swap! seconds-elapsed inc) 1000)
      [:div
       "Seconds Elapsed: " @seconds-elapsed])))


ну ведь песня ;-)
13. пользователь 22.08.18 17:16
Сообщение было скрыто модератором.
...
20. protexprotex 136 22.08.18 18:39 Сейчас в теме
Что по мне, так c++ лучше нет. А если делать нечего будет (:-)), то на ассемблере буду писать. На Tasm + Ideal режим.
myjob1c; TreeDogNight; evn-zorin; Kochergov; +4 Ответить
21. Идальго 211 22.08.18 21:23 Сейчас в теме
Scala – считают академичным языком, писать на котором смогут немногие. Бытует мнение, что на Scala пишут «умники», а те, кто любит попроще, выбирают Python, Haskell или Erlang.

Вот ну очень спорное мнение. Всё в кучу одним словом )))
Kochergov; +1 Ответить
23. silberRus 70 23.08.18 09:43 Сейчас в теме
Неудачная картинка сравнения,

Во первых, там ошибка в инициализации переменной в цикле order, переменная коллекции и коллекция имеет одно название.

Во вторых, там неизвестно откуда появился order,

В третьих, есть стандартные методы коллекций, где код копирования в примере можно вызвать 1 методом, если без стандартных методов тогда в две строки с лямбда выражением:

List<Product> p = new ArrayList<>();
orders.forEach(o -> p.addAll(o));
Kochergov; +1 Ответить
24. Vovan1975 13 23.08.18 12:29 Сейчас в теме
Уважаемый автор не осветил самый важный вопрос - для чего Скала - лучший? Что она может лучше других? На каких задачах она лучше других?
Sиlьver; +1 1 Ответить
25. kolya_tlt 77 23.08.18 14:09 Сейчас в теме
какая-то устаревшая инфа по рейтингу языков
https://redmonk.com/sogrady/2018/08/10/language-rankings-6-18/
Kochergov; +1 Ответить
26. MikhailMKZ 23.08.18 18:43 Сейчас в теме
те, кто любит попроще, выбирают Python, Haskell или Erlang

Про Эрланг ничего не скажу, но что простого в Хаскеле? :)
30. ignor 235 13.02.22 06:41 Сейчас в теме
Присмотреться то это для бывалых пустяк вопрос, но вот есть у меня по нему пару книжек хороших, но вот начав их читать, читать про так называемое конкурентное программирование, я задумался а что собственно я на нём писать. какие задачи под него есть? Под Scala я имею ввиду. Погуглил вакансии с Scala в качестве требований. Пишут что писать поиск, то есть люди хотят замутить свой узконаправленный поисковик. Ну поиск это да. Ну на мысли сразу где поиск приходит идея о написании систем атаки серверов с помощью конкурентного программирования. А что ещё можно? Что можно наваять на нём полезного не имея больших вычислительных мощностей в своём арсенале и чтобы не сесть
Оставьте свое сообщение

См. также

Вторая версия среды разработки для плат Arduino вышла из бета-теста

Новость ИТ-новость Микроэлектроника

Arduino IDE 2.0 получила стабильную версию, в которой появилась поддержка автодополнения кода и темная тема. Разработка заняла несколько лет. Программа распространяется бесплатно.

23.09.2022    1038    VKuser24342747    0       

Основатель движения свободного ПО выпустил руководство по языку C

Новость Linux ИТ-новость Языки программирования

Ричард Мэттью Столлман, основатель Фонда свободного программного обеспечения, представил руководство по языку C и расширениям GNU. Пособие доступно всем желающим и предназначено как для опытных, так и начинающих программистов.

19.09.2022    1014    VKuser24342747    0       

«Ростелеком» предложил создать национальную экосистему на базе «Авроры»

Новость Импортозамещение ИТ-новость Мобильные приложения

Провайдер считает, что государственная мобильная экосистема поможет обеспечить технологическую независимость и экономический подъем страны. А ОС «Аврора» наиболее перспективная разработка для достижения этих целей.

15.09.2022    1089    VKuser24342747    5       

Яндекс выложил в открытый доступ инструмент для разработки мобильных приложений

Новость ИТ-новость Мобильные приложения Яндекс

Фреймворк DivKit от Яндекса стал доступен как open source решение. Инструмент позволяет менять интерфейс приложений без скачивания обновлений и значительно ускоряет мобильную разработку.

02.09.2022    1053    VKuser24342747    0       

Группа компаний «Астра» представила собственную мобильную ОС

Новость Linux ИТ-новость Мобильные приложения

Доработанная ОС Astra Linux Special Edition может быть запущена на большом числе мобильных устройств, в том числе на планшетах и смартфонах с процессорами на архитектурах ARM, «Эльбрус» и x86-64.

25.08.2022    693    VKuser24342747    1       

В России разработаны меры для решения проблемы нехватки ИТ-специалистов

Новость ИТ-новость

Вице-премьер Дмитрий Чернышенко сообщил, что сейчас экономике страны не хватает 1 млн ИТ-специалистов. Способы преодоления дефицита закреплены в программе нацпроекта «Цифровая экономика»

05.08.2022    1087    VKuser24342747    11       

Яндекс открыл доступ к фреймворку для создания приложений с микросервисной архитектурой

Новость GitHub ИТ-новость Яндекс

Инструмент Userver опубликован как бесплатное open source решение. Яндекс уже несколько лет эффективно его использует в своих приложениях Go, «Еда», «Лавка», «Доставка» и другие. Фреймворк находится в стадии бета – переезда на открытую разработку.

02.08.2022    1808    VKuser24342747    19       

Бизнес сможет использовать повышающий коэффициент для расходов на покупку ПО

Новость ИТ-новость

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

26.07.2022    1669    VKuser24342747    0       

Минэкономразвития тестирует миграцию с Windows 10 на Astra Linux

Новость ИТ-новость

Министерство проводит эксперимент, в ходе которого сотрудники используют российскую ОС Astra Linux вместо Windows 10. По словам главы департамента, эксперимент проходит успешно.

11.07.2022    1258    VKuser24342747    0       

Вышла версия открытого текстового редактора Vim 9.0

Новость ИТ-новость

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

07.07.2022    1311    VKuser24342747    0       

 «Яндекс» открыл доступ к SmartCaptcha и нейросети по генерации текстов 

Новость ИТ-новость Яндекс

Компания открыла доступ к алгоритму SmartCaptcha, который защищает сайт от спама и DDoS-атак, а также к проекту YaLM 100B, способному писать тексты на английском и русском языках. 

29.06.2022    1458    VKuser24342747    0       

«Яндекс» предложил разработчикам пройти диагностику технических навыков

Новость Кадровые агентства, подбор персонала ИТ-новость Яндекс

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

27.06.2022    1468    VKuser24342747    1       

GitHub открыл доступ всем разработчикам к ИИ-помощнику Copilot по подписке

Новость GitHub Искусственный интеллект ИТ-новость

Github Copilot стал общедоступным, но для его использования пользователю репозитория нужно приобрести подписку. Хотя некоторые разработчики могут пользоваться инструментом бесплатно.

24.06.2022    1656    VKuser24342747    1       

В России планируют учредить Федерацию спортивного программирования

Новость ИТ-новость

Минцифры и Минспорта подписали меморандум, в котором закреплено сотрудничество ведомств по развитию в стране спортивного программирования и проведение первого официального чемпионата.

21.06.2022    1817    VKuser24342747    6       

Microsoft окончательно прекратила поддержку Internet Explorer

Новость Интернет ИТ-новость

Microsoft прекратила выпуск обновлений для своего браузера Internet Explorer, а с августа начнет удалять приложение из актуальных версий Windows. Эксперты полагают, что из-за этого пострадает много бизнес-пользователей.

17.06.2022    2077    VKuser24342747    4       

В России начал работу отечественный сервис мониторинга сбоев

Новость Импортозамещение Интернет ИТ-новость

Российская компания BrandAnalytics запустила платформу «Детектор сбоев», предназначенную для отслеживания работоспособности сайтов и сервисов, в том числе русскоязычных.

16.06.2022    1350    VKuser24342747    0       

Минцифры запустило систему отслеживания поддельных сайтов

Новость Безопасность Интернет ИТ-новость

Информационная система под названием «Антифишинг» способна обнаруживать мошеннические веб-ресурсы, которые выглядят как официальные сайты госорганов, компаний и соцсетей.

14.06.2022    2172    VKuser24342747    0       

GitHub прекратил поддержку редактора Atom ради перехода на VS Code

Новость GitHub ИТ-новость

GitHub объявил о прекращении разработки редактора кода Atom. К концу года все проекты в этом приложении станут доступны только для чтения. Причина – медленное развитие приложения.

10.06.2022    1973    VKuser24342747    2       

Вышла новая версия открытой операционной системы AlmaLinux 9

Новость Linux ИТ-новость

AlmaLinux – альтернатива CentOS, поддержка которой будет прекращена в 2024 году. В девятой версии ОС добавлено больше инструментов безопасности и обновлена среда разработки приложений.

09.06.2022    3176    VKuser24342747    2       

GitLab представила новый релиз платформы совместной разработки

Новость GIT ИТ-новость

Вышел релиз ИТ-хостинга для совместной разработки GitLab 15.0. В нем проведена подготовительная работа для перехода на VS Code, а также добавлен расширенный поиск и возможность управлять несколькими итерациями.

01.06.2022    2040    VKuser24342747    2       

Минцифры создаст единую цифровую платформу для акцептования оферт

Новость ИТ-новость Цифровая экономика

Правительство подготовило проект постановления, которое позволяет провести эксперимент по разработке Единой цифровой платформы ведения и акцептования оферт. В тестовом режиме сервис проработает до января 2023 года.

31.05.2022    1409    VKuser24342747    0       

VK совместно с Минцифры запустили магазин приложений RuStore

Новость Импортозамещение ИТ-новость Мобильные приложения

Компания начала бета-тестирование официального магазина приложений для Android. В маркетплейсе уже сейчас доступно более ста программ, часть из которых недоступны в Google Play.

27.05.2022    2609    VKuser24342747    5       

В GitHub появилась нативная поддержка математических выражений в md-файлах

Новость GitHub ИТ-новость

Команда GitHub рассказала о новой функции, которая позволяет записывать математические формулы в Markdown. Разработчики впервые попросили добавить эту возможность восемь лет назад.

26.05.2022    1956    VKuser24342747    0       

Национальный удостоверяющий центр наладил выпуск TLS-сертификатов

Новость Безопасность Импортозамещение Интернет ИТ-новость

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

25.05.2022    2120    VKuser24342747    1       

Минцифры запустит программу вознаграждения за поиск багов в госсистемах

Новость ИТ-новость

Минцифры анонсировало программу Bug Bounty, в которой смогут принять участие российские хакеры. Специалисты по безопасности будут тестировать государственные системы.

25.05.2022    2520    VKuser24342747    2