Kotlin là gì – Tại sao phải học? – VNTALKING

Kể từ phiên bản Android Studio 3, Kotlin được tích hợp và người dùng không cần phải cài đặt thêm bất cứ plugin nào giống như Android Studio 2. Điều này càng khẳng định chắc chắn tin đồn trước đó: ngôn ngữ lập trình Kotlin sẽ là ngôn ngữ thay thế cho Java trong các ứng dụng Android. Vậy Kotlin là gì? Có đáng để bạn đầu tư công sức để học không?

Bản thân mình là người đã gắn bó với lập trình Android được 5 năm, khi mà Java nó đã ăn sâu vào tâm lý thì sự biến hóa “ nhanh chóng ” này đã làm cho mình gặp đôi chút khó khăn vất vả .
Tuy nhiên, quốc tế công nghệ tiên tiến luôn đổi khác và tất cả chúng ta phải đồng ý điều đó .

Chúng ta cũng tìm hiểu xem ngôn ngữ lập trình Kotlin là gì và tại sao người ta lại chọn Kotlin để thay thế Java nhé.

kotlin là gì

Kotlin là gì ?

Kotlin là một ngôn ngữ lập trình mã nguồn mở được phát triển bởi JetBrains (Cha đẻ của  IDE đình đám IntelliJ IDEA – được Google mua lại và chuyển thành Android Studio).

Cũng giống như Java, Kotlin là “ ngôn từ lập trình kiểu tĩnh ”. Tức là những biến cần phải được khai báo trước khi sử dụng. Đối với ứng dụng Android, tất cả chúng ta hoàn toàn có thể sử dụng Kotlin sửa chữa thay thế cho mã Java hoặc sử dụng đồng thời cả hai trong cùng một project .

🔥 VNTALKING vừa hoàn thiện khóa học Kotlin cơ bản, bạn đọc nhé:

Ưu điểm của ngôn từ lập trình Kotlin

# 1. Hỗ trợ mã JVM bytecode

Kotlin được biên dịch sang mã JVM bytecode hoặc JavaScript. Vì sinh sau đẻ muộn nên Kotlin thừa kế những điểm mạnh của những ngôn từ tiền bối. Tất nhiên là cũng phải khắc phục những hạn chế của những ngôn từ sinh ra trước đó .

Mình lấy một ví dụ đơn giản: bạn nào viết ứng dụng Android thì chắc ít nhiều ức chế chuyện ứng dụng “chết” bất thình lình. Kiểm tra Logcat thì NullpointerException xuất hiện đỏ lòm.

Kotlin sẽ không như vậy, việc kiểm tra NullPointerException được thực hiện từ lúc biên dịch ứng dụng chứ không phải đến lúc chạy ứng dụng. Do đó ứng dụng sẽ không bị NullPointerException khi chạy thật.

# 2. giá thành “ góp vốn đầu tư ” cho Kotlin gần như bằng 0

kotlin là gì

Bởi vì nó là mã nguồn mở và nó không tính tiền. Điều này chỉ đúng một phần thôi .
Thông thường, ngân sách cho quy trình tiến độ bảo dưỡng ứng dụng sẽ chiếm 80 % ngân sách. Do vậy, khi dự án Bất Động Sản chuyển sang một ngôn từ mới thì ngân sách là điều rất quan trọng. Rất suôn sẻ là việc quy đổi từ Java sang Kotlin lại cực đơn thuần và nhanh gọn .
JetBrains đã tích hợp một công cụ chất lượng cho IntelliJ IDE giúp chuyển hàng loạt mã Java sang Kotlin. Với công cụ này, bạn trọn vẹn yên tâm quy đổi cho cả dự án Bất Động Sản phức tạp đến hàng triệu dòng code mà không gặp trở ngại gì .

# 3. Tương thích trọn vẹn với những thư viện Java .

Theo như lời quảng cáo thì Kotlin hoàn toàn có thể sử dụng được với toàn bộ những những thư viện, framework viết bằng Java .
Với những dự án Bất Động Sản mới thì không sao, nhưng với những dự án Bất Động Sản cũ thì đây là điểm cực kỳ tốt .

Vì sao ư?

Bạn thử tưởng tượng với một dự án đã cũ, và cũng khá phức tạp. Sẽ ra sao nếu bạn phải chuyển đổi cả đống thư viện sang mã kotlini. Mình tin là bạn sẽ đập đầu vào tường mà than trời mà kêu rằng: Trời đã sinh ra Java, tại sao lại sinh ra Kotlin?

🔥 Xem thêm về Javascript cơ bản

# 4. Được những IDE tương hỗ không thiếu

