Kotlin - Ngôn ngữ lập trình kế tiếp mà bạn nên học

Trong nhiều năm liền, Java là một trong những nền tảng quan trọng trong các hệ thống công nghệ thông tin, đặc biệt là trong enterprise. Java chạy đa nền tảng, là ngôn ngữ phát triển ứng dụng chính cho Android - hệ điều hành phổ biến nhất thế giới, Java chạy với IoT, làm Web Frontend/Backend, làm Desktop app với Swing/SWT … v…v… Java trở nên quá phổ biến, từ một ngôn ngữ lập trình (programming language) trở thành một nền tảng (platform) với số lượng thư viện, framework đồ sộ nhất hiện nay trong các ngôn ngữ lập trình. Tuy vậy, Java cũng có những điểm yếu của nó mà một trong số đó là sự thay đổi về cú pháp tương đối chậm. Khi so sánh Java với đối thủ trực tiếp là C#, rõ ràng syntax Java có nhiều điểm chưa hỗ trợ tốt cho các lập trình viên như C#, hơn 20 năm nhưng cú pháp Java không có quá nhiều thay đổi, đó vừa là điểm mạnh, vừa là điểm yếu của Java. Cá nhân mình nghĩ nên giữ syntax Java đơn giản như hiện tại nhưng cung cấp nhiều tính năng trên JVM, điều đó giúp cho các code Java cũ vẫn được bảo trì bên cạnh các chức năng mới. Nhận thấy các điểm yếu của Java từ sớm, có rất nhiều ngôn ngữ dựa trên JVM ra đời, có thể kể đến Groovy, Clojure, Scala và gần đây là Kotlin.
Groovy thực chất là một bản mở rộng của Java phát triển cùng với trào lưu scriptting khi đó cùng với Ruby, Python. Đặc điểm của nó chính là tính định kiểu tự động và cập nhật thay đổi nhanh chóng, hiện tại cộng đồng Groovy cũng vẫn phát triển mạnh mẽ, Gradle là build tool sử dụng Groovy làm scriptting bên trong nó.

Clojure và Scala chính là 02 cái tên nổi lên cùng trào lưu function programming (FP), đặc biệt Scala là một lựa chọn được rất nhiều các lập trình viên trên thế giới ưu ái bởi khả năng hỗ trợ cả lập trình OOP và FP, cùng với đó là các framework cực kỳ mạnh mẽ hỗ trợ như Akka, Play framework , hỗ trợ unblocking và reactive phát triển các ứng dụng hiệu suất cao. Scala đã có thể trở thành “trùm cuối” trong thế giới JVM và thực tế là tôi đã cố học Scala như là ngôn ngữ lập trình kế tiếp. Nhưng, điểm yếu của Scala lại chính là điểm mạnh của nó : Scala quá nhiều tính năng nhiều đến mức phức tạp ! Thậm chí bạn có thể định nghĩa hẳn một ngôn ngữ lập trình mới bằng Scala luôn ! Scala được thiết kế bởi Martin Odersky, ông là một professor nên tính học thuật trong Scala khá nhiều, mình có theo dõi mấy khóa của Martin mà đến giờ vẫn chưa lãnh hội hết được Scala , thêm nữa, Scala được sinh ra để thay thế Java, nên tính tương thích Java không hoàn toàn 100%

Và cuối cùng mình chọn Kotlin sẽ là cái mình sẽ học tiếp theo. Kotlin khá giống với Scala về cú pháp, chắc cỡ khoảng 60,70% tuy nhiên Kotlin không có nhiều tính năng phức tạp như Scala nên dễ học hơn, thực tế mục tiêu Kotlin là bổ sung cho Java chứ không phải thay thế, do đó Kotlin tương thích hoàn toàn 100% với Java, bạn có thể copy code Java và convert qua Kotlin một cách dễ dàng. Bên cạnh đó Kotlin có tốc độ compile như Java, thư viện Kotlin cũng khá nhỏ chỉ vài MB là những điểm nổi trội hơn Scala (woa, Scala compiler nổi tiếng chậm và download Scala là một cực hình). Nhưng nếu như Kotlin tương thích Java thì vì mình cần học thêm Kotlin chi khi đã biết Java ?! Đó là một câu hỏi khá thường trực cho anh em Java developer. Thực tế việc học Kotlin liên quan nhiều đến việc mình muốn biết thêm về phong cách lập trình FP mà không làm thay đổi quá lớn đến các project Java hiện tại vì tính tương thích 100% của Kotlin. Mình học lập trình đã khá lâu với cú pháp quá quen thuộc và cũ kỹ, trong ngần ấy nâm tư duy mình bắt đầu theo lối mòn và mình muốn học một ngôn ngữ mới để mở rộng tư duy lập trình , bạn có nghe tới lambdas, higher function, currying function, corouting reactive hay non-blocking … ? Kotlin có thể cung cấp cho bạn các tính năng đó và điều tuyệt vời là bạn có thể code Java và Kotlin trong cùng project mà chi phí đánh đổi chỉ là vài MB Kotlin runtime. Cái thứ 2 mình muốn học Kotlin đó là vì Android, mình muốn biết nhiều hơn về lập trình mobile và Kotlin đã được hỗ trợ trực tiếp từ Google một cách chính thức. Và cuối cùng hơi mơ hồ chút đó là học Kotlin là vì mình muốn tăng productivity bằng cách hạn chế bớt số dòng code mình phải viết. Có một thực tế là nếu bạn viết càng ít code thì khả năng gặp sai sót của bạn càng ít đi.

Thực tế mình vẫn vừa học vừa làm bằng cách sử dụng Kotlin cho dự án công ty bên cạnh Java (mình chọn Kotlin thay vì Scala cho dự án) và cũng muốn chia sẻ những gì mình biết với cộng đồng lập trình viên về Kotlin, và đó là lý do team mình tạo ra Kotlin Vietnam User Group (https://vnkotlin.com) - là diễn đàn đầu tiên về Kotlin ở Việt Nam (đã được approved từ trang chủ của Kotlin : https://kotlinlang.org/community/user-groups.html). Kotlin là ngôn ngữ lập trình mới và vẫn đang phát triển bằng các đóng góp từ cộng đồng, mình nghĩ bây giờ là thời điểm thích hợp để học Kotlin. Hiện tại trên diễn đàn đang có loạt bài cơ bản về lập trình Kotlin bằng tiếng Việt, mời các bạn theo dõi và cùng bàn luận nhé !

1 Like