Язык программирования 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 6781 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 6781 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 119 22.08.18 15:16 Сейчас в теме
в свете последних статей ....
Просто не дождусь в новостях обзор языка GO.
myjob1c; Kochergov; +2 Ответить
10. Gureev 22.08.18 16:39 Сейчас в теме
(7) скорее clojure
Silverbulleters; Kochergov; dimisa; +3 Ответить
11. dimisa 119 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 126 22.08.18 18:39 Сейчас в теме
Что по мне, так c++ лучше нет. А если делать нечего будет (:-)), то на ассемблере буду писать. На Tasm + Ideal режим.
myjob1c; TreeDogNight; evn-zorin; Kochergov; +4 Ответить
21. Идальго 133 22.08.18 21:23 Сейчас в теме
Scala – считают академичным языком, писать на котором смогут немногие. Бытует мнение, что на Scala пишут «умники», а те, кто любит попроще, выбирают Python, Haskell или Erlang.

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

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

См. также

Windows 10 сможет запускать приложения с Android-смартфонов

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

5 августа 2020 года Microsoft объявила о новшествах, которые появятся в Insider Preview Build 20185. Одной из самых интересных функций стало дальнейшее развитие службы «Ваш телефон».

вчера в 15:05    260    capitan    1       

Программист из Slack превратил MacOS 8 в кроссплатформенное приложение

Новость ОС Mac OS ИТ-новость

Разработчик создал приложение, позволяющее запустить MacOS 8 на современных компьютерах как обычное приложение. Для этого не понадобится даже предварительно устанавливать эмулятор.

06.08.2020    497    VKuser24342747    0       

МТС получил первую в России лицензию на развитие сети 5G

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

Роскомнадзор предоставил МТС лицензию на строительство сети 5G по всей территории России — в 83 из 85 субъектов. Срок действия лицензии - до лета 2025 года. Для развития сети были выданы частоты от 24,25 до 24,65 ГГц.

05.08.2020    606    user-programmist    1       

Работа с большими данными во всем мире должна регулироваться профстандартом

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

Британское компьютерное общество (BCS) вместе с Королевским статистическим обществом (RSS) и Королевской инженерной академией (RAEng) начали работу по созданию профстандартов в отрасли больших данных (BigData).

05.08.2020    483    SKravchenko    3       

GitHub представил дорожную карту развития сервиса

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

GitHub будет лучше знакомить разработчиков с грядущими обновлениями сервиса при помощи публичных дорожных карт. Пользователи смогут влиять на выполнение запланированных улучшений и помогать им продвигаться вперед по карте.

05.08.2020    469    VKuser24342747    0       

IEEE опубликовал свежий рейтинг языков программирования

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

Институт инженеров электротехники и электроники IEEE Spectrum недавно опубликовал свой рейтинг языков программирования за 2020 год. Как и в последние несколько лет Python снова лидирует, но есть и несколько сюрпризов.

04.08.2020    702    SKravchenko    1       

Facebook запускает конкурента Zoom

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

23 июля Facebook объявил, что расширяет возможности Messenger Rooms и Facebook Live, – теперь пользователи могут организовывать онлайн-совещания с участием до 50 человек.

03.08.2020    505    SKravchenko    0       

Виртуальные фанаты заполнят пустые стадионы

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

Из-за пандемии COVID-19 сто двадцатый сезон в истории главной лиги бейсбола США пройдет с пустыми стадионами. Но Fox Sports для своих трансляций будет заполнять трибуны виртуальными фанатами с цифровой визуализацией.

31.07.2020    568    SKravchenko    2       

Начался выпуск российских материнских плат для ARM-процессоров «Байкал»

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

Первую российскую материнскую плату для нового ARM-процессора Baikal-M представили компании «Байкал электроникс», «Эдельвейс» и «Базальт СПО». Ориентировочная стоимость платы – 50 тыс. рублей.

30.07.2020    696    user1015646    3       

Банки оценили переход на отечественное ПО в сотни миллиардов рублей

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

Российские банки пересчитали планируемые расходы на внедрение отечественных программ. Затраты финансовых учреждений могут составить до 150 млрд рублей.

30.07.2020    484    VKuser24342747    0       

Молодые сотрудники используют больше разных приложений для работы

Новость Автоматизация Аналитика ИТ-новость

Исследование, проведенное консалтинговой фирмой Creative Strategies по изучению сотрудничества, показало значительные различия в стиле и подходе к работе у разных возрастных групп.

29.07.2020    793    SKravchenko    0       

Microsoft представила утилиту для мониторинга процессов в Linux

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

