Cuộc nổi dậy của Kotlin

Linh Le

Hàng năm, các ngôn ngữ lập trình mới đều được ra mắt, nhưng hiếm có ngôn ngữ nào được giới lập trình chú ý nhiều như Kotlin của hãng JetBrains trong vài năm qua.

Kotlin là ngôn ngữ lập trình phân loại dữ liệu tĩnh có mục đích bao quát (general-purpose), được thiết kế cho máy ảo Java, Android các trình duyệt và giải pháp native. Kotlin được nhà thiết kế ngôn ngữ Andrey Breslay từ JetBrains tạo nên và chính thức ra mắt vào năm 2011.

Ngày nay Kotlin đã trở thành một trong những ngôn ngữ được ưa chuộng nhất trên Stack Overflow, một trong những ngôn ngữ lập trình phát triển nhanh nhất trên GitHub và là ngôn ngữ trong mục lựa chọn để phát triển ứng dụng trên Android. Kotlin đã có mặt trên mục Technology Radar của trang Thoughworks năm nay nhờ vào sự lớn mạnh của nó khi đã bao phủ khắp các nền tảng và công cụ.

“Các lập trình viên chưa dùng thử Kotlin thực sự nên trải nghiệm xem nó có thể làm được gì. Đây là một ngôn ngữ thông minh với những tính năng chắc chắn và hệ sinh thái phát triển,” Rebecca Parsons, giám đốc công nghệ tại ThoughtWorks cho hay.

Nhưng tại sao và bằng cách nào mà Kotlin có thể chiếm được nhiều ưu ái từ các lập trình viên chỉ trong một khoảng thời gian ngắn đến vậy? Đầu tiên đó chính là nguồn mở, thứ tạo nên tiếng vang trong phần lớn cộng đồng phát triển phần mềm, theo như Fausto de la Torre, giám đốc công nghệ tại Thoughtworks. Thêm nữa, nó nhận được sự ủng hộ từ một trong những gã khổng lồ công nghệ. Google đã tuyên bố hỗ trợ ngôn ngữ lập trình này tại sự kiện Google I/O năm 2017. Nhưng ngay cả trước khi Google thông báo thì đã có rất nhiều lập trình viên chuyển sang dùng thử Kotlin rồi.

Theo Chet Haase, nhà chủ trương ủng hộ Android tại Google thì Kotlin phá vỡ hình mẫu mà quá nhiều ngôn ngữ lập trình truyền thống chấp nhận. “Thứ gì được định hình càng chi tiết thì càng khó để thay đổi,” ông nói. “Sau vài năm, [các nhà cung cấp ngôn ngữ] không muốn thay đổi hoàn toàn mọi thứ và tiếp nhận những mô hình mới vào ngôn ngữ lập trình, vì những mô hình này gây áp lực về nhiều thứ lên các lập trình viên khi họ chưa sẵn sàng.” Đây cũng là mối quan tâm chính của Google khi nghĩ đến chuyện tiếp nhận Kotlin. “Chúng tôi [đã không] muốn để các lập trình viên bị động và khiến họ phải thay đổi mọi thứ khi giới thiệu ngôn ngữ mới này,” Haase giải thích.

Kotlin có cách tiếp cận mới vì nó hoàn toàn tương tác với Java, điều này cho phép các lập trình viên Kotlin tận dụng được hệ sinh thái thư viện và framework sẵn có của Java.

So sánh Kotlin với các ngôn ngữ khác

Tính tương kết có thể là đối trọng cho Kotlin, de la Torre giải thích. Vì hầu hết mọi lập trình viên dùng Kotlin đều là lập trình viên Java, họ có xu huống viết Kotlin theo phong cách Java, nhưng có một số thuộc tính, từ khóa và tính năng trong Java không có cách diễn đạt tương đương trong Kotlin. “Kotlin có thể dùng toàn bộ hệ sinh thái của Java. Đây là một trong những tính năng mạnh mẽ nhất mà nó có, nhưng cố gắng thử tính năng này theo cùng một kiểu trong mọi trường hợp cũng là một thách thức,” ông nói. “Bạn không thể dùng nó theo cách đơn giản như bạn nghĩ đâu.”

Stephanie Cuthbertson, giám đốc quản lý sản phẩm cho Android tại Google chia sẻ rằng có khoảng một nửa cộng đồng phát triển Android đang dùng Kotlin. Khi bạn nhìn qua những ngôn ngữ khác trong hệ sinh thái Android thì C++ và Java luôn thể hiện tính mới mẻ. Ví dụ, C++ thể hiện các các trúc và thuật toán dữ liệu, Java đại diện cho ngôn ngữ hướng đối tượng, chẳng hạn như quản lý bộ nhớ tự động; nhưng Kotlin lại thể hiện cách làm việc hiện đại hơn, Cuthbertson cho hay. “Các lập trình viên nói với chúng tôi rằng thứ mà họ yêu thích từ Kotlin chính là tất cả những cách diễn đạt hiện đại của nó,” cô nói. Một vài ví dụ để minh họa bao gồm: cách viết code coroutine và giá trị null. Coroutine mang đến một cách mới lạ trong việc viết code không đồng bộ và không tuần tự. Kotlin cũng có khả năng khai báo giá trị null rõ ràng và đảm bảo rằng các lập trình viên không phải tạo tham chiếu ngoại lệ cho null (null reference exception), thứ có thể gây ra những vấn đề về chất lượng code sau này.

