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

22.08.2018     

Современные разработчики хотят от новых языков программирования краткости, понятности и типобезопасности. Именно таким был создан 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; kadild; 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. kadild 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; kadild; +2 1 Ответить
9. Gureev 22.08.18 16:38 Сейчас в теме
(8)
а вдруг завтра война. Схрон с тушенкой готов, ружье припрятано?

А то!
TreeDogNight; Kochergov; +2 Ответить
16. Evil Beaver 6960 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 6960 28.08.18 18:47 Сейчас в теме
(27) Зачем? Веб-движок переведен, ради докеров-шмокеров, а основной консольный для чего?
12. kadild 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. kadild 22.08.18 17:24 Сейчас в теме
(6) И чем же, пример?
Ну если для вас язык не инструмент, а психотропный препарат - BrainFuck вам в помощь. Или Haskell.
Radkt; nyam-nyam; +2 1 Ответить
15. neikist 22.08.18 18:01 Сейчас в теме
(14) В первую очередь программирование для меня это средство получения удовольствия. Но даже если рассматривать как инструменты - в скала реализовано очень много возможностей. По мнению некоторых - даже слишком много. Сам я с ним не работал, но насколько помню как минимум там и функциональная парадигма поддерживается, и ООП. Хотя специально я им не интересовался. И хочу поинтересоваться, чем это хаскель плох?
maxopik2; Kochergov; +2 Ответить
7. dimisa 122 22.08.18 15:16 Сейчас в теме
в свете последних статей ....
Просто не дождусь в новостях обзор языка GO.
myjob1c; Kochergov; +2 Ответить
10. Gureev 22.08.18 16:39 Сейчас в теме
(7) скорее clojure
Silverbulleters; Kochergov; dimisa; +3 Ответить
11. dimisa 122 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])))


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

Вот ну очень спорное мнение. Всё в кучу одним словом )))
Kochergov; +1 Ответить
23. silberRus 68 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 24 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

Про Эрланг ничего не скажу, но что простого в Хаскеле? :)
Оставьте свое сообщение

См. также

Самые медленные языки программирования с динамической типизацией

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

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

вчера в 15:20    1097    SKravchenko    2       

Мэрия Москвы разработала мессенджер для замены Telegram и Skype

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

Российская компания ID Partner совместно с правительством Москвы создала приложение TDM Messenger. Согласно описанию, оно позволяет полностью заменить другие мессенджеры, в том числе Telegram и Skype.

02.03.2021    1680    VKuser24342747    7       

Совсем взрослый стал: Python исполнилось 30 лет

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

Python является самым молодым из наиболее популярных языков программирования. Впрочем, все относительно: на днях Python исполнилось 30 лет.

02.03.2021    887    user1015646    1       

Энтузиасты создали для популярного эмулятора патч с поддержкой процессоров «Эльбрус»

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

Свободный эмулятор QEMU получил неофициальную поддержку отечественной архитектуры процессоров «Эльбрус». В разработке реализовано около 80% набора инструкций «Эльбрус-8С».

01.03.2021    1872    VKuser24342747    0       

Российский разработчик создал неофициальную версию Clubhouse для Android

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

Бывший разработчик из «ВКонтакте» Григорий Клюшников выпустил приложение для Android, предоставляющее доступ к большинству функций Clubhouse. Официально соцсеть доступна только пользователям iOS.

26.02.2021    2132    VKuser24342747    0       

Масштабное обновление Trello: пять новых видов досок и интеграция с Google Docs

Новость ИТ-новость Новости компаний

Компания Atlassian выпустила масштабное обновление сервиса управления проектами Trello. Разработчики изменили дизайн, добавили пять новых видов досок и реализовали для карточек возможность отображать информацию из сторонних сервисов.

25.02.2021    3842    user1015646    0       

Видеоигра на базе нейросетевого генератора текстов стала бизнес-консультантом

Новость Видеоигры Искусственный интеллект ИТ-новость

Энтузиаст использовал возможности текстового квеста, генерирующего разнообразные миры при помощи нейросети GPT-3, чтобы получать советы по ведению бизнеса. Часть идей ИИ оказалась пригодной для использования.

25.02.2021    2249    VKuser24342747    1       

В ближайшие годы возрастет потребность в персонале центров обработки данных

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

Согласно отчету Uptime Institute, количество сотрудников, необходимых для обеспечения работы ЦОД, вырастет с 2 млн. в 2019 году до 2,3 млн. в 2025 году.

24.02.2021    2173    SKravchenko    0       

Google кардинально изменит дизайн Android 12

Новость Android Google ИТ-новость Мобильные приложения Новости компаний

Компания Google анонсировала глобальное обновление популярной операционной системы Android. Новая версия выйдет под номером 12. Говорят, что Android 12 назовут «Snow cone» – летний десерт из сладкого колотого льда.

