Sorami Hisamoto
July 09, 2013
170

# Few Things on Scala

Original presentation at Computational Linguistics Lab, Nara Institute of Science and Technology.

July 09, 2013

## Transcript

1. ### Few things on Scala ͍ΒͪͷͨΊͷ4DBMBೖ໳ Image: typesafe.com Sorami Hisamoto 09

July 2013 @ PG
2. ### For me to digest, and to introduce some of the

contents from l'VODUJPOBM1SPHSBNNJOH1SJODJQMFTJO4DBMBz  a marvelous course by Martin Odersky (plus alpha).
3. ### For me to digest, and to introduce some of the

contents from l'VODUJPOBM1SPHSBNNJOH1SJODJQMFTJO4DBMBz  a marvelous course by Martin Odersky (plus alpha). https://www.coursera.org/course/progfun
4. ### For me to digest, and to introduce some of the

contents from l'VODUJPOBM1SPHSBNNJOH1SJODJQMFTJO4DBMBz  a marvelous course by Martin Odersky (plus alpha). https://www.coursera.org/course/progfun Disclaimar I’m just a novice. Watch the lectures by yourself!

8. ### Image: Programming Paradigms ‣ Imperative ໋ྩܕ ‣ Functional ؔ਺ܕ ‣

Logic ࿦ཧϓϩάϥϛϯά
9. ### Image: Programming Paradigms ‣ Imperative ໋ྩܕ ‣ Functional ؔ਺ܕ ‣

Logic ࿦ཧϓϩάϥϛϯά  Orthogonal to Object Oriented Programming.
10. ### Image: ij There's a strong correspondence between Imperative Programs and

Computers. Memory cells, load/store instructions, etc...
11. ### Image: ij There's a strong correspondence between Imperative Programs and

Computers. Memory cells, load/store instructions, etc... Pure imperative programming   is limited by the "Von Neumann" bottleneck.

13. ### Image: How can we avoid conceptualizing programs word by word?

High-level abstractions: ideally, develop theories of collections, shapes, strings, ...
14. ### Image: How can we avoid conceptualizing programs word by word?

High-level abstractions: ideally, develop theories of collections, shapes, strings, ... Let’s concentrate on deﬁning theories for operators   expressed as functions.
15. ### Image: Theory: data types & operations. Normally, a theory does

not describe mutations.
16. ### Image: Theory: data types & operations. Normally, a theory does

not describe mutations. e.g. (a*x + b) + (c*x + d) = (a+c)*x + (b+d)
17. ### Image: Functional Programming Restricted sense: programming without mutable variables, assignments,

loops, and other imperative control structures. Wider sense: Focusing on the functions.

20. ### Image: Don't need to worry about thread safety. ‣ No

side effects  ‣ Assignment-less
21. ### Image: Don't need to worry about thread safety. ‣ No

side effects  Multiple calls.   Support concurrency. ‣ Assignment-less
22. ### Image: Don't need to worry about thread safety. ‣ No

side effects  ‣ Referential transparency  Multiple calls.   Support concurrency. ‣ Assignment-less
23. ### Image: Don't need to worry about thread safety. ‣ No

side effects  ‣ Referential transparency  Multiple calls.   Support concurrency. Can move code up n' down.   Can distribute to multicore. ‣ Assignment-less
24. ### Image: Don't need to worry about thread safety. ‣ No

side effects  ‣ Referential transparency  Multiple calls.   Support concurrency. Can move code up n' down.   Can distribute to multicore. ‣ Functions are ﬁrst-class, ... ‣ Assignment-less

27. ### Image: ‣ 1959 Lisp ‣ 1975-77 ML, FP, Scheme ‣

1978 Smalltalk ‣ 1986 Standard ML ‣ 1990 Haskell, Earlang ‣ 1999 XSLT ‣ 2000 OCaml ‣ 2003 Scala, XQuery ‣ 2005 F# ‣ 2007 Clojure

29. ### ‣ Includes full support of functional programming.  Currying, pattern matching,

lazy evaluation, tail recursion, immutability, etc. ‣ Static typing.  “In Java, when they said typing they meant your ﬁngers.”  “You type less, because it is more typed.   In a language that is typed less, you type more.”  - V. Subramaniam http://www.youtube.com/watch?v=LH75sJAR0hc Image: OO + FP

31. ### “ ... if someone had shown me the Programming in