Cuthbertson cũng tin rằng ngôn ngữ này sẽ phát triển nhanh hơn so với những ngôn ngữ khác, bởi vì thay vì được ban ngành vận hành thì Kotlin được quản lý bởi nhóm sáng lập Kotlin Foundation, và việc thiết kế ngôn ngữ được hoàn thành dưới bàn tay của kỹ sư thiết kế ngôn ngữ hàng đầu Breslav. Breslav đã điều hành một quy trình cộng đồng mà từ đó ông đã nhận được rất nhiều thứ từ các lập trình viên khác, nhưng ông là người duy nhất dõi theo nó. “Điều đó có nghĩa là ngôn ngữ này tiếp tục tiến hóa nhanh chóng theo hướng thuận lợi cho chính nó,” Cuthbertson nói. “Ngôn ngữ Kotlin được thiết kế có chủ đích nên có ta có thể phát triển nó lên, nhưng phải phát triển nó theo cách có thể bảo vệ tính đồng nhất của ngôn ngữ khi đưa nó vào cộng đồng theo hướng tích cực.”

Hơn nữa, Haase giải thích điểm mạnh của Kotlin là nó đươc thiết kế và phát triển từ công ty IDE JetBrains. “Các tính năng cốt lõi của ngôn ngữ này cũng như các tính năng mới được tích hợp chặt chẽ vào môi trường phát triển mà các lập trình viên dùng. Trong khi các ngôn ngữ khác có IDE thích hợp cho việc phát triển bằng chính ngôn ngữ đó, thì ngôn ngữ này lại độc lập với các IDE,” ông giải thích. IDEA của IntelliJ, một IDE do JetBrains tạo ra, là nền tảng bên dưới của IDE Android Studio của Google.

De la Torres nhận thấy team của mình chuyển sang Kotlin vì nó tăng năng suất của lập trình viên và cung cấp trải nghiệm lập trình tốt hơn so với các ngôn ngữ khác. Kotlin có khả năng đạt được những thứ tương tự như các ngôn ngữ khác, nhưng với số lượng code ngắn hơn và hiện đại hơn, ông nói rõ.

“Một khi bạn học được cách viết Kotlin thì bạn sẽ viết code ít hơn. Bởi vì bạn viết ít code hơn nên nó dễ bảo trì hơn. Nhờ vào những tính năng như giá trị null mà bạn có code chất lượng cao hơn. Và nhờ vào những cách diễn đạt mới mà bạn sẽ thấy thích thú hơn,” Cuthbertson nói.

De la Torres nói thêm rằng cộng đồng Kotlin gần đây không mạnh mẽ như những cộng đồng khác. “Mặc dù nó vẫn tiếp tục lớn mạnh, nhưng nó vẫn chưa đủ vững mạnh và vẫn còn những khoảng trống cần lấp đầy,” ông nói. De la Torres cũng cho biết thêm là ông muốn thấy việc kiểm tra framework và đáp ứng liên tục được hoàn thiện nhiều hơn. Google gần đây đang tiến hành đầu tư để thúc đẩy sự lớn mạnh của cộng đồng này cũng như mở ra các khóa đào tạo nhằm giúp các lập trình viên hiểu cách tích hợp Kotlin vào code và giải pháp của mình. “Chúng tôi không những cho rằng điều đó cần thiết với các lập trình viên, mà chúng tôi còn nghĩ rằng nó cũng giúp ích hơn cho chúng tôi,” Haase giải thích. Google hiện đang dùng Kotlin trong Android Jetpack và các thư viện khác.

Hơn cả phần mềm phát triển Android

Hiện tại Kotlin nổi tiếng vì mức độ phát triển của mình trong việc phát triển ứng dụng Android, và mặc dù Google vẫn đang tiếp tục đầu tư mạnh vào những ngôn ngữ khác nhưng nó vẫn thúc đẩy Kotlin. “Nếu bạn dự định xây dựng một dự án mới, chúng tôi gợi ý bạn nên dùng Kotlin. Chúng tôi đang bắt đầu cho dự án mang tên “Kotlin trước” trong hệ điều hành Android,” Cuthbertson nói.

Nhưng de la Torre nhận thấy ngôn ngữ này thể hiện giá trị của mình vượt qua cả viêc phát triển mảng di động.

Thoughtworks gần đây nhận ra các team đang xây dựng những dịch vụ nhỏ (microservice) và triển khai phần mềm vào sản xuất với Ktor, một framework dùng cho các server và client đồng bộ thông qua Kotlin. MockK là một giải pháp Kotlin khác được dùng cho các mô phỏng và kiểm thử các ứng dụng Kotlin. “Là một thư viện native, nó giúp team chúng tôi viết code ngắn gọn và rõ ràng khi kiểm thử các ứng dụng Kotlin thay vì dùng các lớp wrapper bất tiện của Mockito hoặc PowerMock,” Thoughtworks viết trên Technology Radar. Hơn nữa, Thoughtworks dùng Detekt để phân tích code tĩnh trong Kotlin, và http4k cho việc phục vụ và sử dụng các dịch vụ HTTP trong Kotlin.