24.02.2021    2571    mouse187    0       

Google представила новый сервис для поиска уязвимостей в открытом ПО

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

Компания Google запустила платформу с открытым исходным кодом OSV (Open Source Vulnerabilities). Она создана для поиска и закрытия уязвимостей в свободном ПО.

18.02.2021    1351    user1015646    0       

Отечественная компания представила сервер приложений Java EE

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

Российская компания Bellsoft представила отечественный аналог сервера Oracle и IBM для JavaEE. Раньше продукт на базе открытого кода был доступен только для некоторых клиентов организации.

17.02.2021    2387    VKuser24342747    4       

Rustоманы из Долины: Google, Microsoft, Huawei, Mozilla и AWS основали фонд поддержки языка программирования

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

Rust – перспективный язык, который широко применяется в разработке операционных систем и высоконагруженных веб-сервисов. Rust Foundation будет заниматься поддержкой и развитием языка.

16.02.2021    1622    user1015646    0       

В Microsoft Teams появилась платформа для общения и обучения

Новость Интернет ИТ-новость Мессенджеры Новости компаний

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

15.02.2021    3203    user1015646    0       

Google рассказала, как защищает Android от взломов

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

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

12.02.2021    1925    SKravchenko    0       

Для регионов разработают приложение онлайн-записи на прием к врачам

Новость ИТ-новость Медицина Минкомсвязь Цифровая экономика

О возможностях приложения рассказали в Минздраве и Минцифре.

10.02.2021    1940    Senator_I    2       

Google разработает новую мобильную ОС

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

Корпорация Google создаст мобильную операционную систему для повышения безопасности использования устройств. Проект запущен под рабочим названием microdroid.

09.02.2021    2168    user1015646    0       

Google закрывает собственную игровую студию Stadia

Новость Google Видеоигры ИТ-новость Новости компаний

1 февраля Google официально закрыл собственную студию разработки игр для проекта Stadia, чтобы сосредоточить внимание на технологиях, лежащих в основе платформы.

09.02.2021    1530    SKravchenko    0       

Google представила технологию для замены cookies

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

Методы сбора файлов cookies для повышения точности подбора рекламы не раз упрекали в нарушении личного пространства пользователей. Компания Google представила технологию, которая позволит отказаться от cookies и повысить уровень конфиденциальности.

09.02.2021    1285    user1015646    0       

Украинская команда FireWay одержала победу в хакатоне NASA Space Apps Challenge 2020

Новость ИТ-новость Стартапы

Украинская команда FireWay из Днепра стала победителем международного хакатона NASA Space Apps Challenge. Их изобретение было описано как «решение, которое демонстрирует наиболее инновационное использование технологии».

05.02.2021    2005    SKravchenko    2       

Китайцы разработали целых две альтернативы Flash

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

Китайцам пришлось разработать собственную технологию ReFla взамен Flash для предотвращения сбоев в работе систем. Также они выпустили доработанную версию Flash Player с кодом 34.0.0.92.

04.02.2021    2146    mouse187    4       

Популярные дистрибутивы Linux могут лишиться поддержки Chromium

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

Из дистрибутивов Arch Linux, Fedora, Debian, Slackware и openSUSE может исчезнуть поддержка браузеров на движке Chromium. Причина – жесткие правила Google, из-за которых возникли проблемы с синхронизацией данных.

03.02.2021    2422    user1015646    3       

Microsoft участвует в разработке цифрового паспорта вакцинации от Covid-19

Новость ИТ-новость Медицина

Крупнейшие корпорации из сектора здравоохранения и ИТ-гиганты, такие как Microsoft, Salesforce и другие, объединились для создания цифровых идентификационных карт, которые подтверждают статус вакцинации против Covid-19.

02.02.2021    1793    capitan    3       

Что нового в Chrome 88: проверка надежности паролей и поддержка профилей

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

Компания Google представила новый релиз браузера Chrome и обновила движок Chromium. Теперь ПО будет предупреждать о небезопасных паролях, а пользователь сможет создать привязанный к учетной записи профиль для персонализации работы в сети.

01.02.2021    2263    user1015646    0       

280 символов для науки: Twitter откроет доступ ученым к архиву твитов

Новость ИТ-новость Соцсети

Twitter предоставит академическим исследователям социальных сетей бесплатный доступ почти ко всем твитам. Исключение площадка сделает только для заблокированных аккаунтов.

29.01.2021    1511    VKuser24342747    1       

Отключение Flash на сутки лишило город железнодорожных служб

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

Прекращение поддержки Flash парализовало работу железнодорожной сети китайского города-миллионника. Организация проигнорировала предупреждения Adobe о грядущем отключении технологии.

29.01.2021    1907    VKuser24342747    1