Scala - lập trình hướng đối tượng và lập trình hàm
Scala
50
White

Vu Nhat Minh viết ngày 29/03/2016

Scala ra đời năm 2003 đã trở thành một ngôn ngữ server bậc cao được yêu thích trên toàn thế giới. Scala mang sức mạnh của lập trình hướng đối tượng được kế thừa và phát triển từ Java cộng với những tính năng của một ngôn ngữ lập trình hàm hiện đại.

Scala là một ngôn ngữ chặt chẽ và rất "professional" khi phát triển những hệ thống cần scale lớn, đồng thời cũng rất "quyến rũ" đối với hacker. Tuy vậy Scala cũng là một ngôn ngữ lớn với những khái niệm tương đối khó. Hi vọng loạt bài viết lần này sẽ điểm qua được những điểm nổi bật để giúp bạn có cái nhìn tổng quan về Scala.

Scala
Image credit: Toptal

Tại sao lại chọn Scala ?

Scala là ngôn ngữ hướng đối tượng chuẩn mực

Tại sao lại chuẩn mực ? Vì Scala kế thừa những tính năng hướng đối tượng từ Java, ngôn ngữ "mainstream" về hướng đối tượng, đồng thời đã tiến hóa thêm một bậc.

  • Mixin viết bằng Trait
  • Structural subtyping
  • Variance
  • Self type annotation
  • Kế thừa class kiểu implicit
  • Xác lập quyền truy cập rõ ràng với từ khóa kiểuprivate[this]
  • Tất cả các giá trị có thể sử dụng như là một object.

Nếu bạn có nền tảng tốt về Java thì sẽ thấy quen thuộc trong một số tính năng kể trên. Nhưng hãy đợi phần cụ thể nhé.

Scala là ngôn ngữ lập trình hàm bậc cao

Có rất nhiều ngôn ngữ lập trình hàm: Lisp, Haskell.... từng tồn tại. Trong số đó Scala thậm chí được xếp là một ngôn ngữ lập trình hàm bậc cao. Có những lý do sau đây

  • Hỗ trợ Case class
  • Hỗ trợ Pattern matching
  • Class định nghĩa với implicit parameter
  • Monad
  • Higher kinded type

Mỗi tính năng ở trên còn được phát triển thành nhiều tính năng nhỏ khác. Nếu bạn chưa dùng một ngôn ngữ lập trình hàm bao giờ thì có thể choáng ngợp và chưa bao giờ nghe đến những tính năng trên. Đừng lo, chúng ta sẽ làm quen dần dần!

Scala tương thích với Java

Một ưu điểm rất lớn của Scala là độ tương thích với Java. Scala có thể gọi và sử dụng bất cứ thư viện Java nào, hơn thế nữa bản thân code Scala khi biên dịch ra cũng là cùng mã bytecode của JVM. Như vậy nguồn thư viện và kiến thức khổng lồ của ngành công nghiệp không bị lãng phí mà có thể tùy ý sử dụng theo chọn lựa.

Scala ưu việt khi xử lý tính toán song song, phân tán và bất đồng bộ

Scala có bộ thư viện chuẩn Future để làm tính toán bất đồng bộ. Đồng thời Web framework Play cũng dưa trên bộ thư viện Netty.

Akka lại là một thư viện rất mạnh nữa để xử lý tính toán phân tán và tính toán song song. Trong Akka tồn tại khái niệm Actor như là hạt nhân cơ bản. giao tiếp với nhau thông qua message.

Lời cho phần tiếp

Series này sẽ cover những điểm khác biệt và nổi bật của Scala so với những ngôn ngữ khác, nhưng sẽ không trình bày những cú pháp cơ bản như định nghĩa biến, định nghĩa class thông thường, cấu trúc if, else, for, while v.v.... Nếu bạn cần tra cứu cú pháp hãy tham khảo Scala document hoặc tìm kiếm trong Scala School, Effective Scala của Twitter. Nếu bạn cần những ví dụ chạy được ngay, hãy tìm TypeSafe. Ngoài ra IntelliJ IDEA là IDE hỗ trợ Scala tốt nhất hiện nay.

Sau đây là phần đặt gạch. Phần nào có đủ link mình sẽ update, hoặc bạn có thể xem theo Scala tag .
Phần 2: Class và Method
Phần 3: Object và Companion Object
Phần 4: Trait
Phần 5: Type Parameter
Phần 6: Function
Phần 7: Scala Collection Library
Phần 8: Case class và Pattern Matching
Phần 9: Implicit conversion và implicit parameter
Phần 10: Future và Promise

Bình luận


White
{{ comment.user.name }}
Bỏ hay Hay
{{comment.like_count}}
Male avatar
{{ comment_error }}
Hủy
   

Hiển thị thử

Chỉnh sửa

White

Vu Nhat Minh

54 bài viết.
813 người follow
Kipalog
{{userFollowed ? 'Following' : 'Follow'}}
Cùng một tác giả
White
125 30
Nếu bạn thường vào trang mua sắm của amazon, chắc sẽ chẳng lạ gì với menu Shop by Department. Tốc độ hiển thị nội dung của menu là tức thì so với d...
Vu Nhat Minh viết 3 năm trước
125 30
White
98 4
Lời người dịch Người dịch là một developer , sau khi tìm đọc được bài viết này bằng bản gốc tiếng Anh đã cảm thấy như được "khai sáng" về khả năng...
Vu Nhat Minh viết hơn 3 năm trước
98 4
White
67 7
Form là thành phần quan trọng nhất khi design flow đăng ký của 1 web hay 1 app, dù là view gồm nhiều bước hay chỉ là một màn hình đơn điệu. Bài này...
Vu Nhat Minh viết hơn 1 năm trước
67 7
Bài viết liên quan
White
10 0
Kí tự Regex cơ bản Về cơ bản thì các sử lý matching của scala.util.matching.Regex sẽ được "phó thác" (delegate) cho java Regex. Bạn có thể tạo một ...
huydx viết hơn 3 năm trước
10 0
White
7 1
Trong scala kí tự _ được dùng với khá nhiều mục đích .. không liên quan đến nhau. Tạm note lại cái đã khi nào có time sẽ quay lại viết cẩn thận sa...
huydx viết hơn 3 năm trước
7 1
White
1 0
(Bài viết hơi khó hiểu, dành cho bạn nào có hứng thú với type programming trong scala với các thư viện như shapeless chẳng hạn) Thông thường với m...
huydx viết hơn 2 năm trước
1 0
{{like_count}}

kipalog

{{ comment_count }}

bình luận

{{liked ? "Đã kipalog" : "Kipalog"}}


White
{{userFollowed ? 'Following' : 'Follow'}}
54 bài viết.
813 người follow

 Đầu mục bài viết

Vẫn còn nữa! x

Kipalog vẫn còn rất nhiều bài viết hay và chủ đề thú vị chờ bạn khám phá!