SlideShare a Scribd company logo
Never say no to
Зачем?
Free lunch is over 
Про scala за 3 минуты
• Статическая типизация(!)
• Платформы
  – Java
  – .Net
• Functional…
  – Функции высшего порядка
  – Хвостовая рекурсия
  – Отложенные вычисления
• Pattern matching всего на свете
• Компактный синтаксис(по сравнению с Java)
• Обобщенные синтаксические конструкции
Concurrency

• Actors
  – Идея взята из Erlang
• Immutabe values
• Concurrent collections
  – val doubled = list.par map(x => x * 2)
  – конечно надо быть осторожным
• Akka
  – Software transactional memory
  – futures
OOП?

• Есть конечно!
• Намного меньше boilerplate code чем в
  Java(покажу дальше)
• Нет множественного наследования
  – Зато есть traits
  – Это такие интерфейсы c частичной реализацией
• static Objects
Немного синтетики


def max(a,b) = if (a > b) a else b


class Person(val name: String, val age: Int) {
  require(name.length != 0) //will generate exception
  require(age > 0)
  def and(that: Person): Love = new Love(this, that)
}

val Mike = new Person(“Mike", 17)
val Jane = new Person("Jane", 23)
val love = Mike and Jane
//Java
import java.util.ArrayList;
…
Person[] people;
Person[] minors;
Person[] adults;
{
   ArrayList<Person> minorsList = new ArrayList<Person>();
   ArrayList<Person> adultsList = new ArrayList<Person>();
   for (int i = 0; i < people.length; i++)
      (people[i].age < 18 ? minorsList : adultsList)
         .add(people[i]);
   minors = minorsList.toArray(people);
   adults = adultsList.toArray(people);
}

//Scala
val people: Array[Person]
val (minors, adults) = people partition(_.age > 18)
Идустрии

• Trading platforms
• Financial modeling
• Simulation
  – domain-specific languages
• Web platforms
  – Play Framework
  – Lift
Компании

•   Twitter
•   Foursquare
•   Credit Suisse
•   LinkedIn
•   The Guardian
•   Sony, IBM, Nasa, Amazon etc…
Что есть у нас?
• Один боевой проект
• Распространяется по компании как зараза
  – Разговоры на кухне приобрели
    функциональный оттенок
  – 16 человек на момент презентации проходят
    курсы.
Что дальше?
• coursera.org “Functional programming in Scala” от создателя
  языка.
• Много действительно хороших книг

More Related Content

PDF
5 ds07 10 14 bai da sua a control theoretic approach v8-
PDF
8 ds 17024 phuong phap xu ly gia tri khoang theo cach tiep can dsgt da sua
PDF
7 cs18007 paper protein classify-vie-bcvt
PDF
4 ds07 10 15 bai anh huy da sua
PDF
6 ds1728 bcvt cntt bac-vu
PDF
Abap query
PPTX
Leyenda “un sueño hecho realidad”
PDF
05102015 Ημέρα Αθλητισμού
5 ds07 10 14 bai da sua a control theoretic approach v8-
8 ds 17024 phuong phap xu ly gia tri khoang theo cach tiep can dsgt da sua
7 cs18007 paper protein classify-vie-bcvt
4 ds07 10 15 bai anh huy da sua
6 ds1728 bcvt cntt bac-vu
Abap query
Leyenda “un sueño hecho realidad”
05102015 Ημέρα Αθλητισμού

Viewers also liked (7)

PDF
Fiqh cours
PPTX
Ppt comentario de imagen
PDF
Book comics
PPTX
Retórica visual.
DOC
penelitian mini
PDF
Construccion vivienda
PPS
Foaia Alba
Fiqh cours
Ppt comentario de imagen
Book comics
Retórica visual.
penelitian mini
Construccion vivienda
Foaia Alba
Ad

Similar to Scala in 10 minutes (20)

PDF
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
PPTX
Зачем нужна Scala?
PDF
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
PDF
Scala, SBT & Play! for Rapid Application Development
PDF
Язык программирования Scala / Владимир Успенский (TCS Bank)
PDF
Scala and LiftWeb presentation (Russian)
PDF
Scala
PDF
Lift, play, akka, rails part1
PDF
Scala Rock-Painting
PDF
Scala for Android Explained
PDF
Павел Павлов - Scala для профессионалов - Joker 2013
PPT
CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только
PPTX
Time to be reactive or not
PPTX
Андрей Кравец Тема: "Пришло время быть реактивным, или..?"
PDF
Scala for android
PDF
Scala: что, как и зачем?
PDF
Scala EE: Myth or Reality?
PPTX
Some Elements of Functional Porgamming Languages
PDF
PDF
functional patterns - dotnetconf'11
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Зачем нужна Scala?
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, SBT & Play! for Rapid Application Development
Язык программирования Scala / Владимир Успенский (TCS Bank)
Scala and LiftWeb presentation (Russian)
Scala
Lift, play, akka, rails part1
Scala Rock-Painting
Scala for Android Explained
Павел Павлов - Scala для профессионалов - Joker 2013
CodeFest 2011. Галако О. — О Scala и Lift для тех, кому мало Java, и не только
Time to be reactive or not
Андрей Кравец Тема: "Пришло время быть реактивным, или..?"
Scala for android
Scala: что, как и зачем?
Scala EE: Myth or Reality?
Some Elements of Functional Porgamming Languages
functional patterns - dotnetconf'11
Ad

Scala in 10 minutes

  • 3. Про scala за 3 минуты • Статическая типизация(!) • Платформы – Java – .Net • Functional… – Функции высшего порядка – Хвостовая рекурсия – Отложенные вычисления • Pattern matching всего на свете • Компактный синтаксис(по сравнению с Java) • Обобщенные синтаксические конструкции
  • 4. Concurrency • Actors – Идея взята из Erlang • Immutabe values • Concurrent collections – val doubled = list.par map(x => x * 2) – конечно надо быть осторожным • Akka – Software transactional memory – futures
  • 5. OOП? • Есть конечно! • Намного меньше boilerplate code чем в Java(покажу дальше) • Нет множественного наследования – Зато есть traits – Это такие интерфейсы c частичной реализацией • static Objects
  • 6. Немного синтетики def max(a,b) = if (a > b) a else b class Person(val name: String, val age: Int) { require(name.length != 0) //will generate exception require(age > 0) def and(that: Person): Love = new Love(this, that) } val Mike = new Person(“Mike", 17) val Jane = new Person("Jane", 23) val love = Mike and Jane
  • 7. //Java import java.util.ArrayList; … Person[] people; Person[] minors; Person[] adults; { ArrayList<Person> minorsList = new ArrayList<Person>(); ArrayList<Person> adultsList = new ArrayList<Person>(); for (int i = 0; i < people.length; i++) (people[i].age < 18 ? minorsList : adultsList) .add(people[i]); minors = minorsList.toArray(people); adults = adultsList.toArray(people); } //Scala val people: Array[Person] val (minors, adults) = people partition(_.age > 18)
  • 8. Идустрии • Trading platforms • Financial modeling • Simulation – domain-specific languages • Web platforms – Play Framework – Lift
  • 9. Компании • Twitter • Foursquare • Credit Suisse • LinkedIn • The Guardian • Sony, IBM, Nasa, Amazon etc…
  • 10. Что есть у нас? • Один боевой проект • Распространяется по компании как зараза – Разговоры на кухне приобрели функциональный оттенок – 16 человек на момент презентации проходят курсы.
  • 11. Что дальше? • coursera.org “Functional programming in Scala” от создателя языка. • Много действительно хороших книг