If you can't read please download the document
Upload
tung-nguyen
View
400
Download
0
Embed Size (px)
Citation preview
Why Scala?
And let's take a tour of it
#1 Hanoi's Scala Meetup
11/2015
Ni dung
Gii thiu
Nhng nt ni bt
Hng i tng
Basic Collection
Lp trnh hm
Gii Thiu
About me
Nguyn Thanh Tng - Software Developer ti Septeni Technolgoy
Ngn ng: C, Java, C#, PHP v Scala cho hin ti
Quan tm n:Scala, Angularjs, React...
Cc kin trc phn mm
Domain Driven Design
Reactive web
Entrepreneurship
Mt ngn ng m khng nh hng n cch bn ngh v lp trnh, th n khng ng hc *Alan Perlis, nh khoa hc my tnh
*A language that doesn't affect the way you think about programming, is not worth knowing.
Thng tin s lc
Scala = Scalable Language
c Martin Odersky to ra nm 2003 ti EPFL, Thy S
c dch ra m Java Bytecode v chy trn JVM
C th ti s dng cc th vin ca Java
C php u tin s ngn gn
H tr lp trnh hng i tng ln lp trnh hm
Thng tin s lc (2)
Scala = Java's speed + Ruby's syntax
H tr tt Realtime/Reactive Web, Distributed System, Big Data vi cc th vin Future (built-in), Actor, Akka, Spark...
Cc cng ty ang s dng Scala:Apple
Foursquare
Netflix
Tumblr
...
Scala vs Java
Trang ch
http://www.scala-lang.org/
Tools & IDE
Sch ni bt
H sinh thi
Ti nguyn tham kho
Official doc: http://www.scala-lang.org/documentation/
Twitter's Scala School:https://twitter.github.io/scala_school/index.html
Coursera (Online Course):https://www.coursera.org/course/progfun
Awesome Scala:https://github.com/lauris/awesome-scala
Nt ni bt
Val vs Var
Val khai bo bin di dng Immutable = Read Only
Var khai bo bin di dng Mutable = Read + Write
Pattern Matching
Gn ging cu trc switch-case trong ngn ng khc. Tuy nhin...
Uyn chuyn khi lm vic vi Option type, Case Class thay ch dng c vi primative type nh Java, C...
Option type
L container cha 1 i tng m trong :C gi tr ~> Some(object)
Rng ~> None
L s thay th null trong Java v ngn ng khc
Kt hp c vi Pattern Matching
Closure
L cch khai bo hm m gi tr tr v c ph thuc vo bin bn ngoi scope (d khng c truyn qua i s ca hm)
Lazy val
L cch khai bo m kt qu ch tnh ton v tr v khi n c gi n
Implicit
Trnh bin dch s t ng tm kim trong ng cnh(context) thnh phn c khai bo implicit
Implicit c nhng thnh phn gm:Implicit Conversion
Implicit Parameters
Implicit (2)
Hng i tng trong Scala
H tr y OOP
Mi th trong Scala u l ObjectKhng c primitive type
Khng c cc ton t ~> tt c u l cc method
khng c static
Cy phn h
Class
Object
L mt Singleton object
Static theo cch ca Scala
Case Class
T ng sinh getter/setter cho i s
T ng nh ngha cc method hashcode, equals v copy
C th s dng trong pattern matching
Traits
Scala Traits = Java interface + Ruby's mixin
Basic Collection trong Scala
Lists & Set
Lists
SetKhng c phn t trng
Tuples
Nhm cc phn t ring l li thnh 1 tp hp
Truy cp phn t qua c php ._
C th s dng vi Pattern Matching
Map
Lu tr theo dng key value
C th lu value di dng 1 Map khc hoc 1 function
Lp trnh hm trong Scala
Higher-Order Functions
Mt function c th nhn i s l 1 function khc hoc tr v kt qu di dng 1 function
Function Currying
Trong khoa hc my tnh, currying, pht minh bi Moses Schnfinkel v Gottlob Frege, l k thut chuyn i mt function m c nhiu i s sang 1 function m ch c mt i s duy nht (cc i s khc c quy nh bi curry). - wikipediaVD:Trc:
Sau:
Function Currying (2)
ng dng thc t:Ch nh default:
Dng vi implicit:
Functional Combinators
map return li collection mi
foreachGing map nhng khng return g c
filter
zip
Functional Combinators (2)
partition
find
Functional Combinators (3)
foldLeft
foldRight
Functional Combinators (4)
reduceLeft / reduceRightGn ging fold, nhng:Khng cn khi to ban u, dng chnh phn t u tin cho vic ny (nm ra Exception nu collection rng)
VD:fold:
reduce:
Functional Combinators (5)
flattendn phng 1 nested structure
flatMapL s kt hp ca map v flatten
V:Self type
Monads
Extractor Objects
Sequence Comprehensions
Package object
cng nhiu iu khc na
Ngi ni ting ni g?
Nu ti phi la chn mt ngn ng s dng ngy nay ngoi Java, n s l Scala (1)
James Gosling, cha ngn ng Java
Ti c th thnh tht m ni rng nu mt ngi no a cho ti cun Programming in Scala ca Martin Odersky cng Lex Spoon v Bill Venners trong nm 2003 th c l ti cha bao gi to ra Groovy. (2)
James Strachan, cha ngn ng Groovy
(1) If I were to pick a language to use today other than Java, it would be Scala(2) I can honestly say if someone had shown me the Programming in Scala book by by Martin Odersky, Lex Spoon & Bill Venners back in 2003 Id probably have never created Groovy.
Thank you