[So sánh] Kotlin vs Swift – Android và iOS cùng hướng tới việc tạo ra một ngôn ngữ universal.

Hôm nay chúng ta sẽ cũng nhau tìm hiểu và so sánh về 2 ngôn ngữ mới nhất do Apple vs Google tạo ra, nhằm mục đích gì? Và bạn có thể thấy sự giống nhau đáng kinh ngạt của chúng như thế nào. Và ai là người đi trước và copy nhau hay mục đích là gì?.

Khi Kotlin nhận được sự hỗ trợ của Google. Những người không quen thuộc với Kotlin khá quan tâm đến mức độ tương thích / khả năng tương tác của nó với Java, thời gian trung bình cần thiết để hiểu rõ về nó, cũng như những lợi ích của việc sử dụng Kotlin nói chung.

Trong nỗ lực giải thích và giới thiệu ngôn ngữ theo cách ngắn gọn và rõ ràng nhất có thể, nhiều developer của Kotlin đã đề cập đến sự song song 3 năm giữa Kotlin và ngôn ngữ chính thức thứ hai của iOS – Swift. Kotlin, Swift của Android đã giúp mọi việc dễ dàng hơn và giúp tạo ra một hình ảnh mới cho ngôn ngữ. Tuy nhiên, hình ảnh này cũng gây ra tranh luận trong cộng đồng iOS, vì một số developer iOS đã không tìm thấy sự so sánh chi tiết nào cả và thấy Kotlin chỉ là một bản sao.

it nhất, cần lưu ý rằng mặc dù Swift xuất hiện vào năm 2013, nhưng Kotlin bắt nguồn từ năm 2011. Do đó, mặc dù việc so sánh Kotlin với Swift (theo thứ tự chính xác này) có thể thấy sự rắng Swift được giới thiệu sau đó cho nhiều đối tượng và việc sao chép Kotlin không được chứng minh.
Tuy nhiên, liệu so sánh có đúng? Nếu có, sự tương đồng này như thế nào? Và liệu sự tồn tại của nó có gợi ý thực tế rằng việc cung cấp ứng dụng cho cả iOS và Android vốn có thể trở nên dễ dàng và nhanh hơn trong tương lai không? Chúng ta sẽ hiểu rõ hơn qua bài sau đây.

Cú pháp (Syntax)

Cú pháp của Swift doesn giống như của Kotlin: trong các đoạn code nhỏ có thể có độ tương tự của ký tự lên tới 77%. Sự khác biệt chính có thể được nhìn thấy rõ trong bảng dưới đây:

Kotlin Swift
fun func
val let
null nil
trait protocol
constructor init
: ->
Any AnyObject
!! !

Khái niệm cơ bản, các classes và functions đều có cách thể hiện rất giống nhau. Không giống như Objective-C, các lệnh gọi của Swift tương tự như của Java và Kotlin, với hệ thống không gian tên và kiểu ký hiệu dấu chấm của chúng. Ví dụ, gọi hàm như thế nào trong hai ngôn ngữ:

Kotlin Swift
fun findStore(address: String, name: String): String { func findStore(_ address: String, _ name: String) -> String {
return “Store is $name, And The address is $address.” return “Store is \(name), And The address is \(address).”
} }
forecast(“Viet Nam”, “Cafedev.vn”) forecast(“Viet Nam”, “Cafedev.vn”)

Và đây là cách các lớp được khai báo trong cả hai:

Kotlin Swift
class Developer { class Developer {
var id = 0 var id = 0
fun Description() = func Description() -> String {
“A cafedev.vn with $id.” return “A cafedev.vn with \(id).”
} }
}

Nhiều ví dụ khác có thể được tìm thấy trong bài viết này, và nếu họ nói với chúng tôi điều gì đó, đó là cả hai ngôn ngữ đều có chung mục đích ban đầu là duy trì sự minh bạch và minh bạch nhất có thể, giúp cuộc sống của các developer dễ dàng hơn. Các hệ thống cú pháp của Kotlin và Swift Swift khá hiệu quả trong vấn đề đó, vì chúng được các nhóm phát triển đánh giá cao về sự thanh lịch của chúng.

Sự bảo toàn

Mặc dù cả Swift và Kotlin đều mạnh và static về cách typing, nhưng chúng cũng cho phép làm việc với các kiểu động. Bằng cách này, các ngôn ngữ vẫn ngắn gọn và linh hoạt, đồng thời cho phép loại bỏ sớm các lỗi và sự không phù hợp. Do đó, chúng được coi là rất an toàn và đặc biệt đáng tin cậy cho các dự án lớn.

Ngoài ra, hai ngôn ngữ kết hợp các cách tiếp cận để xử lý các giá trị tùy chọn và an toàn null / nil với Toán tử điều hướng an toàn? hoặc các kiểu Optional. Các biện pháp phòng ngừa được thể hiện gần như giống nhau ở cả Kotlin và Swift:

Kotlin Swift
val example: String? = null var example: String? = nil

Tính năng, đặc điểm

Bên cạnh null (nil) an toàn, chức năng và lớp, Kotlin và Swift có nhiều tính năng tương tự, bao gồm constants, variables, generics, protocols (traits), enumerated types, any (anyobject), error handling và các tính năng khác. Một số tính năng được triển khai trong hai ngôn ngữ có chung cách tiếp cận, nhưng được gọi khác nhau.

Ví dụ, trong Kotlin, người ta có thể tìm thấy các biểu thức lambda Java (thuận tiện, có hiệu quả cao nhưng không có sẵn để phát triển Java Android). Trong Swift đây là các blocks or closures, các thuật ngữ từ Objective-C. Cách cả hai biểu thức được gọi trong code là tương tự như cách chúng hoạt động.

Kotlin Swift
{ { _in
println(“Lambda Expression”) print(“Closure Expression”)
} }

Tính năng được gọi là thuộc tính được tính toán(computed properties) trong Swift, là một khai báo thuộc tính cụ thể với một lệnh gọi ‘get’, cũng có trong Kotlin:

Kotlin Swift
class Animal( class Animal {
var Genus: String, var Genus : String
var Species: String) { var Species : String
val binomialName: String var binomialName: String {
get() = “$Genus $Species” get {
} return “\(Genus) \(Species)”
}
}
}

Các tên tham số (hoặc tên đối số) cũng được sử dụng trong cả hai ngôn ngữ:

Kotlin Swift
fun daysoff(vacation: Int, weekends: Int): Int = vacation + weekends func daysoff(vacation: Int, weekends: Int) -> Int {
return vacation + weekends
}
daysoff(5, weekends = 8) daysoff(vacation: 5, weekends: 8)

Trên thực tế, thay vì liệt kê các tính năng tồn tại trong cả hai ngôn ngữ, việc liệt kê những tính năng đó sẽ dễ dàng hơn. Cụ thể, chỉ có Kotlin hỗ trợ:

  • class import
  • primary constructors and data classes
  • @annotations

Đồng thời, không giống như Kotlin, Swift có:

  • tuples
  • typealias
  • guard statement

Ý nghĩa đằng sau sự tương đồng

Hai ngôn ngữ chia sẻ rõ ràng ý thức hệ, vì chúng giải quyết cùng một vấn đề được tạo ra bởi ngôn ngữ tổ tiên của chúng: chúng ít dài dòng và hạn chế về chức năng, dễ đọc và thuận tiện hơn để làm việc. Đồng thời, cả Kotlin và Swift đều có thể tương tác với Java và Objective-C tương ứng, cho phép sử dụng chúng trong các dự án mới cũng như bảo trì các dự án cũ.

Hơn nữa, sự tương đồng mạnh mẽ của hai ngôn ngữ có thể hỗ trợ phát triển native của một ứng dụng cho cả iOS và Android. Điều này có nghĩa là các ứng dụng trên cả hai nền tảng có thể chia sẻ một code, tất nhiên, vì các ngôn ngữ và thư viện dành riêng cho hệ điều hành không giống nhau. Tuy nhiên, các cách tiếp cận logic và chức năng ứng dụng có thể rất giống nhau, nhờ sự tương đồng về cú pháp và chức năng giữa Swift và Kotlin. Điều này có thể làm cho sự phát triển, thử nghiệm và bảo trì nhanh hơn và dễ dàng hơn.

Ngôn ngữ Universal cho iOS và Android?

Mặc dù Swift và Kotlin giống nhau, nhưng những gì chúng giống với hầu hết là những người tiền nhiệm của chúng. Nói cách khác, Swift và Kotlin đang thu hẹp khoảng cách giữa Objective-C và Java. Tuy nhiên, một sự thay đổi từ Java sang Kotlin vẫn tự nhiên và trơn tru hơn so với chuyển từ Java sang Swift.

Nói chung, ý nghĩ thích nghi với điều gì đó mới không hấp dẫn đối với mọi người, một số developer dành thời gian của họ để đưa ra một ngôn ngữ mới, giống như với việc áp dụng Swift. Để đảm bảo quá trình chuyển đổi sẽ ít xảy ra thử thách đồng nghĩa với việc đảm bảo ngôn ngữ cuối cùng sẽ bắt kịp và đối với một ngôn ngữ mới, đây là ngôn ngữ đầu tiên và quan trọng nhất.

Khi phát triển di động không ngừng phát triển, công nghệ cũng vậy. Đó là lý do tại sao sau 5-10 năm, cả Kotlin và Swift đều có thể trở thành một thứ hoàn toàn khác biệt. Không có thông tin liệu các ngôn ngữ sẽ tiếp tục thu hẹp khoảng cách giữa nhau. Tuy nhiên, vì cả iOS và Android đều đang tìm kiếm công cụ phát triển di động tiện lợi, an toàn và nhanh nhất, cuối cùng họ có thể nói cùng một ngôn ngữ vào một ngày nào đó. Hy vọng là vậy cho ae dev cho khoẻ khi dev 2 nền tảng.

TechTalk via CafeDev