• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Dr scalalove: How I learned to stop worrying and love the functions
 

Dr scalalove: How I learned to stop worrying and love the functions

on

  • 724 views

n this introduction to Scala, I will demonstrate why I love Scala and why I think that you will too. You’ll learn why you don’t need to go from 0 to functions and how you can ease yourself into ...

n this introduction to Scala, I will demonstrate why I love Scala and why I think that you will too. You’ll learn why you don’t need to go from 0 to functions and how you can ease yourself into this language. I’ll show you some Scala, compare it to Java, and give you pointers on how to start your journey into this functional object-oriented language.

Statistics

Views

Total Views
724
Views on SlideShare
681
Embed Views
43

Actions

Likes
2
Downloads
4
Comments
0

1 Embed 43

https://twitter.com 43

Accessibility

Categories

Upload Details

Uploaded via as Adobe PDF

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Dr scalalove: How I learned to stop worrying and love the functions Dr scalalove: How I learned to stop worrying and love the functions Presentation Transcript

    • DR. SCALA LOVE Dianne Marsh Director of Engineering -- Cloud Tools, Netflix ScalaBay Meetup, Sept 2013 OR HOW I LEARNED TO STOP WORRYING AND LOVE FUNCTIONS
    • Dr. Strangelove, 1964 “If this thing turns out to be half as important as I think it will be, I think you’ll all be in line for some personal citations and promotions when this thing is over.”
    • What is Scala? Object-oriented + Functional Runs on JVM Build on Java expertise
    • Why Is it Scary? Early adopters scared folks away Lost elasticity of learning new programming languages Comfort zone
    • What’s the Gain? Modern language features Let compiler work for you!
    • REPL Interactive Interpreter Read Evaluate Print Loop
    • Type Inference val x = 5 val y = "Once upon a time" val l = List("This", "is", "a", "List")
    • Methods def squareIt(x: Int) = x*x
    • Anatomy of a Case Class case class Camera(width: Int, height: Int) { def megapixels = (width * height) /1000000.0 def HD = megapixels > 1.08 } val camera = new Camera(1024, 768) camera.megapixels is 0.786432 camera.HD is false camera is "Camera(1024,768)"
    • Reducing Boilerplate class Dimension(var height:Int, var width:Int) val c = new Dimension(5,7) c.height is 5 c.height = 10 c.height is 10 c.width = 19 c.width is 19
    • Pattern Matching def batteryIndicator(batteryLevel: Int) = batteryLevel match { case l if (l > 60) => "GREEN" case l if (l > 20) => "YELLOW" case _ => "RED" }
    • Traits trait Digital { def batteryIndicator(batteryLevel: Int) = … } val d = new Camera(1024, 768) with Digital d.batteryIndicator(56) is "YELLOW"
    • Functions are Objects val v = Vector(19, 1, 7, 3, 2, 14) v.sorted is Vector(1, 2, 3, 7, 14, 19) v.sortWith((i, j) => j < i) is Vector(19, 14, 7, 3, 2, 1)
    • It’s OK To use Scala as a Better Java
    • Reaching into Java import org.apache.commons.math._ import stat.regression.SimpleRegression val r = new SimpleRegression r.addData(1, 1) r.addData(2, 1.1) r.addData(3, 0.9) r.addData(4, 1.2) r.getN is 4 r.predict(6) is 1.19
    • It’s OK To be verbose
    • Verbose Version // Euler1.scala val nums = 3 until 1000 val somenums = nums.filter (x => (x % 3 == 0 || x % 5 ==0)) var sum = 0 somenums.foreach(sum += _)
    • Find the Sweet Spot // Euler2.scala val nums = 3 until 1000 val somenums = nums filter (x => (x % 3 == 0 || x % 5 ==0)) val sum = somenums reduceLeft {(x:Int,y:Int) => x + y}
    • More than 1 way ... // Euler3.scala val nums = 3 until 1000 val somenums = nums filter (x => (x % 3 == 0 || x % 5 ==0)) val sum = somenums.foldLeft(0)(_+_)
    • Back off if it’s too much // Euler4.scala val nums = 3 until 1000 val somenums = nums filter (x => (x % 3 == 0 || x % 5 ==0)) (0/:somenums)(_+_)
    • Code should be readable To your team To your customers To yourself, in 6 months
    • Killer Apps in Scala Compute intensive Concurrency Reactive applications ● Resilient ● Scalable ● Interactive, single-page ● Event Driven
    • Learning Scala Koans -- scalakoans.org Case Studies at Typesafe Blogs Books
    • Practicing Solve Euler problems Use ScalaTest Use for non-production code
    • Contact Info @dmarsh dmarsh@netflix.com We are always hiring ...