Scala book [...] back in 2003 I'd probably have never created Groovy. ” - James Strachan, the creator of Groovy  http://macstrac.blogspot.jp/2009/04/  scala-as-long-term-replacement-for.html
32. ### “ No other language on the JVM seems as capable

of being a ‘replacement of Java’ as Scala, and the momentum behind Scala is now unquestionable. ” - Charles Nutter, the lead developer of JRuby http://blog.headius.com/2009/04/future-part-one.html
33. ### “ If I were to pick a language to use

today other than Java, it would be Scala. ” - James Gosling, the father of Java Image:

35. ### Sounds good, but it is also ... a complex language.

a ‘kitchen sink language’. Image:
36. ### “ The most depressing thing on Scala is [...] most

people pick up Scala as ‘Java with more concise syntax’. ”  - James Gosling https://twitter.com/akarazniewicz/status/11353944609521664

41. ### giter8 A command line tool to apply templates deﬁned on

github. https://github.com/n8han/giter8 sbt A build tool. http://www.scala-sbt.org/ Image:

43. ### Image: Scalala - developed by Daniel Ramage,   who used

to be under Chris Manning. Natural Language Processing  & Machine Learning?
44. ### Image: Scalala - developed by Daniel Ramage,   who used

to be under Chris Manning. Other libraries: Breeze, OptiML, FACTORIE, and more. Natural Language Processing  & Machine Learning?
45. ### Image: Scalala - developed by Daniel Ramage,   who used

to be under Chris Manning. Other libraries: Breeze, OptiML, FACTORIE, and more. “Scala and Machine Learning with Andrew McCallum”  http://www.youtube.com/watch?v=DkRLTToCw-0 Natural Language Processing  & Machine Learning?
46. ### Image: Scalala - developed by Daniel Ramage,   who used

to be under Chris Manning. Other libraries: Breeze, OptiML, FACTORIE, and more. “Scala and Machine Learning with Andrew McCallum”  http://www.youtube.com/watch?v=DkRLTToCw-0 NAACL2013 “Tagger in 2hrs” paper - implementation in Scala.  https://github.com/dhgarrette/low-resource-pos-tagging-2013 Natural Language Processing  & Machine Learning?

51. ### “for” is powerful in Scala. (For more usage, refer to

“Programming in Scala” Chapter 7.) ɾ ɾ ɾ

53. ### ‣ To compute sqrt(x), ‣ Start with initial estimate y

(say, 1). ‣ Repeatedly improve the estimate   by taking the mean of y and x/y. Image:

55. ### Iterate until the guess is   good enough. Improve the

guess  by taking mean of  x and guess.

59. ### Note that a and b are unchanged. These are special

cases of for different values of f .
60. ### Note that a and b are unchanged. These are special

cases of for different values of f . Can we factor out the common pattern?

71. ### Function returning function. Currying Transforming a function that takes multiple

arguments in such a way that it can be called as a chain of functions, each with a single argument.

73. ### Image: Number x is called a ﬁxed point of a

function f if f(x) = x.
74. ### Image: Number x is called a ﬁxed point of a

function f if f(x) = x. For some f, we can locate the ﬁxed points by repetitive way: x, f(x), f(f(x)), f(f(f(x))), ... until the value does not vary anymore.

.
76. ### Image: Now, sqrt(x) = y such that y*y = x

. Or, sqrt(x) = y such that y = x /y .
77. ### Image: Now, sqrt(x) = y such that y*y = x

. Or, sqrt(x) = y such that y = x /y . Consequently, sqrt(x) is a ﬁxed point of y → x /y .

90. ### Image: (Time’s up) See Coursera week 3 https://class.coursera.org/progfun-002/lecture/index - Class

hierarchies - Polymorphism, etc.

92. ### “Why Scala?” Epic. Just watch it.  Venkat Subramaniam. www.youtube.com/watch?v=LH75sJAR0hc  Image:

“Functional Programming Principles in Scala” A bliss online course.  Martin Odersky. www.coursera.org/course/progfun  Programming in Scala” The Bible, by the creator himself.  Martin Odersky, Lex Spoon, & Bill Venners.  Programming Scala” An O’Reilly book. First part publicly available online.  Dean Wampler & Alex Payne. shop.oreilly.com/product/9780596155964.do  “Pragmatic Real-World Scala” A nice overview presentation by Typesafe CTO.  Jonas Bonér. www.slideshare.net/jboner/