Scala, более высокий уровень языка на виртуальной машине Java
Созданная группой LAMP в Федеральной политехнической школе Лозана (EPFL) под руководством профессора Мартина Одерского, Скала представляет собой универсальный язык программирования, разработанный для обеспечения краткого и простого кода. Он близок к Java с заимствованиями из различных других языков, но также приносит инновации и упрощения, что заставляет задуматься о JavaScript. Это приводит к медленной компиляции.
Она основана на предметно-ориентированном программировании не меньше функциональных языков. По мнению авторов, код Scala в два-три раза лаконичнее эквивалентного кода в Java. Но можно написать и такой нечитаемый код, как у Perl. Как и Perl, он позволяет делать то же самое очень разными способами.
Код может быть скомпилирован в байт-коде Java или .NET и совместим с их соответствующими runtimes. В феврале 2015 года компилятор Scala.js в JavaScript был объявлен пригодным для использования в производстве .
Слово scala является коротким для SCAlable LAnguage и также означает лестницу на итальянском языке, что символизирует многоуровневое программирование.
Компилятор scalac имеет лицензию BSD. С 2014 года ведущие разработчики компилятора работают над новым языком - Dotty, упрощённой версией Scala, которая должна позволить удалить трудноразрешимые проблемы для совершенствования этого компилятора.

14 марта 2017 года объявляется Scala Native. (Статья на английском языке). Речь идет о замене виртуальной машины Java на LLVM и, следовательно, создании исполняемых бинарных файлов. К этому прилагается полная библиотека, но для запуска по-прежнему требуется Java.
В мае 2021 года приходит Scala 3, предлагающая простоту в синтаксисе. Можно написать код с помощью отступа, как это делает Python вместо объятий. Сейчас она необязательна, но всегда можно использовать классический синтаксис.
Характеристики Скалы
Нужно знать, что многие элементы языка, такие как, например, return или for, не работают так, как принято в предыдущих языках.
Синтаксис и конструкции:
- Функционал: функции - это значения .
- Объект-ориентированный: все значения являются объектами .
- Статически типизирован.
- Объявления переворачиваются относительно C: присваивается имя переменной, а затем определяется ее тип .
- Функция определяется оператором def, а заголовок похож на Pascal.
- Нет такого терминатора, как; в конце инструкций (но его можно добавить дополнительно).
- Определяется класс с заголовочным конструктором, что более лаконично. См. примеры.
- Черты являются интерфейсами, как в Java, но методы которых могут быть определены или нет. Когда ты используешь линию для завершения класса, ты должен определить методы, которых нет. Так что их действие зависит от контекста использования.
- Актеры - это объекты, которые работают в условиях конкуренции (в синхронном или асинхронном режиме) и взаимодействуют по сообщениям. Актера определяют по списку сообщений, которые он может получить. Он может реагировать на одно сообщение отправкой другого, поэтому может быть создана система обмена.
- Никакого перерыва и продолжения .
- Тип val эквивалентен константе, но его можно инициализировать с помощью переменной.
- Многие структуры коллекций: Список, Вектор, Набор, Карта, Seq, Pair, Тройная .
- XML-код можно включить в источник, как это делает язык Script.
- Scala 3 предлагает симулярный синтаксис языка Python.
Другие возможности:
- Анонимные функции.
- Функции первого порядка.
- Функция может содержать функции.
- Общие классы. В соответствии с
- одним условием устанавливается классовое поле для совпадающего шаблона, то есть для выбора класса из списка.
- Полиморфные методы. Аргументы могут менять тип.
- Расширяемый: в качестве оператора можно использовать метод.
- Абстракции.
- Вложенные функции.
- Регулярные выражения, определенные процессуальным кодом. и
- многие другие оригинальные характеристики...
Пример кода в Scala, показывать «Привет, мир!»:
object HelloWorld { def main(args: Array[String]) { println("Salut le Monde!") } }
Определить класс:
class voiture(vitesse:Integer, nom:String) { ... corps du constructeur et de la classe ... }
Зачем использовать Скалу
?Scala способствует постепенной эволюции программ во времени.
Код Scala может легко взаимодействовать с ранее существовавшим кодом Java. Он фактически компилируется в байт-коде Java. Таким образом, оба языка можно использовать в одной программе, так как Scala обеспечивает, в частности, преимущество большей краткости .
Scala позволяет легко обрабатывать документы XML.
Социальный сайт Twitter отказался от языка Ruby для бэкенда и запрограммировал свои услуги на Scala, чтобы воспользоваться эволюционным характером языка. Сайт постепенно наращивает аудиторию и со временем предлагает новые услуги, отсюда и потребность в языке, облегчающем расширение программ без их переписывания.
Инструменты и документы
- Ла Скала
Сайт языка. Загрузка компилятора и справочного руководства. - Геттинг стартовал
Как сделать и запустить простую программу. - Скастия
Онлайн-консоль для тестирования кода Scala. - Скаладекс
Каталог языковых библиотек. - Scala.js
Компилирует Scala в JavaScript 5.1. Возможно использование библиотек JS из Scala, но это требует преобразования типов и форматов, которые делают его сложным. - Твиттер и Скала
Интервью программистов социального сайта, реализовавших Scala.
С - помощью проекта Scala For Android можно выполнять приложения для Android с помощью Scala.