Hầu hết những IDE tương hỗ Java thì cũng sẽ tương hỗ Kotlin. Nếu bạn sử dụng IntelliJ IDE thì sẽ thấy rằng gần như không có sự độc lạ khi viết mã Java hay Kotlin. Có chăng chỉ là thói quen khi nhìn cú pháp hơi khác nhau giữa hai ngôn từ mà thôi .
Vẫn còn đó những công cụ quen thuộc như : refactored, searched, navigated hay auto completed …
Với những dự án Bất Động Sản lớn thì việc sử dụng Kotlin có những ưu điểm như :

  • Độ rủi ro thấp: Vì bạn có thể viết code thử nghiệm bằng Kotlin trong một phần nhỏ của dự án mà không làm ảnh hưởng đến các phần khác
  • Sự gần gũi: Các API được viết bằng mã Kotlin sẽ nhìn giống hệt như mã Java
  • Dễ dàng Review: Cú pháp dễ đọc, dễ hiểu nên việc review code sẽ không còn là công việc nặng nhọc
  • Dễ học và tiếp cận: Cuối cùng, dự án vẫn còn thể hoàn thành mà không cần các thành viên phải thông thạo ngôn ngữ. Đơn giản vì Kotlin rất dễ học và tiếp cận, kể cả với các lập trình viên chưa có kinh nghiệm

Tóm lại, để tiếp cận với Kotlin khi đã biết ngôn từ Java là điều không quá khó. Bạn hoàn toàn có thể tái sử dụng lại bất kỳ mã Java nào có sẵn trong dự án Bất Động Sản. Tất cả những mã Java hoàn toàn có thể thao tác với Kotlin và ngược lại .
Đơn giản hơn nữa là bạn cứ viết bằng Java sau đó dùng công cụ để chuyển nó sang Kotlin. Nhưng nhớ là phải hiểu mình đang code gì đó nhé, không sau này khi maintain dự án Bất Động Sản là lĩnh đủ đấy .

🔥 Tham khảo thêm: Viết CODE đỉnh hơn – kinh nghiệm viết code dễ đọc và dễ bảo trì

Thực hành Code để hiểu rõ hơn sự ưu việt của ngôn từ lập trình Kotlin

# 1. Null Safety

Như đã chỉ ra ở trên, một trong những lỗi cơ bản nhất của Java, đó là việc truy cập vào một hàm hoặc thuộc tính(properties) của một đối tượng NULL, kết quả là Exception xảy ra. Trong Java thì đó là NullPointerException(NPE).

Với Kotlin, mạng lưới hệ thống hoàn toàn có thể phân biệt được những đối tượng người dùng hoàn toàn có thể bị NULL với những đối tượng người tiêu dùng không hề bị NULL .
Ví dụ : một biến với kiểu là String thì không hề bị NULL .

var a: String = “abc” 
a = null // compilation error

Để có thể gán giá trị NULL trong trường hợp này, bạn phải dùng đến toán tử “?

var b: String? = “abc” 
b = null // ok

Bây giờ, nếu bạn gọi một hàm hoặc truy vấn một thuộc tính ( Property ) của đối tượng người tiêu dùng a. Đảm bảo đối tượng người dùng a không khi nào bị NULL

val l = a.length

Nhưng nếu với trường hợp của đối tượng người dùng b thì lại trọn vẹn khác. Trình biên dịch sẽ cảnh báo nhắc nhở lỗi

val l = b.length // error: variable ‘b’ can be null

Còn trường hợp vẫn muốn truy vấn vào thuộc tính của đối tượng người dùng b thì sao ?
Đây là một số ít cách :

  • Cách 1: Kiểm tra điều kiện NULL
val l = if (b != null) b.length else -1
  • Cách 2: sử dụng toán tử (?) Safe Calls
b?.length

Kết quả trả về sẽ là length của b nếu b khác null hoặc null nếu ngược lại

# 2. Smart Casting

 // Java 
 if (node instanceOf Leaf) { 
     return ((Leaf) node).symbol; 
 } 
// kotlin 
if (node is Leaf) { 
    return node.symbol; // Smart casting, no need of casting 
} if (document is Payable && document.pay()) { 
    // Smart casting 
    println(“Payable document ${document.title} was payed for.”) 
}

Kotlin sử dụng kĩ thuật lazy evaluation(Tạm dịch: đánh giá lười biếng) giống như Java. Nếu đối tượng document không phải là Payable thì tất nhiên điều kiện thứ 2 document.pay() sẽ không được gọi.

Ngược lại, nếu điều kiện “document is Payable” là đúng thì Kotlin biết document là đối tượng Payable và sử dụng smart cast (ép kiểu thông minh)

  • Đừng bỏ qua: Miễn phí khóa học Kotlin for Android

# 3. Default Arguments

Default arguments là tính năng ít người chú ý nhưng nó thực sự có ích khi viết code. Nó giúp code ngắn gọn, dễ đọc và dễ bảo trì

class Developer(
    val name: String, 
    val age: Int, 
    val someValue: Int = 0, 
    val profile: String = “”) { 
} 
val amit = Developer(“Amit Shekhar”, 22, 10, “Android Developer”) 
val anand = Developer(“Anand Gaurav”, 20, 11) 
val ravi = Developer(“Ravi Kumar”, 26)

