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ểu
private[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