Team Kotlin cũng đang làm việc để mang ngôn ngữ tiến xa hơn là việc chỉ phát triển ứng dụng di động với Kotlin/Native, một giải pháp cho việc biên dịch code Kotlin sang nhiều nền tảng khác nhau mà không cần chạy máy ảo. “Kotlin/Native ban đầu được thiết kế để cho phép biên dịch cho các nền tảng mà các máy ảo không thể thực hiện, ví dụ như các thiết bị nhúng hoặc iOS. Nó giải quyết các trường hợp khi mà lập trình viên cần tạo ra một chương trình độc lập không yêu cầu thêm runtime hay máy ảo,” JerBrains viết trên website của mình. Kotlin/Native gần đây hỗ trợ iOS, MacOS, Android, Windows, Linux và WebAssembly.

Google cũng đang cố gắng đưa Kotlin tiến xa hơn là việc phát triển Android bằng việc dùng Kotlin cho phát triển cloud.

Trong một báo cáo về mức độ ủng hộ Kotlin do JetBrains thực hiện, công ty này nhận thấy rằng 39% người tham gia khảo sát dùng Kotlin làm ngôn ngữ sơ cấp, 46% dùng Kotlin để viết code phía server và 10% dùng nó trong khoa học dữ liệu. Báo cáo dựa trên 4000 phản hồi từ người dùng Kotlin. “Ngày nay có hơn 2 triệu người dùng Kotlin trên mỗi nền tảng, với mục đích phát triển tất cả các loại có thể của phần mềm. Hơn 250 người đóng góp giúp vận hành việc phát triển và thúc đẩy hệ sinh thái. Chúng tôi rất vui với sự nhiệt tình và nỗ lực của cộng đồng chúng ta, những người đã đóng góp rất nhiều cho kho tài liệu học Kotlin và phổ biến kiến thức Kotlin rộng rãi hơn,” Team Kotlin viết trên blog.

5 lý do Google tiếp nhận Kotlin

Tiếp nhận một ngôn ngữ lập trình mới vào một nền tảng đã được xây dựng và có từ trước như Android có thể khiến các lập trình viên bối rối vì nó có thể tạo ra một môi trường gãy khúc giữa các ứng dụng, thư viện, code đã có sẵn với ngôn ngữ và API mới.

“Luôn có sự cân nhắc xem một nền tảng có nên tiếp nhận thêm một ngôn ngữ khác nữa hay không, và câu trả lời luôn luôn là không vì nó tạo nên ảnh hưởng tâm lý xấu,” Chet Haase, nhà tán thành chủ trương cho Android cho hay. “Tuy nhiên khi chúng tôi đưa ý tưởng về Kotlin tới các lập trình viên thì họ lại thực sự [thích thú].”

Theo Stephanie Cuthbertson, giám đốc quản lý sản phẩm Android của Google, có 5 lý do chính khiến Google đưa ra thông báo hỗ trợ Kotlin năm 2017.

  • “Đây là một ngôn ngữ tuyệt đẹp,” Cuthberthson cảm thán. Bởi vì Kotlin là một ngôn ngữ hiện đại, nên nó tận dụng được những thao tác mới và tốt nhất mà các lập trình viên vốn đã quen thuộc.
  • Kotlin hoàn toàn tương tác được với Java, cho phép Java chuyển qua lại giữa các ngôn ngữ.
  • Đủ lớn mạnh: Trước khi Google quyết định tiếp nhận Kotlin, nó đã được dùng khoảng 5 năm và nó đã đạt tới phiên bản 1.0 ổn định.
  • Hỗ trợ IDE: Kotlin được ác chuyên gia sáng tạo của JetBrains tạo nên, họ cũng tạo ra IntelliJ IDEA, một nền tảng bên dưới của Android Studio, vì vậy nó cung cấp các hỗ trợ nâng cao cả về IDE lẫn ngôn ngữ.
  • Có cộng đồng sử dụng: “Chúng tôi đưa Kotlin vào Android vì cộng đồng lập trình thực sự mong muốn điều đó,” Cuthbertson nói. Thật ra, Cuthbertson giải thích rằng đã có một lá thư mở gửi cho team Android từ cộng đồng lập trình viên, họ mong team Android tiếp nhận nó. Bức thư này được gửi đi ngay trước khi Google thông báo hỗ trợ Kotlin.

“Kotlin không chỉ đang lớn mạnh mà mọi người còn thực sự thích ngôn ngữ này,” Cuthbertson nói. “Đây là thứ khiến chúng tôi thay đổi và bây giờ là thời điểm vàng để thử sức.”

Chia sẻ bài viết ngay

Nguồn bài viết : https://sdtimes.com