Se ha denunciado esta presentación.
Utilizamos tu perfil de LinkedIn y tus datos de actividad para personalizar los anuncios y mostrarte publicidad más relevante. Puedes cambiar tus preferencias de publicidad en cualquier momento.
Why Scala?
And let's take a tour of it
#1 Hanoi's Scala Meetup
11/2015
TungNT
tung_nt@septeni-technology.jp
N i dungộ
● Gi i thi uớ ệ
● Nh ng nét n i b tữ ổ ậ
● H ng đ i t ngướ ố ượ
● Basic Collection
● L p trình hàmậ
Gi i Thi uớ ệ
About me
● Nguy n Thanh Tùng - Software Developer t i Septeniễ ạ
Technolgoy
● Ngôn ng : C, Java, C#, PHP vàữ Scala cho hi ...
M t ngôn ng mà không nh h ng đ nộ ữ ả ưở ế
cách b n nghĩ v l p trình, thì nó khôngạ ề ậ
đáng đ h c *ể ọ
Alan Perlis, nhà k...
Thông tin s l cơ ượ
● Scala = “Scalable Language”
● Đ cượ Martin Odersky t o ra năm 2003ạ t iạ EPFL, Th yụ
Sỹ
● Đ c d ch r...
Thông tin s l c (2)ơ ượ
● Scala = Java's speed + Ruby's syntax
● H tr t t Realtime/Reactive Web, Distributed System, Bigỗ ...
Scala vs Java
Trang chủ
http://www.scala-lang.org/
Tools & IDE
Sách n i b tổ ậ
H sinh tháiệ
Tài nguyên tham kh oả
● Official doc:
– http://www.scala-lang.org/documentation/
● Twitter's Scala School:
– https://twitt...
Nét n i b tổ ậ
Val vs Var
● “Val” khai báo bi n d i d ng Immutable = Read Onlyế ướ ạ
● “Var” khai báo bi n d i d ng Mutable = Read + Writ...
Pattern Matching
● G n gi ng c u trúc switch-case trong ngôn ngầ ố ấ ữ
khác. Tuy nhiên...
● Uy n chuy n khi làm vi c v i O...
Option type
● Là container ch a 1 đ i t ng mà trong đó:ứ ố ượ
– Có giá tr ~> Some(object)ị
– R ng ~> Noneỗ
● Là s thay th ...
Closure
● Là cách khai báo hàm mà giá tr tr v có phị ả ề ụ
thu c vào bi n bên ngoài scope (dù khôngộ ế
đ c truy n qua đ i ...
Lazy val
● Là cách khai báo mà k t qu ch tính toán vàế ả ỉ
tr v khi nó đ c g i đ nả ề ượ ọ ế
Implicit
● Trình biên d ch s t đ ng tìm ki m trong ngị ẽ ự ộ ế ữ
c nh(context) thành ph n đ c khai báoả ầ ượ
implicit
● Im...
Implicit (2)
H ng đ i t ng trongướ ố ượ
Scala
H tr đ y đ OOPỗ ợ ầ ủ
● M i th trong Scala đ u làọ ứ ề Object
– Không có primitive type
– Không có các toán t ~> t t c đ u...
Cây phân hệ
Class
Object
● Là m t Singleton objectộ
● Static theo cách c a Scalaủ
Case Class
● T đ ng sinh getter/setter cho đ i sự ộ ố ố
● T đ ng đ nh nghĩa các method hashcode, equals và copyự ộ ị
● Có ...
Traits
● Scala Traits = Java interface + Ruby's mixin
Basic Collection trong
Scala
Lists & Set
● Lists
● Set
– Không có ph n t trùngầ ử
Tuples
● Nhóm các ph n t riêng l l i thành 1 t p h pầ ử ẻ ạ ậ ợ
● Truy c p ph n t qua cú pháp ._ậ ầ ử
● Có th s d ng v i P...
Map
● L u tr theo d ng key – valueư ữ ạ
● Có th l u value d i d ng 1 Map khác ho c 1ể ư ướ ạ ặ
function
L p trình hàm trong Scalaậ
Higher-Order Functions
● M t function có th nh n đ i s là 1 functionộ ể ậ ố ố
khác ho c tr v k t qu d i d ng 1 functionặ ả...
Function Currying
“Trong khoa h c máy tính, currying, phát minh b i Moses Schönfinkel vàọ ở
Gottlob Frege, là k thu t chuy...
Function Currying (2)
ng d ng th c t :Ứ ụ ự ế
– Ch đ nh default:ỉ ị
– Dùng v i implicit:ớ
Functional Combinators
● map
– return l i collection m iạ ớ
●
foreach
– Gi ng map nh ng không return gì cố ư ả
●
filter
● ...
Functional Combinators (2)
● partition
● find
Functional Combinators (3)
● foldLeft
● foldRight
Functional Combinators (4)
● reduceLeft / reduceRight
– G n gi ng fold, nh ng:ầ ố ư
● Không c n kh i t o ban đ u, dùng chí...
Functional Combinators (5)
● flatten
– dàn ph ng 1 nested structureẳ
● flatMap
– Là s k t h p c a map và flattenự ế ợ ủ
Và:
– Self type
– Monads
– Extractor Objects
– Sequence Comprehensions
– Package object
– … cùng nhi u đi u khác n aề ề ữ
Ng i n i ti ng nói gì?ườ ổ ế
N u tôi ph i l a ch n m t ngôn ng đ s d ng ngày nay ngoài Java, nó s làế ả ự ọ ộ ữ ể ử ụ ẽ
Sc...
Thank you
Próxima SlideShare
Cargando en…5
×

Why scala?

Why scala vietnamese

  • Inicia sesión para ver los comentarios

Why scala?

  1. 1. Why Scala? And let's take a tour of it #1 Hanoi's Scala Meetup 11/2015 TungNT tung_nt@septeni-technology.jp
  2. 2. N i dungộ ● Gi i thi uớ ệ ● Nh ng nét n i b tữ ổ ậ ● H ng đ i t ngướ ố ượ ● Basic Collection ● L p trình hàmậ
  3. 3. Gi i Thi uớ ệ
  4. 4. About me ● Nguy n Thanh Tùng - Software Developer t i Septeniễ ạ Technolgoy ● Ngôn ng : C, Java, C#, PHP vàữ Scala cho hi n t iệ ạ ● Quan tâm đ n:ế – Scala, Angularjs, React... – Các ki n trúc ph n m mế ầ ề – Domain Driven Design – Reactive web – Entrepreneurship
  5. 5. M t ngôn ng mà không nh h ng đ nộ ữ ả ưở ế cách b n nghĩ v l p trình, thì nó khôngạ ề ậ đáng đ h c *ể ọ Alan Perlis, nhà khoa h c máy tínhọ *A language that doesn't affect the way you think about programming, is not worth knowing.
  6. 6. Thông tin s l cơ ượ ● Scala = “Scalable Language” ● Đ cượ Martin Odersky t o ra năm 2003ạ t iạ EPFL, Th yụ Sỹ ● Đ c d ch ra mã Java Bytecode và ch y trên JVMượ ị ạ ● Có th tái s d ng các th vi n c a Javaể ử ụ ư ệ ủ ● Cú pháp u tiên s ng n g nư ự ắ ọ ● H tr l p trình h ng đ i t ng l n l p trình hàmỗ ợ ậ ướ ố ượ ẫ ậ
  7. 7. Thông tin s l c (2)ơ ượ ● Scala = Java's speed + Ruby's syntax ● H tr t t Realtime/Reactive Web, Distributed System, Bigỗ ợ ố Data v i các th vi n Future (built-in), Actor, Akka, Spark...ớ ư ệ ● Các công ty đang s d ng Scala:ử ụ – Apple – LinkedIn – Twitter – Foursquare – Netflix – Tumblr – ...
  8. 8. Scala vs Java
  9. 9. Trang chủ http://www.scala-lang.org/
  10. 10. Tools & IDE
  11. 11. Sách n i b tổ ậ
  12. 12. H sinh tháiệ
  13. 13. Tài nguyên tham kh oả ● 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
  14. 14. Nét n i b tổ ậ
  15. 15. Val vs Var ● “Val” khai báo bi n d i d ng Immutable = Read Onlyế ướ ạ ● “Var” khai báo bi n d i d ng Mutable = Read + Writeế ướ ạ
  16. 16. Pattern Matching ● G n gi ng c u trúc switch-case trong ngôn ngầ ố ấ ữ khác. Tuy nhiên... ● Uy n chuy n khi làm vi c v i Option type, Caseể ể ệ ớ Class thay ch dùng đc v i primative type nhỉ ớ ư Java, C...
  17. 17. Option type ● Là container ch a 1 đ i t ng mà trong đó:ứ ố ượ – Có giá tr ~> Some(object)ị – R ng ~> Noneỗ ● Là s thay th null trong Java và ngôn ngự ế ữ khác ● K t h p đ c v i Pattern Matchingế ợ ượ ớ
  18. 18. Closure ● Là cách khai báo hàm mà giá tr tr v có phị ả ề ụ thu c vào bi n bên ngoài scope (dù khôngộ ế đ c truy n qua đ i s c a hàm)ượ ề ố ố ủ
  19. 19. Lazy val ● Là cách khai báo mà k t qu ch tính toán vàế ả ỉ tr v khi nó đ c g i đ nả ề ượ ọ ế
  20. 20. Implicit ● Trình biên d ch s t đ ng tìm ki m trong ngị ẽ ự ộ ế ữ c nh(context) thành ph n đ c khai báoả ầ ượ implicit ● Implicit có nh ng thành ph n g m:ữ ầ ồ – Implicit Conversion – Implicit Parameters
  21. 21. Implicit (2)
  22. 22. H ng đ i t ng trongướ ố ượ Scala
  23. 23. H tr đ y đ OOPỗ ợ ầ ủ ● M i th trong Scala đ u làọ ứ ề Object – Không có primitive type – Không có các toán t ~> t t c đ u là các methodử ấ ả ề ● không có static
  24. 24. Cây phân hệ
  25. 25. Class
  26. 26. Object ● Là m t Singleton objectộ ● Static theo cách c a Scalaủ
  27. 27. Case Class ● T đ ng sinh getter/setter cho đ i sự ộ ố ố ● T đ ng đ nh nghĩa các method hashcode, equals và copyự ộ ị ● Có th s d ng trong pattern matchingể ử ụ
  28. 28. Traits ● Scala Traits = Java interface + Ruby's mixin
  29. 29. Basic Collection trong Scala
  30. 30. Lists & Set ● Lists ● Set – Không có ph n t trùngầ ử
  31. 31. Tuples ● Nhóm các ph n t riêng l l i thành 1 t p h pầ ử ẻ ạ ậ ợ ● Truy c p ph n t qua cú pháp ._ậ ầ ử ● Có th s d ng v i Pattern Matchingể ử ụ ớ
  32. 32. Map ● L u tr theo d ng key – valueư ữ ạ ● Có th l u value d i d ng 1 Map khác ho c 1ể ư ướ ạ ặ function
  33. 33. L p trình hàm trong Scalaậ
  34. 34. Higher-Order Functions ● M t function có th nh n đ i s là 1 functionộ ể ậ ố ố khác ho c tr v k t qu d i d ng 1 functionặ ả ề ế ả ướ ạ
  35. 35. Function Currying “Trong khoa h c máy tính, currying, phát minh b i Moses Schönfinkel vàọ ở Gottlob Frege, là k thu t chuy n đ i m t function mà có nhi u đ i s sangỹ ậ ể ổ ộ ề ố ố 1 function mà ch có m t đ i s duy nh t (các đ i s khác đã đ c quy đ nhỉ ộ ố ố ấ ố ố ượ ị b i curry).” - wikipediaở VD: – Tr c:ướ – Sau:
  36. 36. Function Currying (2) ng d ng th c t :Ứ ụ ự ế – Ch đ nh default:ỉ ị – Dùng v i implicit:ớ
  37. 37. Functional Combinators ● map – return l i collection m iạ ớ ● foreach – Gi ng map nh ng không return gì cố ư ả ● filter ● zip
  38. 38. Functional Combinators (2) ● partition ● find
  39. 39. Functional Combinators (3) ● foldLeft ● foldRight
  40. 40. Functional Combinators (4) ● reduceLeft / reduceRight – G n gi ng fold, nh ng:ầ ố ư ● Không c n kh i t o ban đ u, dùng chính ph n t đ u tiênầ ở ạ ầ ầ ử ầ cho vi c này (ném ra Exception n u collection r ng)ệ ế ỗ ● VD: – fold: – reduce:
  41. 41. Functional Combinators (5) ● flatten – dàn ph ng 1 nested structureẳ ● flatMap – Là s k t h p c a map và flattenự ế ợ ủ
  42. 42. Và: – Self type – Monads – Extractor Objects – Sequence Comprehensions – Package object – … cùng nhi u đi u khác n aề ề ữ
  43. 43. Ng i n i ti ng nói gì?ườ ổ ế N u tôi ph i l a ch n m t ngôn ng đ s d ng ngày nay ngoài Java, nó s làế ả ự ọ ộ ữ ể ử ụ ẽ Scala (1) James Gosling, cha đ ngôn ng Javaẻ ữ Tôi có th thành th t mà nói r ng n u m t ng i nào đó đ a cho tôi cu nể ậ ằ ế ộ ườ ư ố “Programming in Scala” c a Martin Odersky cùng Lex Spoon và Bill Vennersủ trong năm 2003 thì có l tôi đã ch a bao gi t o ra Groovy.ẽ ư ờ ạ (2) James Strachan, cha đ ngôn 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 I’d probably have never created Groovy.
  44. 44. Thank you

×