iasi code camp 20 april 2013 iulian dogariu - scala
TRANSCRIPT
![Page 1: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/1.jpg)
Level up your Java
Iulian DogariuNess Technologies
20 April 2013
![Page 2: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/2.jpg)
![Page 3: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/3.jpg)
Why Learn Yet Another Language?
![Page 4: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/4.jpg)
Why Learn Yet Another Language?
![Page 5: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/5.jpg)
Scala
• Functional style programming
• Parallelism
• Concise code
![Page 6: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/6.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/7.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/8.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/9.jpg)
“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](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/10.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/11.jpg)
Not just a tool …
![Page 12: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/12.jpg)
… but a medium of expression
XXVIII 28
![Page 13: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/13.jpg)
Let’s manipulate symbols1372 ÷ 28
![Page 14: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/14.jpg)
Let’s manipulate symbols1372 ÷ 28
1372 | 28 | 112 | 4 | 25 | |
![Page 15: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/15.jpg)
Let’s manipulate symbols1372 ÷ 28
1372 | 28 | 112 | 49 | 252 | 252 | 0
![Page 16: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/16.jpg)
Notation matters.
MCCCLXXII ÷ XXVIII
?
![Page 17: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/17.jpg)
Would you rather work with …
![Page 18: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/18.jpg)
… or with this
Notation matters. A lot!
![Page 19: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/19.jpg)
Parallelism and concurrency
![Page 20: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/20.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/21.jpg)
Parallelism and concurrency
Threads will get you in a mess, fast
![Page 22: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/22.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/23.jpg)
![Page 24: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/24.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/25.jpg)
99.9999999 % reliability
Source: Joe Armstrong http://pragprog.com/articles/erlang
![Page 26: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/26.jpg)
Successful Parallel Programming
Message passing
No shared state
![Page 27: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/27.jpg)
Actors
![Page 28: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/28.jpg)
Actors
http://www.youtube.com/watch?v=UgpCfHiCtN0&hd=1
Video demo
![Page 29: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/29.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/30.jpg)
Source: TIOBE index February 2013
How popular?
![Page 31: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/31.jpg)
Who uses Scala?
Source: http://slideshare.net/mslinn/scala-adoption-by-enterprises
![Page 32: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/32.jpg)
But will this be useful to me?
![Page 33: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/33.jpg)
„________ 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](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/34.jpg)
One more thing
![Page 35: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/35.jpg)
specs2
![Page 36: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/36.jpg)
Be Ready for Tomorrow
• Functional style programming
• Parallelism
• Concise code
![Page 37: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/37.jpg)
... But Use Your Head
![Page 38: Iasi code camp 20 april 2013 iulian dogariu - scala](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/38.jpg)
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](https://reader035.vdocument.in/reader035/viewer/2022062705/55646888d8b42a90338b5178/html5/thumbnails/39.jpg)
Thank you!
And don’t forget to fill inthe evaluation form