Что такое «убийственное приложение» в Scala? - PullRequest
9 голосов
/ 31 октября 2010

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

Может кто-нибудь предложить пример приложения, которое действительно подойдет для разработкисо Scala, в отличие от Java?

Ответы [ 5 ]

8 голосов
/ 31 октября 2010

Я думаю, компании, перечисленные на Scala на предприятии на scala-lang.org, являются примерами, которыми сообщество может гордиться.Они используют Scala для создания распределенных масштабируемых приложений с высокой степенью параллелизма (и высокой нагрузки) с выразительными, безопасными для типов облегченными API-интерфейсами, большими возможностями для повторного использования кода и создания внутренних DSL, производительностью разработки и по многим другим причинам.Просто дать несколько имен:

3 голосов
/ 01 ноября 2010

Ответ «все».Scala - это просто расширенный набор Java, поэтому вы экономите время и силы и ничего не теряете, кроме ограничений Java.

3 голосов
/ 31 октября 2010

Все, что в значительной степени распараллелено и использует идиому Actors от Erlang, на мой взгляд, было бы "убийцей".

2 голосов
/ 31 октября 2010
0 голосов
/ 31 октября 2010

Это такой глупый вопрос.Scala - это полный тьюринговый язык: следовательно, он эквивалентен тому, что может быть разработано для любого другого языка TC.

Он имеет доступ ко всем библиотекам JVM (включая написанные на Java) и, следовательно, имеет веткудо с точки зрения доступа к базам данных, медиа API, сетей и так далее и так далее и тому подобное .Будучи языком JVM, он имеет преимущество однократной записи в любом месте (WORA).

Но, конечно, в Java есть и такие!Так в чем же сила Скалы?Ну, ясность, выразительность, ремонтопригодность, расширяемость и так далее и так далее и тому подобное .

И на какое приложение вы указываете, что вы убийца?Ну, все они конечно!Есть несколько выдумок!

def fibs = (0, 1).repeat[Stream].map { case (a, b) => b -> (a+b) } map(_._1)

или:

lazy val fibs: Stream[Int] = 0 ::# 
  ( 1 ::# 
    fib.zip(fibs.tail).map { case (a,b) => a + b)))

PS.Единственное, для чего это не очень хорошо, это чрезвычайно близкое к металлу, программирование с низкой задержкой.И это тоже проникает в эту область!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...