SlideShare a Scribd company logo
1 of 11
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

Viewers also liked

Viewers also liked (7)

Fiqh cours
Fiqh coursFiqh cours
Fiqh cours
 
Ppt comentario de imagen
Ppt comentario de imagenPpt comentario de imagen
Ppt comentario de imagen
 
Book comics
Book comicsBook comics
Book comics
 
Retórica visual.
Retórica visual.Retórica visual.
Retórica visual.
 
penelitian mini
penelitian minipenelitian mini
penelitian mini
 
Construccion vivienda
Construccion viviendaConstruccion vivienda
Construccion vivienda
 
Foaia Alba
Foaia AlbaFoaia Alba
Foaia Alba
 

Similar to Scala in 10 minutes

Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?Vasil Remeniuk
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentAnton Kirillov
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Magneta AI
 
Scala: что, как и зачем?
Scala: что, как и зачем?Scala: что, как и зачем?
Scala: что, как и зачем?Roman Timushev
 
Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)Alex Ott
 
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Dmitry Stropalov
 
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)ScalaNsk
 
CodeFest 2013. Бурмако Е. — Макросы в Скале
CodeFest 2013. Бурмако Е. — Макросы в СкалеCodeFest 2013. Бурмако Е. — Макросы в Скале
CodeFest 2013. Бурмако Е. — Макросы в СкалеCodeFest
 
Lift, play, akka, rails part1
Lift, play, akka, rails part1Lift, play, akka, rails part1
Lift, play, akka, rails part1Eduard Antsupov
 
Новости Global summit 2015
Новости Global summit 2015Новости Global summit 2015
Новости Global summit 2015Timur Safin
 
automation is iOS development
automation is iOS developmentautomation is iOS development
automation is iOS developmentIvan Trifonov
 
Егор Львовский — «Кеширование на клиенте и сервере»
Егор Львовский — «Кеширование на клиенте и сервере»Егор Львовский — «Кеширование на клиенте и сервере»
Егор Львовский — «Кеширование на клиенте и сервере»Yandex
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3Technopark
 
14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк SparkRoman Brovko
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Yandex
 

Similar to Scala in 10 minutes (20)

Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
 
Scala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application DevelopmentScala, SBT & Play! for Rapid Application Development
Scala, SBT & Play! for Rapid Application Development
 
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
Scala, Play Framework и SBT для быстрого прототипирования и разработки веб-пр...
 
Scala: что, как и зачем?
Scala: что, как и зачем?Scala: что, как и зачем?
Scala: что, как и зачем?
 
Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)Clojure: Lisp for the modern world (русская версия)
Clojure: Lisp for the modern world (русская версия)
 
Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)Scala and LiftWeb presentation (Russian)
Scala and LiftWeb presentation (Russian)
 
Scala для всех (РИФ 2015)
Scala для всех (РИФ 2015)Scala для всех (РИФ 2015)
Scala для всех (РИФ 2015)
 
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
Павел Павлов - Scala для Java программистов (JavaDay Nsk 28.11.2013)
 
Scala for android
Scala for androidScala for android
Scala for android
 
CodeFest 2013. Бурмако Е. — Макросы в Скале
CodeFest 2013. Бурмако Е. — Макросы в СкалеCodeFest 2013. Бурмако Е. — Макросы в Скале
CodeFest 2013. Бурмако Е. — Макросы в Скале
 
Lift, play, akka, rails part1
Lift, play, akka, rails part1Lift, play, akka, rails part1
Lift, play, akka, rails part1
 
Scala: introduction
Scala: introductionScala: introduction
Scala: introduction
 
Новости Global summit 2015
Новости Global summit 2015Новости Global summit 2015
Новости Global summit 2015
 
automation is iOS development
automation is iOS developmentautomation is iOS development
automation is iOS development
 
Scala - my path
Scala - my pathScala - my path
Scala - my path
 
Data analysis in R
Data analysis in RData analysis in R
Data analysis in R
 
Егор Львовский — «Кеширование на клиенте и сервере»
Егор Львовский — «Кеширование на клиенте и сервере»Егор Львовский — «Кеширование на клиенте и сервере»
Егор Львовский — «Кеширование на клиенте и сервере»
 
Java осень 2014 занятие 3
Java осень 2014 занятие 3Java осень 2014 занятие 3
Java осень 2014 занятие 3
 
14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark14 - Hadoop. Фреймворк Spark
14 - Hadoop. Фреймворк Spark
 
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
Руслан Гроховецкий "Как Python стал делать погоду в Яндексе"
 

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” от создателя языка. • Много действительно хороших книг