Scala
Материал из Xgu.ru
Scala — мультипарадигменный язык программирования, с сильной поддержкой функциональной и объектно-ориентированной парадигм, предназначенный для использования поверх JVM. Обладает многими чертами присущими ML-языкам, Lisp, Haskell с одной стороны и C и Java с другой. Создан Мартином Одерским в 2003 году и с тех пор постоянно совершенствуется.
Scala широко используется во многих коммерчески-успешных компаниях, в том числе в LinkedIn[1], Foursquare[2] и множество других, прежде всего стартапов[3].Наиболее известным пользователем Scala является Twitter[4][5].
Отличительные характеристики/преимущества языка:
- Доступ к огромному количеству существующих Java-библиотек;
- Большое количество библиотек, написанных уже для Scala и на Scala;
- Сравнительно высокая скорость (в 2-3 медленнее Си[6][7]);
- Большая развитая экосистема;
- Лёгкость создания DSL (Domain Specific language);
- Развитая система типов;
- Используется в ряде мощных Интернет-компаний (Twitter, LinkedIn, Foursquare);
- Наиболее распространнёный в промышленности функциональный язык программирования;
- Существует ряд развитых web-фреймворков, например, Play, Scalatra и ряд других;
- Существует ряд развитых фреймворков для использования с Hadoop, например, Scalding;
- Существует реализация системы акторов по принципу Эрланга (Akka);
- Хорошая поддержка графического интерфейс (Swing, JavaFX);
- Хорошая сборочная система, SBT;
- Есть хорошая поддержка Eclipse (плюс для тех кто использует Eclipse, остальным всё равно);
- Есть библиотека Scalaz, которая позволяет писать на Scala как на действительно функциональном языке программирования.
Минусами (относительными, субъективными) языка можно назвать:
- Сложность, сравнительно высокий порог вхождения;
- Перегруженность языка (в каком-то смысле напоминает Perl для JVM, хотя, конечно же, это не так).
Содержание |
[править] Web- и REST-фреймворки
Web-фреймворки:
- Lift
- Play
- Xitrum
REST-фреймворки:
- Unfiltered
- Scalatra
- Spray
- BlueEyes
- Circumflex
Особое внимание стоит обратить на BlueEyes.
Ещё на эту тему:
[править] Платформы
Основной платформой языка Scala является JVM.
Кроме этого существует Scala.js, компилятор Scala в JavaScript.
Были попытки заставить Scala работать на LLVM, но они так и остались в очень сыром состоянии
Древние версии Scala так же работали на .Net.
[править] Вопросы и ответы
[править] Полезные мелочи
[править] Подсветка синтаксиса Scala в Vim
mkdir -p ~/.vim/{ftdetect,indent,syntax} && for d in ftdetect indent syntax ; do curl -o ~/.vim/$d/scala.vim https://raw.github.com/scala/scala-dist/master/tool-support/src/vim/$d/scala.vim; done
Источник: [1].
[править] Дополнительная информация
Руководства и учебники:
- First Steps to Scala (англ.)
- Learning Scala (англ.)
- Programming Scala (англ.) — книга Programming Scala в открытом доступе, 2008
- Scala School (англ.) — лекции по Scala для инженеров Twitter'а
- Effective Scala (англ.) — ещё от разработчиков Twitter'а
- http://docs.scala-lang.org/tutorials/
- Books on Scala (англ.) — книги по Scala, список и краткое описание
Scala для функционального программирования (в основном всё связано со Scalaz):
- scalaz/scalaz (англ.) — библиотека scalaz
- Good scalaz introduction — обсуждение по теме, что почитать про scalaz
- learning Scalaz (англ.) — фрагмент книги, посвящённой библиотеке scalaz, библиотеке для функционального программирования на Scala
- Functional Programming in Scala (англ.) — книга по функциональному программированию на Scala, пока что не готова
- My Take on Haskell vs Scala (англ.) — небольшое сравнение Haskell и Scala
Различные вопросы, ответы и обсуждения:
Сравнение языков (всё познаётся в сравнении):
- Language Compare F#, Ocaml, Scala, Clojure, Ruby and Haskell - Simple AST example
- http://hyperpolyglot.org/ml
- Groovy vs Scala vs JRuby vs Clojure vs Jython
Критика и обсуждение слабых мест:
Онлайн-службы:
- www.simplyscala.com (англ.) — оболочка Scala в Web-браузере
[править] Примечания
- ↑ http://www.thedailybeast.com/blogs-and-stories/2010-09-29/linkedin-signal-combines-twitter-with-the-resume-site/
- ↑ http://www.scala-lang.org/node/5130
- ↑ https://www.quora.com/Scala/Which-startups-are-using-Scala-as-their-main-language
- ↑ http://www.artima.com/scalazine/articles/twitter_on_scala.html
- ↑ http://www.readwriteweb.com/hack/2011/07/twitter-java-scala.php
- ↑ http://benchmarksgame.alioth.debian.org/u32/which-programs-are-fastest.php
- ↑ http://readwrite.com/2011/06/06/cpp-go-java-scala-performance-benchmark#awesm=~oj0J4QpRSVHDf8