English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Введение в Scala

Scala - это аббревиатура от Scalable Language, это много范式ный языков программирования

Martin Odersky из Федеральной политехнической школы Лозанны (EPFL) начал проектировать Scala в 2001 году на основе работы над Funnel.

Funnel - это языковая программа, которая сочетает в себе идеи функционального программирования и Petri-сетей.

Рабочий опыт Odersky предшествовал Generic Java и javac (Sun Java компилятор). Scala для платформы Java был выпущен в конце 2003 года/начале 2004 года. Scala для платформы .NET был выпущен в июне 2004 года. Второй выпуск языка, v2.0, был выпущен в марте 2006 года.

К сентябрю 2009 года последняя версия была версии 2.7.6. Ожидаемые характеристики Scala 2.8 включают переработанную библиотеку Scala (Scala collections library), именованные параметры методов и параметры по умолчанию, объектные пакеты (package object) и continuation.

В апреле 2009 года Twitter объявил, что они уже перевели大部分 своих backend-программ с Ruby на Scala, и намерены продолжить этот процесс. Кроме того, Wattzon公开宣布, его платформа целиком написана на основе инфраструктуры Scala.

Характеристики Scala

Объектно-ориентированные характеристики

Scala является чистым объектно-ориентированным языком, каждый значений является объектом. Тип данных объекта и поведение описываются классами и特质ами.

Расширение механизма абстракции класса имеет два пути: один путь - это наследование подкласса, другой путь - гибкая система混айн. Эти два пути могут избежать множества проблем с множественным наследованием.

Функциональное программирование

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

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

Статический тип

Scala имеет типовую систему, которая гарантирует безопасность и一致性 кода через проверку в време...

  • Генерические классы

  • Ко_variance и contra_variance

  • Метка

  • Ограничения по верхним и нижним пределам для параметров типов

  • Классы и абстрактные типы как члены объекта

  • Композитные типы

  • Тип явно указывается при ссылке на себя

  • Вид

  • Полиморфные методы

Расширяемость

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

  • Любой метод может использоваться в качестве префиксного или постфиксного оператора.

  • Контурные функции могут автоматически создаваться на основе ожидаемого типа.

Конкурентоспособность

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

Кто использует Scala

  • В апреле 2009 года Twitter объявил, что они уже迁移大部分backend с Ruby на Scala, и также планируют迁移其余部分.

  • Кроме того, Wattzon公开宣布,их целая платформа написана на основе инфраструктуры Scala.

  • UBS Group использует Scala в своих продуктах.

  • Coursera использует Scala в качестве серверного языка.

Веб-фреймворки Scala

Ниже перечислены 3 самых популярных веб-фреймворков для Scala на текущий момент: