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.
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 SchoolEffective 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 2Class và Method
Phần 3Object và Companion Object
Phần 4Trait
Phần 5Type 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