Một số đặc điểm cơ bản của ngôn ngữ lập trình Kotlin

    0

    Kotlin là một ngôn ngữ cho máy ảo Java tương tự như ngôn ngữ Java hay Scala. Trong Kotlin có sự hòa trộn các tính năng tốt nhất của Java, C# và một số ngôn ngữ khác.

    Trước khi chính thức đi vào các chi tiết, chúng ta sẽ tìm hiểu một số vấn đề chung quan trọng đủ để bạn có hình dung về ngôn ngữ lập trình này.

    Quá trình build ứng dụng Kotlin

    Kotlin là một ngôn ngữ biên dịch (compiled language). Nghĩa là, mã nguồn Kotlin phải trải qua quá trình biên dịch trước khi được thực thi.

    Kotlin là một ngôn ngữ hướng tới chạy trên máy ảo Java (Java Virtual Machine – JVM). Do vậy việc thực thi của ứng dụng Kotlin không diễn ra trực tiếp trong hệ điều hành mà trong khuôn khổ của JVM.

    Hai đặc điểm trên thể hiện Kotlin là một ngôn ngữ lập trình “ngang hàng” với Java. Do vậy quá trình biên dịch và thực thi ứng dụng Kotlin giống hệt như với Java hay Scala (và bất kỳ ngôn ngữ biên dịch nào hướng tới JVM).

    Quy trình build ứng dụng Kotlin thể hiện trong sơ đồ dưới đây:

    Sơ đồ tóm tắt quá trình build mã nguồn Kotlin thành bytecode cho JVM

    File mã nguồn (source code) của Kotlin có phần mở rộng kt và được lưu tập trung trong thư mục src của dự án.

    Chương trình dịch Kotlin đọc các file mã nguồn và chuyển thành một dạng trung gian gọi là bytecode. Các file bytecode có phần mở rộng là class.

    Chương trình dịch Kotlin có tên gọi là kotlinc. Bạn có thể gọi kotlinc trực tiếp từ giao diện dòng lệnh. Tuy nhiên, bạn nên sử dụng tính năng build ứng dụng của IntelliJ IDEA.

    Một nhóm các file class có thể được đóng gói vào một file jar.

    Các chương trình của Kotlin sử dụng bộ thư viện Kotlin runtime. Bộ thư viện này chứa định nghĩa của các class và phần mở rộng bổ sung cho Java API. Khi phân phối ứng dụng Kotlin sẽ đồng thời phải phân phối kèm bộ thư viện này.

    Với đặc điểm trên, quá trình thực thi ứng dụng Kotlin hoàn toàn tương tự như một ứng dụng Java thông thường.

    Có một số điểm cần lưu ý về quá trình dịch mã nguồn Kotlin:

    • Trong sơ đồ trên bạn thấy có cả nhánh Java compiler. Do Kotlin được thiết kế để đảm bảo tương thích và tương tác tối đa với Java, project Kotlin có thể chứa cả mã nguồn của Java. Phần mã nguồn Java sẽ do Java compiler chịu trách nhiệm dịch.
    • Kotlin tương thích với các hệ thống build truyền thống của Java như Maven, Gradle và Ant, kể cả khi sử dụng cả hai ngôn ngữ trong dự án.
    • Hiện nay Kotlin compiler có thể dịch mã nguồn sang JavaScript hoặc mã máy của các nền tảng Windows/Linux/Mac mà không cần đến JVM.
    • Kotlin cho Android không sử dụng JVM mà là một loại máy ảo riêng, gọi là ART (Android Runtime).

    Đặc điểm của ngôn ngữ Kotlin

    Kotlin là một ngôn ngữ lập trình pha trộn nhiều xu hướng. Hai xu hướng nổi bật nhất mà bạn sẽ vận dụng thường xuyên khi học lập trình Kotlin là lập trình hướng đối tượng và lập trình hàm.

    Lập trình hướng đối tượng dựa trên các khái niệm cơ bản như class và object cùng với các nguyên lý như bao đóng, kế thừa, đa hình.

    Với vai trò một ngôn ngữ hướng đối tượng, Kotlin cho phép xây dựng class với những cú pháp rất súc tích. Nhìn chung, các tính năng hướng đối tượng của Kotlin là sự pha trộn hài hòa của Java, C# và Scala.

    Ví dụ, ngoài những tính năng chính tham khảo từ Java, class Kotlin hỗ trợ cú pháp rất ngắn gọn để khai báo property hay phương thức mở rộng tương tự như trong C#.

    Các vấn đề cụ thể sẽ được xem xét trong phần lập trình hướng đối tượng.

    Lập trình hàm là một xu hướng mà hầu hết các ngôn ngữ hiện đại đều bổ sung. Lập trình hàm có tác dụng lớn trong tính toán và xử lý dữ liệu.

    Để hỗ trợ lập trình hàm, Kotlin đưa vào nhiều khái niệm đặc thù như dữ liệu bất biến (immutable value) với từ khóa val, hàm bậc cao (high-order function), v.v..

    Các vấn đề liên quan đến lập trình hàm trong Kotlin sẽ được xem xét trong phần lập trình nâng cao.

    Ngoài ra, trong Kotlin bạn cũng gặp các xu hướng lập trình khác như Generic, Reflective, Concurency. Các vấn đề này cũng sẽ được trình bày ở phần nâng cao.

    Cú pháp Kotlin cơ bản

    Hàm main()

    Hàm main() viết thẳng trong file code có vai trò đặc biệt: nó là điểm xuất phát (entry point) của một chương trình Kotlin. Bất kỳ file nào có hàm main() sẽ có thể thực thi độc lập.

    fun main() {
        println("Hello world from Kotlin")    
    }

    Kotlin cho phép viết hàm main() ở bất kỳ file nào bạn cần chạy độc lập.

    Dấu chấm phẩy khi kết thúc lệnh

    Mỗi lệnh Kotlin có thể kết thúc bằng dấu chấm phẩy ; hoặc không.

    println("Hello world from Kotlin")
    println("Bonjour"); println("Privet")
    println(" Nǐn hǎo"); println("Guten Tag")

    Nếu mỗi lệnh viết trên một dòng thì kết thúc lệnh không cần dấu chấm phẩy. Nếu viết nhiều lệnh trên cùng một dòng thì dấu chấm phẩy là bắt buộc để phân tách lệnh. Riêng lệnh viết cuối cùng sẽ không cần kết thúc bằng dấu chấm phẩy.

    Nhìn chung Kotlin khuyến khích viết mỗi lệnh trên một dòng, qua đó tránh sử dụng dấu chấm phẩy.

    Khoảng trắng

    Khoảng trắng (whitespace) là tên gọi chung cho một số ký tự như dấu cách, dấu tab, dấu xuống dòng.

    Kotlin không sử dụng khoảng trắng với vai trò cú pháp. Tuy nhiên khoảng trắng có vai trò quan trọng trong định dạng code giúp code dễ đọc.

    IntelliJ IDEA hỗ trợ tự động định dạng code với tổ hợp Ctrl + Alt + L.

    Cặp dấu {} và code block

    Cặp dấu {} tạo ra một code block. Mỗi code block chứa không, một hoặc nhiều lệnh.

    Code block thường đóng vai trò thân của hàm, class, thân một số cấu trúc điều khiển, v.v., hoặc đứng tự do. Code block có thể lồng nhau.

    Ghi chú

    Ghi chú là những thông tin phụ không tham gia vào quá trình dịch. Kotlin compiler tự động bỏ qua ghi chú khi đọc và dịch mã nguồn.

    Kotlin cung cấp hai loại ghi chú tương tự như Java và C#: ghi chú trên một dòng // và ghi chú trên nhiều dòng /* */

    Ghi chú nhiều dòng còn được sử dụng để tạo ra tài liệu hướng dẫn của hàm/class, gọi là kdoc. Để giúp tự động tạo ra kdoc, bạn cần cài plugin kdoc-generator.

    Chúng ta sẽ trao đổi kỹ hơn về kdoc khi học về hàm trong Kotlin.

    Định danh

    Định danh là tên gọi các thành phần khác nhau trong code Kotlin như biến, hằng, hàm, class. Quy tắc đặt định danh chung trong Kotlin như sau:

    • Định danh chỉ chứa chữ cái, chữ số và dấu gạch chân
    • Định danh chỉ được phép bắt đầu bằng chữ cái hoặc dấu gạch chân
    • Định danh phân biệt hoa/thường.

    Kết luận

    Trong bài học này chúng ta đã tìm hiểu một số chủ đề cơ bản về Kotlin, bao gồm cách thức build ứng dụng, các đặc điểm chính, và một số đặc điểm trong cú pháp của ngôn ngữ.

    Lưu ý rằng các vấn đề đã trình bày trong phần cú pháp cơ bản sẽ áp dụng trong tất cả các bài học tiếp theo.

    + Nếu bạn thấy site hữu ích, trước khi rời đi hãy giúp đỡ site bằng một hành động nhỏ để site có thể phát triển và phục vụ bạn tốt hơn.
    + Nếu bạn thấy bài viết hữu ích, hãy giúp chia sẻ tới mọi người.
    + Nếu có thắc mắc hoặc cần trao đổi thêm, mời bạn viết trong phần thảo luận cuối trang.
    Cảm ơn bạn!

    Theo dõi
    Thông báo của
    guest

    0 Thảo luận
    Phản hồi nội tuyến
    Xem tất cả bình luận