This presentation is devoted to Scala programming language, its perks and disadvantages, elegant solutions and hidden traps.
This presentation by Dmytro Mantula (Lead Software Engineer, GlobalLogic) was delivered at JEEConf (Kyiv) on May 23, 2015.
5. Scala? В коммерческом использовании?
Java? Java 8?
“Functional Programming in Scala” @ Coursera
Знакомимся:
6. Scala? В коммерческом использовании?
Java? Java 8?
“Functional Programming in Scala” @ Coursera
“Reactive Programming” @ Coursera
Знакомимся:
7. Scala? В коммерческом использовании?
Java? Java 8?
“Functional Programming in Scala” @ Coursera
“Reactive Programming” @ Coursera
Кто понимает, что такое ФП?
Знакомимся:
8. Scala? В коммерческом использовании?
Java? Java 8?
“Functional Programming in Scala” @ Coursera
“Reactive Programming” @ Coursera
Кто понимает, что такое ФП?
Что знает, что такое сайд-эффект?
Знакомимся:
9. Scala? В коммерческом использовании?
Java? Java 8?
“Functional Programming in Scala” @ Coursera
“Reactive Programming” @ Coursera
Кто понимает, что такое ФП?
Что знает, что такое сайд-эффект?
Что знает, что такое гомотопические группы?
Знакомимся:
10. Scala? В коммерческом использовании?
Java? Java 8?
“Functional Programming in Scala” @ Coursera
“Reactive Programming” @ Coursera
Кто понимает, что такое ФП?
Что знает, что такое сайд-эффект?
Что знает, что такое гомотопические группы?
Знакомимся:
11. Знакомимся:
Коммерческий опыт Java с 2004 года:
web, enterprise, J2ME, Android,
embedded.
“Functional Programming in Scala” @ Coursera (2012)
2013–Present – Scala-based back-end
24. Scala
If I were to pick a language today other than Java,
it would be Scala.
(James Gosling, creator of Java, 2011)
I can honestly say if someone had shown me the
“Programming in Scala” book back in 2003, I'd
probably never created Groovy.
(James Strachan, creator of Groovy, 2009)
25. Scala
Scala sets a new standard against which future
languages will be measured.
(Neal Gafter, Java language designer)
31. А что нам предлагает ФП?
абстракции более высокого уровня
лучшая модулярность
короче код
менее error-prone
выше продуктивность разработки
32. А что нам предлагает ФП?
абстракции более высокого уровня
лучшая модулярность
короче код
менее error-prone
выше продуктивность разработки
Но ведь ФП уже 50 лет…
33. А что нам предлагает ФП?
абстракции более высокого уровня
лучшая модулярность
короче код
менее error-prone
выше продуктивность разработки
Но ведь ФП уже 50 лет…
ООП предлагало то же самое 30 лет назад!
35. Появился повод!
рост требований к hardware
производительность ЦП не
увеличивается – увеличивается
количество ядер ЦП
в существующих программных
моделях локи не скейлятся
нужны абстракции более высокого
уровня, где parallel ≈ distributed
57. Scala
Прежде чем начать программировать на Java,
нужно читать книгу“Effective Programming in
Java”. Почему бы просто не создать
эффективную Java? И она создана – это Scala!
(Dr. Venkat Subramaniam)
58. Арность-0: скобки
def foo = …
val f = foo
def foo() = …
val f = foo
def foo = …
val f = foo()
def foo() = …
val f = foo()
59. Арность-0: скобки
def foo = …
val f = foo
def foo() = …
val f = foo
def foo = …
val f = foo()
def foo() = …
val f = foo()Won’t compile
60. Арность-0: скобки
def foo = …
val f = foo
def foo() = …
val f = foo
def foo = …
val f = foo()
def foo() = …
val f = foo()Won’t compile
Side-effects here
No side-effects here
61. Арность-0: скобки
def foo = …
val f = foo
def foo() = …
val f = foo
def foo = …
val f = foo()
def foo() = …
val f = foo()Won’t compile
Side-effects here
No side-effects here ?
65. Арность-0: скобки
def foo = …
val f = foo
def foo() = …
val f = foo
def foo = …
val f = foo()
def foo() = …
val f = foo()Won’t compile
Side-effects here
No side-effects here
66. Арность-0: скобки
def foo = …
val f = foo
def foo() = …
val f = foo
def foo = …
val f = foo()
def foo() = …
val f = foo()Won’t compile
Side-effects here
No side-effects here
Bad practice
67. Арность-0: скобки
def foo = …
val f = foo
def foo() = …
val f = foo
def foo = …
val f = foo()
def foo() = …
val f = foo()
Side-effects here
No side-effects here
WILL compile !!!
Bad practice
71. Арность-0: скобки
def foo = …
val f = foo
def foo() = …
val f = foo
def foo = …
val f = foo()
def foo() = …
val f = foo()Won’t compile
Side-effects here
No side-effects here
Bad practice
103. Метод Spaced Repetitions:
что запоминаю я
Упражнения из книг и лекций
Любые проблемы, на которые я потратил
больше часа и которые можно ясно
сформулировать
104. Метод Spaced Repetitions:
что запоминаю я
Упражнения из книг и лекций
Любые проблемы, на которые я потратил
больше часа и которые можно ясно
сформулировать
Wow-находки
105. Метод Spaced Repetitions:
что запоминаю я
Упражнения из книг и лекций
Любые проблемы, на которые я потратил
больше часа и которые можно ясно
сформулировать
Wow-находки
Что угодно!