Iasi code camp 20 april 2013 iulian dogariu - scala

39
Level up your Java Iulian Dogariu Ness Technologies 20 April 2013

Transcript of Iasi code camp 20 april 2013 iulian dogariu - scala

Page 1: Iasi code camp 20 april 2013   iulian dogariu - scala

Level up your Java

Iulian DogariuNess Technologies

20 April 2013

Page 2: Iasi code camp 20 april 2013   iulian dogariu - scala
Page 3: Iasi code camp 20 april 2013   iulian dogariu - scala

Why Learn Yet Another Language?

Page 4: Iasi code camp 20 april 2013   iulian dogariu - scala

Why Learn Yet Another Language?

Page 5: Iasi code camp 20 april 2013   iulian dogariu - scala

Scala

• Functional style programming

• Parallelism

• Concise code

Page 6: Iasi code camp 20 april 2013   iulian dogariu - scala

Psycho therapy time !

http://www.youtube.com/watch?v=GlFU0C4YV4o&hd=1

Video demo

Page 7: Iasi code camp 20 april 2013   iulian dogariu - scala

A taste of Scala

http://www.youtube.com/watch?v=GWl4jGMojr8&hd=1

Video demo

Page 8: Iasi code camp 20 april 2013   iulian dogariu - scala

Functional style programming

Video demos

http://www.youtube.com/watch?v=rn7BETTPwBM&hd=1

http://www.youtube.com/watch?v=35ug8iflmjE&hd=1

Page 9: Iasi code camp 20 april 2013   iulian dogariu - scala

“Smaller and more general modules can be reused more widely, easing subsequentprogramming.

This explains why functional programs are so much smaller and easier to write than conventional ones.”

John HughesWhy Functional Programming Matters

Page 10: Iasi code camp 20 april 2013   iulian dogariu - scala

12Average # of lines of code per day per programmer

(Fred Brooks – „The Mythical Man Month”)

No matter what programming language !

Page 11: Iasi code camp 20 april 2013   iulian dogariu - scala

Not just a tool …

Page 12: Iasi code camp 20 april 2013   iulian dogariu - scala

… but a medium of expression

XXVIII 28

Page 13: Iasi code camp 20 april 2013   iulian dogariu - scala

Let’s manipulate symbols1372 ÷ 28

Page 14: Iasi code camp 20 april 2013   iulian dogariu - scala

Let’s manipulate symbols1372 ÷ 28

1372 | 28 | 112 | 4 | 25 | |

Page 15: Iasi code camp 20 april 2013   iulian dogariu - scala

Let’s manipulate symbols1372 ÷ 28

1372 | 28 | 112 | 49 | 252 | 252 | 0

Page 16: Iasi code camp 20 april 2013   iulian dogariu - scala

Notation matters.

MCCCLXXII ÷ XXVIII

?

Page 17: Iasi code camp 20 april 2013   iulian dogariu - scala

Would you rather work with …

Page 18: Iasi code camp 20 april 2013   iulian dogariu - scala

… or with this

Notation matters. A lot!

Page 19: Iasi code camp 20 april 2013   iulian dogariu - scala

Parallelism and concurrency

Page 20: Iasi code camp 20 april 2013   iulian dogariu - scala

Parallelism and concurrency

CPUs aren’t getting any faster

We’ll just havemore of them !

Page 21: Iasi code camp 20 april 2013   iulian dogariu - scala

Parallelism and concurrency

Threads will get you in a mess, fast

Page 22: Iasi code camp 20 april 2013   iulian dogariu - scala

public Object fileLock = new Object();public Object dbLock = new Object();

public void doThis() { synchronized (fileLock) { synchronized (dbLock) { logToFileAndDb(db, “Doing this !”); } } }

public void doThat() { synchronized (dbLock) { synchronized (fileLock) { logToFileAndDb(db, “Doing that !”); } } }

Page 23: Iasi code camp 20 april 2013   iulian dogariu - scala
Page 24: Iasi code camp 20 april 2013   iulian dogariu - scala

99.9999999 % reliabilityLess than 0.63 seconds downtime

Source: Joe Armstrong http://pragprog.com/articles/erlang

… in more than 20 years !

Page 25: Iasi code camp 20 april 2013   iulian dogariu - scala

99.9999999 % reliability

Source: Joe Armstrong http://pragprog.com/articles/erlang

Page 26: Iasi code camp 20 april 2013   iulian dogariu - scala

Successful Parallel Programming

Message passing

No shared state

Page 27: Iasi code camp 20 april 2013   iulian dogariu - scala

Actors

Page 28: Iasi code camp 20 april 2013   iulian dogariu - scala

Actors

http://www.youtube.com/watch?v=UgpCfHiCtN0&hd=1

Video demo

Page 29: Iasi code camp 20 april 2013   iulian dogariu - scala

Psycho therapy squared

http://www.youtube.com/watch?v=4O0Dq6Tf6k0&hd=1

Video demo

Page 30: Iasi code camp 20 april 2013   iulian dogariu - scala

Source: TIOBE index February 2013

How popular?

Page 31: Iasi code camp 20 april 2013   iulian dogariu - scala

Who uses Scala?

Source: http://slideshare.net/mslinn/scala-adoption-by-enterprises

Page 32: Iasi code camp 20 april 2013   iulian dogariu - scala

But will this be useful to me?

Page 33: Iasi code camp 20 april 2013   iulian dogariu - scala

„________ is worth learning for the profound enlightenment experience you will have when you finally get it; that experience will make you a better programmer for the rest of your days, even if you never actually use [it]”

-- Eric S Raymond

Page 34: Iasi code camp 20 april 2013   iulian dogariu - scala

One more thing

Page 35: Iasi code camp 20 april 2013   iulian dogariu - scala

specs2

Page 36: Iasi code camp 20 april 2013   iulian dogariu - scala

Be Ready for Tomorrow

• Functional style programming

• Parallelism

• Concise code

Page 37: Iasi code camp 20 april 2013   iulian dogariu - scala

... But Use Your Head

Page 38: Iasi code camp 20 april 2013   iulian dogariu - scala

Resources

• http://www.scala-lang.org

• Book: Martin Odersky – Programming in Scala

• Book: Venkat Subramaniam – Programming Scala

• Commercial support: Typesafe, Inc. http://www.typesafe.com

• IDE support: IntelliJ IDEA 12

Page 39: Iasi code camp 20 april 2013   iulian dogariu - scala

Thank you!

And don’t forget to fill inthe evaluation form

[email protected]