12 tahun yang lalu, ketika saya memulai kelas formal saya di bidang ilmu komputer, hal pertama yang saya pelajari adalah "data" berarti "informasi". Beberapa hari setelah itu, kami memulai pemrograman konvensional, dimana kode dan data diperlakukan secara terpisah. Sebagai contoh, hanya data yang bisa dilewatkan sebagai argumen fungsional. Sulit bagi saya untuk mencerna bahwa "kode, yang juga informasi, tidak diperlakukan sebagai data". Saya sangat merasa bahwa ini akan meningkatkan kompleksitas softwares dalam jangka panjang.
Cara Mudah Pemrograman
Suatu sistem melakukan tiga hal - membaca, mentransformasikan (memproses data), dan menulis. Dengan kata lain - matematika (the transform part), dan efeknya dalam kehidupan nyata (baca / tulis part). Transformasi data memang merupakan konsep matematis, dan dengan bantuan baca dan tulis kita membuat matematika (bagian transformasi) bermanfaat bagi dunia nyata. Membawa "transformasi" adalah bagian sepenuhnya di dalam domain matematika memiliki keuntungan sendiri untuk menggunakan matematika tanpa rasa takut (kemungkinan kesalahan) untuk analisis sistem, membuat sistem lebih mudah dilihat secara matematis. Hasil tangkapannya adalah untuk memperlakukan elemen transformasi, data dan fungsi, sama-sama.
Awalnya, dulu itu kode lebih besar daripada data, sehingga pengiriman data melalui kawat pun layak dilakukan. Tapi seiring berjalannya waktu, data menjadi besar, mengirim kode ke sistem melalui kawat dan menjadi k]ebutuhan, mengistirahatkan data pada sistem secara utuh. Dengan data yang besar, kebutuhan jam adalah memperlakukan kode sebagai data, sehingga kode tersebut dapat dijadikan argumen ke fungsi meta lain pada sistem yang memiliki data besar yang mengharapkan algoritma untuk transformasi.
Secara kasar, kode adalah algoritma, algoritma adalah fungsi matematika, fungsi pada gilirannya benar-benar tabel look-up, yaitu data. Oleh karena itu, dengan prinsip ini, semua kode atau fungsi adalah data. Ini adalah landasan paradigma fungsional. Pemrograman fungsional adalah pemrograman dengan fungsi, mereka memperlakukan fungsi dan data juga. Prinsip lain yang saya suka, untuk mengendalikan kompleksitas, aturan seharusnya tidak rumit itu sendiri.
Aturan jempol ditulis ulang untuk paradigma fungsional:
Read-write dan transformasi (algorithms) harus terpisah.
Gunakan variabel yang tidak berubah. Mencegah penggunaan pernyataan penugasan ulang.
Mencegah efek samping (input / output atau mengubah variabel di tempat), setiap fungsi HANYA akan mengembalikan hasil yang diharapkan.
Gunakan fungsi transparan yang merujuk (kadang-kadang disebut fungsi murni) tanpa efek samping, yaitu jika x = y, f (x) dan f (y) harus sama selamanya. Unit testing adalah suatu keharusan untuk setiap fungsi.
Salah satu pola desain utama yang harus diikuti adalah menggunakan ungkapan bukan instruksi, yaitu harus bersifat deklaratif. Mencegah penggunaan loop seperti untuk / sementara - gunakan pernyataan rekursif seperti yang ditunjukkan di atas untuk menghitung jumlah. Beritahu komputer apa yang perlu dilakukan, bukan bagaimana melakukannya - ini mengurangi kesalahan, terutama kasus tepi.
Dengan kebutuhan untuk mengendalikan kompleksitas sistem dan desain awal, pola desain untuk komposisi fungsional dapat dilakukan untuk mengikuti beberapa struktur aljabar dasar, yang pada gilirannya menjadi lebih kuat.
Share This :

comment 0 comments
more_vert