# 4. Named Arguments

Đây cũng là một đặc thù mà mình rất thích ở Kotlin

val amit = Developer(
    “Amit Shekhar”, 
    age = 22, 
    someValue = 10, 
    profile = “Android Developer”)
// This code is not readable. 
myString.transform(true, false, false, true, false) 
// the below code is readable as named arguments are present 
myString.transform( 
    toLowerCase = true, 
    toUpperCase = false, 
    toCamelCase = false, 
    ellipse = true, 
    normalizeSpacing = false)

# 5. Functional Programming

Java đến tận phiên bản 8 mới hỗ trợ Functional programing. Trong thì ngôn ngữ lập trình Kotlin đã có sẵn từ những phiên bản đầu tiên.

Nó gồm có higher-order functions, lambda expressions, operator overloading, lazy evaluation … và rất nhiều hàm làm việc tốt với Collections .

Sự kết hợp giữa lambda expressions và thư viện Kotlin sẽ làm cho việc lập trình của bạn dễ dàng hơn

val numbers = arrayListOf(-42, 17, 13, -9, 12) 
val nonNegative = numbers.filter { it >= 0 } 

println(nonNegative) listOf(1, 2, 3, 4) // list of 1, 2, 3, 4 
.map { it * 10 } // maps to to 10, 20, 30, 40 
.filter { it > 20 } // filters out 30, 40 
.forEach { print(it) } // prints 30, 40

# 6. Concise Code

Kotlin giúp cho dự án Bất Động Sản trở nên nhẹ nhàng hơn theo đúng nghĩa đen. Nghĩa là số dòng code giảm đi đáng kể .

// Java 
Button button = (Button) findViewById(R.id.button); 
button.setOnClickListener(new View.OnClickListener() { 
    @Override 
    public void onClick(View view) { 
        /* your code */ 
    } }); 
// Kotlin 
val button = findViewById(R.id.fab) as Button 
button.setOnClickListener { view -> /* your code */}

Hạn chế của ngôn từ lập trình Kotlin

Mặc dù Kotlin là ngôn từ sinh sau đẻ muộn được thừa kế những điểm mạnh của những ngôn từ sinh ra trước nhưng vẫn có những điểm số lượng giới hạn như :

# 1. Vẫn chưa có kiểu Aliases

Vì vậy, kiểu hàm ( function types ) vẫn phải viết một cách thủ công bằng tay, sẽ hơi thừa thãi trong mã nguồn .

# 2. Mặc định Class trong Kotlin là final .

Bạn sẽ phải thêm từ khóa “ Open ” nếu muốn nó trở thành class thường thì như trong Java. Mình không rõ tại sao lại để mặc định là final .
Nhưng đây có lẽ rằng sẽ là hạn chế cho những dự án Bất Động Sản có mã nguồn tích hợp giữa Kotlin và Java. Vì 1 số ít Java Framework sẽ tự động hóa bỏ lỡ từ khóa Final trong mã Kotlin. Điều này hoàn toàn có thể làm cho mã Kotlin chạy không đúng ý đồ của lập trình viên

# 3. Cộng đồng tương hỗ Kotlin còn hạn chế

Mặc dù Kotlin hoàn toàn có thể sử dụng lại hàng loạt thư viện hoặc mã nguồn Java nhưng nếu có bản chính chủ thì vẫn tốt hơn, đúng không ?

# 4. Không tự ép kiểu tài liệu

Kotlin sẽ không tự động ép kiểu với các kiểu dữ liệu nguyên thủy (primitive data type). Ví dụ: Kiểu Integer sẽ không thể tự chuyển sang kiểu long được. Vì vậy bạn sẽ cần phải ép kiểu một cách thủ công

Kiểu Hàm ( Function Type ) : Các bạn quan tâm nhé, hàm cũng gần như biến / hằng ở chỗ hàm cũng có “ kiểu ” của riêng nó. Cũng giống như biến / hằng được xác lập bởi một kiểu tài liệu nào đó, thì hàm cũng vậy. Nhưng kiểu hàm được xác lập bởi kiểu tài liệu của những tham số nguồn vào và kiểu tài liệu trả ra của hàm .

Kết luận

Với hàng loạt những ưu điểm, cộng với sự hậu thuẫn từ Google, chắc chắn ngôn ngữ lập trình Kotlin sẽ là tương lai của lập trình di động. Do vậy, nếu là người thức thời thì bạn cũng nên học Kotlin dần đi là vừa.

Qua bài viết này, bạn đã biết Kotlin là gì, những ưu và điểm yếu kém của Kotlin. Từ đã chắc rằng bạn cũng đã có câu vấn đáp cho việc có nên học Kotlin hay không ?
Nếu bạn có ý tưởng sáng tạo gì khác thì comment bên dưới để mọi người cùng đàm đạo. Mình luôn luôn nghênh đón .

Source: https://wikifin.net
Category: Blog

Leave a Comment

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *