Kotlin vs. Swift: Android dan iOS bergerak menuju bahasa universal?



Teman, halo semuanya. Dalam sentuhannya Dmitry Kozhevin adalah seorang guru kursus dasar "Pengembang Android" di OTUS. Khusus untuk pembaca blog kami, saya telah menyiapkan terjemahan untuk artikel yang provokatif. Pendapat Anda sangat menarik, oleh karena itu, setelah membaca, saya mengundang semua orang untuk mengomentari publikasi ini.



Setelah Kotlin mendapat dukungan Google, kegembiraan penggemar Kotlin bukan satu-satunya reaksi. Mereka yang tidak terbiasa dengan Kotlin sangat memperhatikan tingkat kompatibilitasnya dengan Jawa, waktu rata-rata yang diperlukan untuk mempelajarinya, dan manfaat menggunakan Kotlin secara umum.

Dalam upaya mereka untuk menjelaskan dan menyajikan bahasa dengan cara terpendek dan paling jelas, banyak pengembang Kotlin merujuk pada paralel tiga tahun antara Kotlin dan bahasa iOS resmi kedua, Swift. Menyebut Kotlin "Swift of Android", semuanya menyederhanakan tugas dan membantu menciptakan gambar untuk bahasa tersebut. Namun, gambar ini juga menimbulkan kontroversi di komunitas iOS, karena beberapa pengembang iOS tidak menemukan perbandingan yang bagus dan melihat Kotlin hanya peniru.

Setidaknya harus dicatat bahwa meskipun Swift muncul pada 2013, Kotlin muncul kembali pada 2011. Akibatnya, bahkan jika membandingkan Kotlin dan Swift (dalam urutan yang tepat) mungkin nyaman karena paparan Swift sebelumnya kepada audiens yang lebih luas, klaim apa pun yang ditiru oleh Kotlin tidak dibenarkan.

Namun, apakah layak untuk dibandingkan? Jika demikian, seberapa jauh kesamaan itu berkembang? Dan apakah keberadaannya mengisyaratkan fakta bahwa rilis aplikasi untuk iOS dan Android pada awalnya dapat menjadi lebih sederhana dan lebih cepat di masa depan? Pengalaman luas ScienceSoft dalam layanan pengembangan aplikasi seluler memungkinkan spekulasi pada titik ini. Mari kita lihat itu.

Sintaks


Sintaks Swift tidak hanya mengingatkan pada sintaksis Kotlin - dalam potongan kode kecil bisa ada hingga 77% kesamaan garis .

Perbedaan utama dapat diringkas dalam tabel di bawah ini:

KotlinCepat
menyenangkanfunc
valbiarkan
nullnihil
sifatprotokol
konstruktorinit
:->
Apa sajaAnyobject
!!!

Fundamental, kelas, dan fungsi memiliki cara pengungkapan yang sangat mirip. Tidak seperti Objective-C, panggilan metode Swift mirip dengan panggilan Java dan Kotlin, dengan sistem namespace dan gaya notasi titik. Misalnya, beginilah tampilan fungsi dalam dua bahasa:

KotlinCepat
perkiraan menyenangkan (hari: Tali, cuaca: Tali): Tali {func forecast (_ hari: String, _ weather: String) -> String {
return "Hari ini adalah $ hari, ini $ cuaca."return "Hari ini \ (hari), ini \ (cuaca)."
}}
perkiraan ("Senin", "Hujan")perkiraan ("Senin", "Hujan")

Dan ini adalah bagaimana kelas dideklarasikan di keduanya:

KotlinCepat
kelas Residence {kelas Residence {
var numberOfRooms = 0var numberOfRooms = 0
Deskripsi menyenangkan () =func Keterangan () -> String {
"Rumah dengan $ numberOfRooms."return "Rumah dengan \ (numberOfRooms)."
}}
}

Anda dapat menemukan banyak contoh lain di artikel ini, dan jika mereka memberi tahu kami sesuatu, kedua bahasa memiliki tujuan yang sama - untuk sekompres dan setransparan mungkin, yang membuat kehidupan pengembang lebih mudah. Sistem sintaksis Kotlin dan Swift cukup efektif dalam hal ini, karena tim pengembangan sangat menghargai keanggunan mereka.

Keamanan


Meskipun Swift dan Kotlin kuat dan statis dalam hal pengetikan, mereka juga memungkinkan Anda untuk bekerja dengan tipe dinamis. Dengan cara ini, bahasa tetap ringkas dan fleksibel, memungkinkan untuk menghilangkan kesalahan dan ketidakkonsistenan awal. Oleh karena itu, mereka dianggap sangat aman dan terutama dapat diandalkan untuk proyek-proyek besar.
Selain itu, kedua bahasa ini menggabungkan pendekatan untuk menangani nilai opsional dan keamanan null / nil menggunakan operator navigasi yang aman "?" atau jenis opsi. Peringatan yang ditandai dengan "?" diungkapkan hampir identik di Kotlin dan Swift:

KotlinCepat
contoh val: String? = nolcontoh var: String? = nihil

Fitur


