Kotlin Sebagai Bahasa Multiparadigm dan Multiplatform
Multiparadigm
Mungkin sebagian dari kita masih asing dengan istilah multiparadigma dalam dunia pemrograman. Menurut Wikipedia, paradigma pemrograman adalah cara untuk mengklasifikasikan bahasa pemrograman berdasarkan fitur yang dimilikinya.
Paradigma di sini berkaitan dengan bagaimana kode dalam bahasa pemrograman diatur, seperti mengelompokkan kode atau memodifikasinya. Lebih tepatnya, struktur kode seperti apa yang dapat diterapkan pada bahasa pemrograman.
Ada beberapa paradigma yang umumnya dimiliki oleh sebuah bahasa pemrograman.
Ketika kita ingin mengklasifikasikan bahasa pemrograman berdasarkan cara penulisannya dalam sintaks, pemrograman berorientasi objek (OOP) dan pemrograman fungsional (FP) adalah 2 (dua) paradigma yang terkenal di kalangan pengembang.
Dari sudut pandang konstruksi, Kotlin sendiri mencakup keduanya. Anda dapat menggunakan gaya OOP dan FP, bahkan mencampurnya saat menulis sintaks Kotlin. Dengan dukungan tinggi untuk fitur-fitur seperti fungsi tingkat tinggi, tipe fungsi, dan lambda, Kotlin adalah pilihan yang tepat bagi Anda untuk menjelajahi pemrograman fungsional. Hampir semua Bahasa Tujuan Umum sekarang mendukung multiparadigma. Untuk lebih jelasnya mari kita bahas satu persatu kedua paradigma tersebut.
Object-oriented Programming
Sebuah bahasa pemrograman dapat diklasifikasikan ke dalam OOP jika data dan metode yang digunakan untuk memanipulasinya disimpan sebagai satu kesatuan yang dapat disebut sebagai objek. OOP memiliki fitur enkapsulasi yang sempurna.
Selanjutnya, satu-satunya cara agar objek atau pengguna lain dapat mengakses data adalah dengan metode objek.
Dengan cara ini, cara kerja suatu objek dapat diubah tanpa mempengaruhi kode lain yang menggunakan objek tersebut.
Kotlin menyediakan dukungan ekstensif untuk mengembangkan program berorientasi objek. Dalam OOP kita akan mengenal beberapa konsep seperti objek, kelas, properti, konstruktor, dll.
Dengan OOP kita dapat memecahkan masalah kompleks menjadi set yang lebih kecil dengan membuat objek. Objek memiliki 2 (dua) ciri utama yaitu state dan behavior.
Kita akan membahas komponen OOP Kotlin secara lebih mendalam dalam artikel terpisah. Sebagai permulaan, mari kita perhatikan contoh berikut:
- Sepeda motor adalah benda. Sepeda motor memiliki 2 (dua) roda yang bisa kita sebut dengan keadaan. Motor bisa jalan, bisa rem, juga bisa ganti gigi. Nah, ketiga hal ini bisa kita sebut sebagai perilaku.
- Kuda adalah objek. Kuda memiliki nama, warna, dan ras yang merupakan negara bagian Kuda. Kuda bisa berlari, makan, dan sebagainya. Inilah yang kita sebut perilaku.
Sebuah benda seperti sepeda motor juga dapat memiliki benda-benda kecil di dalamnya, misalnya roda, rem, bodi, mesin dll.
Semuanya bisa saling berhubungan dan berinteraksi. Selain itu, OOP juga didasarkan pada konsep Message Passing, yang merupakan jenis komunikasi antara proses dan objek. Itulah gambaran sederhana tentang konsep OOP yang akan kita pelajari.
Functional Programming
Ada begitu banyak persepsi tentang pemrograman fungsional. Setiap persepsi tergantung siapa yang menafsirkannya. Seorang programmer F-sharp akan menginterpretasikan FP sebagai apa yang ada di F-sharp.
Demikian pula pemrogram Swift akan menafsirkan FP seperti apa yang ada di Swift.
Namun, kita dapat menyimpulkan bahwa semua bahasa pemrograman yang mendukung warga negara kelas satu termasuk dalam FP. Warga kelas satu itu sendiri adalah entitas yang mendukung semua operasi yang umumnya tersedia untuk entitas lain.
Misalnya, suatu fungsi dapat dilewatkan sebagai parameter.
Pemrograman fungsional adalah paradigma yang saat ini sedang hype di kalangan pengembang.
Paradigma ini memperlakukan komputasi sebagai evaluasi fungsi matematika dan menghindari perubahan status atau data yang bisa berubah. Dalam FP, pemrograman dilakukan dengan ekspresi atau deklarasi.
Jadi fungsi mengembalikan nilai yang hanya bergantung pada argumen yang diteruskan ke fungsi.
Menghilangkan efek seperti perubahan keadaan yang tidak tergantung pada fungsi input, dapat mempermudah untuk memahami dan memprediksi perilaku suatu program. Ini adalah tujuan utama dari pemrograman fungsional.
Masih banyak developer yang langsung membayangkan OOP saat mendengar kata "Kotlin".
Padahal, seperti yang disebutkan sebelumnya, Kotlin adalah bahasa multiparadigma. Kotlin memiliki beberapa fitur yang memiliki gaya pemrograman fungsional, meskipun mereka tidak sepenuhnya pemrograman fungsional.
Mengapa demikian? Padahal, Kotlin adalah bahasa pemrograman berorientasi objek yang memiliki struktur fungsional. Ini berarti bahwa Kotlin juga merupakan bahasa pemrograman fungsional.
Pemrograman fungsional juga bertujuan untuk memudahkan kita dalam memahami suatu kode. Ide di balik FP adalah untuk menambah dan mengurangi hal-hal tertentu untuk membuat kode kita sedikit lebih mudah dipahami.
Kotlin memiliki banyak fitur menarik yang menjadikannya pemrograman fungsional seperti fungsi tingkat tinggi, jenis fungsi, fungsi ekstensi, lambda, dll.
Kita akan meninjau kembali pemrograman fungsional di Kotlin dan fitur-fiturnya dalam artikel terpisah.
Multiplatform
Multiplatform artinya mendukung lebih dari 1 (satu) platform. Ketika kita berbicara tentang aplikasi multiplatform, dapat dikatakan bahwa aplikasi ini tersedia di lebih dari 1 (satu) platform atau bahkan di berbagai platform. Platform yang dimaksud misalnya Android, iOS, Web, Desktop, dll.
Kotlin adalah bahasa pemrograman multiplatform. Kotlin bisa dipakai untuk mengembangkan aplikasi di banyak platform.
Namun sebenarnya tujuan multiplatform di Kotlin sendiri tidak hanya itu. Kotlin sendiri tentunya memiliki sebuah tujuan yang lebih penting, yaitu berbagi kode antar banyak platform.
Dengan dukungan untuk JVM, Android, JavaScript, iOS, Linux, Windows, macOS, dan bahkan sistem yang disematkan seperti STM32, Kotlin mampu menangani semua komponen aplikasi modern.
Banyak pengembang berpikir bahwa multiplatform berarti membuat proyek dan dapat langsung berjalan di semua platform. Tidak salah, tetapi tahukah Anda bahwa model seperti itu memiliki beberapa kekurangan?
Aplikasi modern pasti akan membutuhkan akses ke fitur-fitur tertentu pada platform yang dijalankannya. Misalnya, mengakses fitur-fitur pada ponsel seperti gyroscope, motion, GPS dan lain sebagainya.
Melakukan hal ini menggunakan framework multiplatform (cross platform) tentu tidak semudah menggunakan bahasa pemrograman tertentu untuk platform tertentu (Native). Misalnya saja seperti Android yang menggunakan Java atau Kotlin, kemudian seperti iOS menggunakan Swift atau Objective-C.
Belum lagi masalah performa, native jelas jauh lebih unggul dari lintas platform.
Kotlin menawarkan konsep multiplatform yang sedikit berbeda. Dengan model code-sharing yang ada, memungkinkan Anda untuk mengelompokkan beberapa kode sesuai dengan fungsinya masing-masing.
Misalnya, buat modul A yang berisi kumpulan kode yang dapat diakses oleh semua platform, modul B yang berisi kode khusus untuk platform tertentu, dan modul C yang ditargetkan untuk platform tertentu tetapi juga memiliki ketergantungan pada modul lain.
Perhatikan diagram berikut:
Itu kurang lebih gambaran modul yang bisa kita buat di project Kotlin multiplatform. Kita dapat membagi modul menjadi 3 (tiga) bagian berikut:
- Common Module : Modul ini berisi kode yang tidak spesifik untuk platform apa pun. Kita dapat menempatkan komponen-komponen yang dapat digunakan oleh semua modul dalam modul ini.
- Platform Module : Dalam modul ini kita dapat menambahkan komponen tertentu yang spesifik untuk satu platform. Biasanya modul ini merupakan implementasi dari modul umum.
- Regular Module : Merupakan modul generik yang mana menargetkan platform tertentu. Modul ini sendiri dapat menjadi ketergantungan atau bahkan ketergantungan dari modul platform.
Kotlin juga telah menyiapkan beberapa library khusus untuk mendukung proyek multiplatform, termasuk HTTP, serialisasi, dan coroutine. Semua library ini tentu saja dapat diterapkan ke modul umum dan kemudian diakses oleh modul lain. Anda masih dapat menggunakan library standar Kotlin di semua modul. Tentunya hal ini akan sangat membantu mempermudah proses pengembangan aplikasi.
Anda dapat melihat dokumentasi resmi dari Kotlin Multiplatform pada tautan di bawah ini: