Paradigma Pemrograman Fungsional Pada Skala Perusahaan – Semakin banyak pengembang sekarang dapat menanamkan pemrograman fungsional di dalam bahasa pemrograman tradisional, termasuk yang ditemukan dalam basis kode sistem perangkat lunak tingkat perusahaan. Sayangnya, banyak organisasi besar ragu-ragu untuk merangkul paradigma pemrograman fungsional pada skala yang berarti, terlepas dari peluang yang ditawarkannya.
Paradigma Pemrograman Fungsional Pada Skala Perusahaan
Baca Juga : Contoh Program C++ yang Sederhana dan Penjelasannya
pythonsprints – Mari kita periksa beberapa dasar pemrograman fungsional dan bagaimana hal itu dapat dengan mudah disesuaikan dengan skenario pengembangan aplikasi tingkat perusahaan. Kami juga akan melihat beberapa alat dan teknik untuk dipertimbangkan setelah Anda memutuskan untuk melakukan pendekatan fungsional.
Dasar-dasar pemrograman fungsional
Sebuah fungsi murni adalah salah satu yang tidak memiliki negara yang tersimpan di sekitarnya, membuat masing-masing berubah negara aplikasi. Diberikan input yang sama, fungsi murni akan selalu kembali dengan output yang sama. Dalam bahasa berorientasi objek, seperti Java atau C#, hasil dari panggilan fungsional yang sama dapat berbeda jika status objek berubah. Bahkan bahasa prosedural seperti C dapat menghasilkan variabel global dan melakukan panggilan database; perubahan pada database ini juga akan mengubah output.
Pendekatan fungsional cenderung deklaratif bukan keharusan : Fungsi memberitahu komputer apa yang harus dilakukan, bukan bagaimana melakukannya. Namun, ini juga berarti bahwa fungsi tidak menyediakan metode kontrol alur kerja apa pun. Seorang programmer prosedural harus mengulang setiap baris dalam database, mencari nilai yang diinginkannya dan kemudian menambahkan nilai tersebut ke daftar terpisah. Atau, programmer deklaratif dapat dengan mudah menulis prosedur SQL, daripada menentukan lokasi penyimpanan file atau proses pengambilan data.
Pro dan kontra dari pemrograman fungsional di perusahaan
Ketika komunitas Perl open-source menyusun rencana lima tahun untuk mengimplementasikan kompiler Perl 6, programmer terkenal Audrey Tang seorang diri menulis implementasi referensi di Haskell di waktu luangnya, menyelesaikan proyek hanya dalam waktu kurang dari satu tahun. Tingkat produktivitas yang tinggi ini merupakan keuntungan besar dari pemrograman fungsional.
Tentu saja, tidak semua programmer memiliki keahlian Aubrey Tang. Bahkan jika sebuah perusahaan berhasil mempekerjakan programmer sekaliber ini, tidak ada jaminan bahwa orang itu akan ada ketika basis kode masuk ke mode pemeliharaan. Kelemahan lainnya adalah bahasa pemrograman fungsional seperti Lisp, Haskell dan F# tidak begitu populer. Faktanya, Paul Graham, seorang programmer dan pengusaha yang terkenal karena karyanya dalam mendorong penggunaan Lisp, berteori dalam posting blog tahun 2003 bahwa manajer tim pengembangan bersandar pada bahasa populer seperti Java, C dan Python karena membuatnya mudah diganti.
Di atas semua itu, produk pengembangan aplikasi yang menawarkan fungsionalitas out-of-the-box kemungkinan akan berisi plugin yang berbasis dalam bahasa populer , seperti Java dan Python. Ini berarti kode yang dipanggang akan berkisar pada pemrograman prosedural atau berorientasi objek. Akhirnya, ketika tiba saatnya bagi perusahaan untuk membuat sistem aplikasi baru, manajemen kemungkinan akan enggan mengambil risiko meninggalkan sistem pengembangan ini demi paradigma pemrograman fungsional.
Terlepas dari tantangan ini, ada beberapa cara agar perusahaan yang termotivasi dapat berhasil merangkul pemrograman fungsional. Mari kita tinjau beberapa teknik ini.
Kasus penggunaan tingkat perusahaan untuk pemrograman fungsional
Hal-hal seperti pemrosesan batch, pengembangan front-end, dan manipulasi bahasa prosedural menghadirkan beberapa kasus penggunaan praktis untuk pemrograman fungsional di perusahaan. Selain itu, kasus penggunaan ini juga memberikan peluang bagus untuk secara bertahap memperkenalkan paradigma pemrograman fungsional dalam basis kode yang ada.
Aplikasi batch yang mengambil satu set data dan mengubahnya, atau mengekstrak, mengubah, dan memuat ( ETL ) sangat cocok untuk pendekatan fungsional murni. Aplikasi batch dan ETL tidak bergantung pada informasi status yang tersimpan dan dapat diubah, seperti daftar aktivitas pelanggan yang memengaruhi atau meminta data. Untuk tujuan ini, kompiler dapat dianggap sebagai jenis khusus dari program batch, dan bahasa seperti Haskell dapat memperkenalkan pendekatan fungsional sambil melacak status menggunakan berbagai perpustakaan.
Paradigma pemrograman fungsional juga berguna untuk pengembangan front-end. Pendekatan desain antarmuka pengguna modern sering kali memisahkan tampilan data ke pengguna dari proses back-end yang mengumpulkan data tersebut. Adopsi pemrograman fungsional oleh tim pengembangan dapat dimulai dengan metode panggilan API sederhana yang membuat data pelanggan menjadi tampilan halaman web.
Pendekatan untuk jenis pemrograman fungsional front-end ini digunakan secara luas saat ini. React, misalnya, adalah library JavaScript front-end yang mendukung pemrograman fungsional, bahkan untuk halaman web individual. Tren yang sama ini juga menyentuh pengembangan aplikasi seluler. Misalnya, Apple Swift memungkinkan pengembang untuk memanggil tipe sebagai fungsi, dan kerangka kerja pohon widget Flutter menggunakan pendekatan manajemen keadaan yang menyediakan blok bangunan untuk pemrograman fungsional.
Akhirnya, komunitas desainer yang bekerja pada bahasa pemrograman fungsional juga telah mengembangkan cara untuk menanamkan kode fungsional dalam bahasa prosedural klasik dan kerangka kerja seperti C dan Java. LINQ, ekstensi kueri data yang ditemukan di .NET dan bahasa kueri “what not how, no state” yang disematkan, adalah salah satu contohnya. Contoh lain adalah paket java.util.function , yang memungkinkan pembuatan kode deklaratif di Java menggunakan gaya fungsional.
Mendapatkan dukungan untuk pemrograman fungsional
Cara paling mudah untuk menambahkan pemrograman fungsional adalah dengan menyematkannya ke dalam kode yang ada, idealnya disertai dengan dokumentasi yang banyak dan tinjauan kode yang menyeluruh .
Namun, memperkenalkan pustaka fungsional seperti React akan membutuhkan lebih banyak dukungan dari tim pengembangan dan manajemen. Membangun seluruh subsistem berdasarkan paradigma pemrograman fungsional akan memakan waktu, kemungkinan dengan hasil yang tertunda — proposisi yang selalu rumit di perusahaan. Yang mengatakan, dalam kasus ketika seorang programmer tunggal yang bereksperimen dengan alat pemrograman fungsional dan membuktikan bahwa mereka dapat membangun API baru lebih cepat daripada proses yang ada memungkinkan, pasti ada kemungkinan mereka menarik perhatian dan mendapatkan izin untuk bergerak lebih jauh.
Pertanyaan logis berikutnya adalah bagaimana perusahaan akan mendukung kode baru dari waktu ke waktu. Sekali lagi, itu akan membutuhkan dukungan dari tim, dokumentasi, dan dukungan dari grup arsitektur. Tanpa dukungan ini, upaya untuk mengejar pemrograman fungsional tidak mungkin berhasil. Cobalah untuk menempatkan potongan-potongan itu sedini mungkin — itu akan sangat berharga dalam jangka panjang.