Selain keamanan nol (nihil), fungsi dan kelas, Kotlin dan Swift memiliki banyak fungsi serupa, termasuk constants, variables, generics, protocols/traits ( sifat diganti dengan antarmuka , catatan penerjemah), enumerated types, any (anyobject) , penanganan kesalahan dan lainnya. Beberapa fungsi yang diimplementasikan dalam dua bahasa berbagi pendekatan, tetapi dipanggil secara berbeda karena bahasa asli yang digunakan untuk fungsi-fungsi ini.

Misalnya, di Kotlin Anda dapat menemukan ekspresi Java lambda. Di Swift, ini adalah blok atau penutup, istilah dari Objective-C. Cara kedua ekspresi dipanggil ke dalam kode mirip dengan cara kerjanya.
KotlinCepat
{{_in
println ("Ekspresi Lambda")print ("Ekspresi Penutupan")
}}

Fungsi yang dikenal sebagai properti yang dikomputasi dalam Swift, yang merupakan deklarasi properti spesifik dengan panggilan untuk mendapatkan, juga termasuk dalam Kotlin:

KotlinCepat
Hewan kelas (kelas Hewan {
var Genus: String,var Genus: String
var Species: String) {var Species: String
val binomialName: Stringvar binomialName: String {
get () = "$ Genus $ Species"dapatkan {
}return "\ (Genus) \ (Spesies)"
}
}
}

Parameter nama (atau argumen bernama) juga digunakan dalam kedua bahasa:
KotlinCepat
libur menyenangkan (liburan: Int, akhir pekan: Int): Int = liburan + akhir pekanfunc daysoff (liburan: Int, akhir pekan: Int) -> Int {
liburan kembali + akhir pekan
}
hari libur (5, akhir pekan = 8)hari libur (liburan: 5, akhir pekan: 8)

Bahkan, alih-alih membuat daftar fungsi yang ada dalam kedua bahasa, akan lebih mudah untuk membuat daftar yang tidak. Yaitu, hanya Kotlin yang mendukung:

  • kelas impor
  • konstruktor utama dan kelas data
  • @ pemberitahuan

Pada saat yang sama, tidak seperti Kotlin, Swift memiliki:

  • tupel
  • typealias
  • pernyataan penjaga

Nilai kesamaan


Kedua bahasa jelas memisahkan ideologi, karena mereka memecahkan masalah yang sama yang diciptakan oleh bahasa nenek moyang mereka: mereka kurang bertele-tele dan terbatas dalam fungsinya, lebih mudah dibaca dan nyaman untuk bekerja dengan. Pada saat yang sama, Kotlin dan Swift tetap kompatibel dengan Java dan Objective-C, masing-masing, yang memungkinkan mereka untuk digunakan baik dalam proyek baru dan dalam melayani yang lama.

Selain itu, kesamaan kuat antara kedua bahasa dapat membantu dalam pengembangan aplikasi asli untuk iOS dan Android. Tentu saja, tidak dapat dikatakan bahwa aplikasi pada kedua platform dapat berbagi kode yang sama, karena bahasa dan perpustakaan untuk sistem operasi tertentu tidak identik. Namun, pendekatan logika dan fungsionalitas aplikasi bisa sangat mirip, berkat persamaan sintaksis dan fungsional antara Swift dan Kotlin. Ini dapat membuat pengembangan, pengujian dan pemeliharaan lebih cepat dan lebih mudah.

Bahasa universal untuk iOS dan Android?


Secara teoritis, Google sudah dapat menerima Swift sebagai bahasa resmi alih-alih Kotlin; bahkan pada tahun 2016 ada rumor tentang kemungkinan ini. Langkah seperti itu mungkin tidak akan menciptakan situasi di mana alat pengembangan lintas-platform akan menjadi tidak relevan, tetapi perbedaan antara kedua platform itu tidak diragukan lagi akan menjadi kabur.

Namun, langkah seperti itu juga tidak masuk akal, dan bukan hanya karena daya saing bisnis. Meskipun Swift dan Kotlin serupa, kebanyakan mereka mirip dengan pendahulunya. Dengan kata lain, Swift dan Kotlin menjembatani kesenjangan antara Objective-C dan Java. Namun, beralih dari Jawa ke Kotlin masih lebih alami dan lancar daripada beralih dari Jawa ke Swift.

Secara umum, tidak semua orang menyukai gagasan beradaptasi dengan sesuatu yang baru; beberapa pengembang meluangkan waktu untuk mulai menggunakan bahasa baru, seperti halnya dengan adopsi Swift . Untuk memastikan bahwa transisi ke bahasa baru tidak akan menjadi ujian yang sulit, berarti bahasa tersebut pada akhirnya mendapatkan popularitas, dan untuk bahasa baru hal ini sangat penting.

Pikiran perpisahan


Seiring perkembangan ponsel yang terus berkembang, begitu pula teknologi. Itulah mengapa dalam 5-10 tahun, baik Kotlin maupun Swift dapat menjadi sesuatu yang sangat berbeda. Belum diketahui apakah bahasa akan terus menjembatani kesenjangan di antara mereka sendiri. Namun, karena iOS dan Android mencari alat yang paling nyaman, aman dan tercepat untuk pengembangan ponsel, mereka pada akhirnya akan dapat berbicara bahasa yang sama pada suatu hari.

Source: https://habr.com/ru/post/id474224/


All Articles