Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Few Things on Scala

Few Things on Scala

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

Sorami Hisamoto

July 09, 2013
Tweet

More Decks by Sorami Hisamoto

Other Decks in Programming

Transcript

  1. For me to digest, and to introduce some of the

    contents from l'VODUJPOBM1SPHSBNNJOH1SJODJQMFTJO4DBMBz  a marvelous course by Martin Odersky (plus alpha).
  2. For me to digest, and to introduce some of the

    contents from l'VODUJPOBM1SPHSBNNJOH1SJODJQMFTJO4DBMBz  a marvelous course by Martin Odersky (plus alpha). https://www.coursera.org/course/progfun
  3. For me to digest, and to introduce some of the

    contents from l'VODUJPOBM1SPHSBNNJOH1SJODJQMFTJO4DBMBz  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!
  4. “Scala is so cool that nobody knows it.” Image: -

    Cal Henderson http://www.youtube.com/watch?v=i6Fr65PFqfk
  5. “I call Scala an old wine in a new bottle.”

    Image: - Venkat Subramaniam http://www.youtube.com/watch?v=LH75sJAR0hc
  6. Image: Programming Paradigms ‣ Imperative ໋ྩܕ ‣ Functional ؔ਺ܕ ‣

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

    Computers. Memory cells, load/store instructions, etc...
  8. 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.
  9. Image: How can we avoid conceptualizing programs word by word?

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

    High-level abstractions: ideally, develop theories of collections, shapes, strings, ... Let’s concentrate on defining theories for operators 
 expressed as functions.
  11. 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)
  12. Image: Functional Programming Restricted sense: programming without mutable variables, assignments,

    loops, and other imperative control structures. Wider sense: Focusing on the functions.
  13. Image: Don't need to worry about thread safety. ‣ No

    side effects
 ‣ Assignment-less

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

    side effects
 Multiple calls. 
 Support concurrency. ‣ Assignment-less

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

    side effects
 ‣ Referential transparency
 Multiple calls. 
 Support concurrency. ‣ Assignment-less

  16. 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

  17. 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 first-class, ... ‣ Assignment-less

  18. 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
  19. ‣ 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 fingers.”
 “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
  20. “ ... 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
  21. “ 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
  22. “ If I were to pick a language to use

    today other than Java, it would be Scala. ” - James Gosling, the father of Java Image:
  23. Sounds good, but it is also ... a complex language.

    a ‘kitchen sink language’. Image:
  24. “ 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
  25. giter8 A command line tool to apply templates defined on

    github. https://github.com/n8han/giter8 sbt A build tool. http://www.scala-sbt.org/ Image:
  26. Image: Scalala - developed by Daniel Ramage, 
 who used

    to be under Chris Manning. Natural Language Processing  & Machine Learning?
  27. 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?
  28. 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?
  29. 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?
  30. “for” is powerful in Scala. (For more usage, refer to

    “Programming in Scala” Chapter 7.) ɾ ɾ ɾ
  31. ‣ 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:
  32. Iterate until the guess is 
 good enough. Improve the

    guess
 by taking mean of
 x and guess.
  33. Note that a and b are unchanged. These are special

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

    cases of for different values of f . Can we factor out the common pattern?
  35. 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.
  36. Image: Number x is called a fixed point of a

    function f if f(x) = x. For some f, we can locate the fixed points by repetitive way: x, f(x), f(f(x)), f(f(f(x))), ... until the value does not vary anymore.
  37. Image: Now, sqrt(x) = y such that y*y = x

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

    . Or, sqrt(x) = y such that y = x /y . Consequently, sqrt(x) is a fixed point of y → x /y .
  39. “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/