Компания Microsoft выпустила утилиту ProcMon (Process Monitor) для Linux. Программное обеспечение распространяется под открытой лицензией MIT. Ранее ProcMon была доступна только для Windows.

29.07.2020    682    user1015646    2       

Google сделает Android Go обязательной на устройствах с ОЗУ меньше 2 ГБ

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

С октября 2020 года на все новые Android-устройства, имеющие объем ОЗУ 2 ГБ и менее, Google заставит устанавливать Android Go – модифицированную версию Android для устройств начального уровня.

28.07.2020    1573    SKravchenko    0       

Google Cloud представил новые средства безопасности

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

Облачная платформа Google Cloud разработала новые инструменты для обеспечения безопасности. Они ориентированы на крупные коммерческие компании, банки и государственные учреждения.

28.07.2020    650    user1015646    0       

ПК на Windows могут перейти на ARM-процессоры

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

22 июня Apple объявила о переходе Mac на процессоры собственного производства на базе архитектуры ARM. Первые системы появятся к концу года, начав двухлетний переходный период.

24.07.2020    1735    SKravchenko    1       

Разработчики GitHub представили GCM Core – инструмент универсальной аутентификации для Git-серверов

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

Git Credential Manager Core – это кроссплатформенный инструмент, который может стать альтернативой традиционной HTTPS- или SSH-аутентификации для Git-серверов. Планируется, что в будущем он заменит существующие утилиты аутентификации для Windows, macOS и Linux.

24.07.2020    1087    user1015646    1       

Google выпустила большое обновление Chrome

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

14 июля Google выпустила стабильную версию браузера Chrome 84 Desktop для Windows, Mac и Linux. Новый Chrome получил поддержку Web OTP API, ярлыки PWA и умеет блокировать навязчивые уведомления.

23.07.2020    1699    SKravchenko    0       

GitHub разместил пленочный архив открытого кода в арктическом хранилище

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

GitHub завершил масштабный перенос архива открытого исходного кода в хранилище Arctic World Archive. Данные будут храниться в виде фотоснимков на пленочных накопителях.

22.07.2020    1079    VKuser24342747    2       

Денег нет: «Сколково» прекратило выдавать некоторые гранты до 2021 года

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

Фонд «Сколково» приостановил выдачу грантов за деньги Минфина. Высокотехнологичные компании смогут претендовать на финансирование только в следующем году.

21.07.2020    1140    VKuser24342747    1       

Docker и Amazon Web Services провели взаимную интеграцию инструментов разработчика

Новость Интеграция ИТ-новость Новости компаний

Docker и Amazon вышли на новый этап партнерства. Компании завершили двустороннюю интеграцию инструментов разработчика: Elastic Container Service (ECS) и ECS on AWS Fargate A293; со стороны Amazon; Compose и Desktop developer – со стороны Docker.

20.07.2020    974    user1015646    0       

Министерство связи запустит единую платформу «Гостех» до конца 2021 года

Новость Законодательство ИТ-новость Минкомсвязь

Минкомсвязь определила правила проведения эксперимента по созданию единой цифровой платформы «Гостех». Поставщик и оператор системы до сих пор не назван.

17.07.2020    1117    VKuser24342747    0       

Microsoft не планирует поддерживать PHP 8.0 для Windows

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

Инженер Microsoft Дейл Хирт объявил, что Microsoft не будет больше поддерживать сборки Windows для языка сценариев PHP начиная с версии 8.0 и выше. Но компания планирует пока «продолжить разработку и сборку PHP под Windows для 7.2, 7.3 и 7.4».

17.07.2020    1128    SKravchenko    1       

«Яндекс» и Mail.ru по поручению правительства разработают аналог Zoom

Новость Mail.Ru ИТ-новость Минкомсвязь Новости компаний Облачные технологии Яндекс

Минкомсвязь совместно с российскими ИТ-компаниями хочет создать отечественного конкурента Zoom. В ведомстве убеждены, что России необходимо иметь свое приложение для видеоконференций.

16.07.2020    1427    VKuser24342747    4       

Amazon запустил сервис Honeycode для создания приложений без кода

Новость Интерфейсы ИТ-новость Новости компаний Облачные технологии

Новый сервис под названием Honeycode позволит клиентам Amazon Web Services без какого-либо опыта программирования создавать собственные приложения

16.07.2020    1264    SKravchenko    1       

Оператор маркировки запустил роуминговый обмен с ЭДО Лайт

Новость Infostart Software Partners Маркет Маркировка

К электронному документообороту от «Честного Знака», бесплатно доступному для представителей малого бизнеса, работающих с маркированным товаром, подключили роуминг с другими операторами.

14.07.2020    1963    Senator_I    0