Ciri -ciri pengaturcaraan fungsional, contoh, kelebihan, kekurangan

Ciri -ciri pengaturcaraan fungsional, contoh, kelebihan, kekurangan

The Pengaturcaraan fungsional Ia sepadan dengan corak pengaturcaraan yang berdasarkan konsep menyatakan prosiding program sebagai model fungsi matematik dan bukannya sebagai urutan arahan yang jelas kepada pemproses, yang merupakan konsep utama dalam pengaturcaraan penting.

Bahasa berfungsi menekankan ayat dan istilah dan bukannya melaksanakan arahan. Dalam program ini, hasilnya hanya bergantung kepada parameter yang diserahkan kepada fungsi, tidak seperti jenis lain yang mematuhi keadaan tempatan atau global.

Bagaimana fungsi pemetaan dalam bahasa pengaturcaraan berfungsi Haskell beroperasi. Sumber: oleh Pluke - Kerja Sendiri, CC0 Commons.Wikimedia.org.

Namanya berasal dari fungsi matematik, yang merupakan peruntukan satu set penyertaan kepada satu set output. Fungsi matematik benar -benar tidak berfungsi, tetapi menerangkan model proses, menerangkan melalui formula apa set penyertaan dihasilkan dalam fungsi.

[TOC]

Idea Asas

Asas di mana pengaturcaraan berfungsi berasaskan adalah pengiraan lambda, yang dibangunkan pada dekad ketiga abad kedua puluh untuk menentukan dan menerapkan fungsi. LISP adalah bahasa pengaturcaraan pertama jenis ini, yang direka pada tahun 1960.

Walaupun kebanyakan bahasa pengaturcaraan terdiri daripada entri luaran, output dan pembolehubah yang boleh dikonfigurasikan atau digunakan dari fungsi, pengaturcaraan berfungsi menghalangnya. Ideanya ialah setiap kali fungsi dipanggil dengan parameter yang sama, ia mesti mengembalikan nilai yang sama.

Ciri -ciri

Bahasa pengaturcaraan fungsional dipanggil aplikasi, kerana fungsi digunakan untuk parameter mereka, sebagai tambahan kepada deklaratif dan bukan procedural, kerana definisi menentukan apa yang anda ingin hitung dan bukan bagaimana ia dikira.

Fungsi tulen

Fungsi adalah tulen apabila ia tidak mempunyai kesan sampingan yang dapat dilihat, seperti perubahan pembolehubah luaran, perubahan dalam sistem fail, dll.

Fungsi -fungsi ini dianggap meyakinkan, kerana mereka tidak akan secara nyata mengubah apa -apa pembolehubah di mana bahagian -bahagian lain kod boleh bergantung pada beberapa waktu. Nampaknya tidak selesa dengan sekatan ini, tetapi harus dipertimbangkan bahawa fungsi -fungsi ini adalah deterministik, boleh diramal dan boleh dikomponasi.

Fungsi Kelas Pertama

Fungsi dianggap sebagai nilai yang boleh diberikan kepada pembolehubah, sehingga mereka dapat lulus dan kembali dari fungsi lain. Iaitu, fungsi boleh digunakan seolah -olah ia adalah parameter atau sebagai nilai yang dikembalikan.

Ini menunjukkan bahawa fungsi itu boleh dihantar seperti itu, bukan hanya hasil fungsi. Sebagai contoh, pertimbangkan fungsi ganda (x), yang mengembalikan dua kali nilai parameter inputnya. Oleh itu, berganda (2) akan kembali 4.

Ia dapat melayani anda: evolusi penyelenggaraan perindustrian: dari asal hingga sekarang

Seperti fungsi kelas pertama, kod (double (double (2)), akan sama dengan kod ganda (4). Ini membolehkan sarang berfungsi sebagai parameter yang lain dan sebagainya.

Ketelusan rujukan

Ia merujuk kepada hakikat bahawa dalam corak pengaturcaraan ini tidak ada ayat tugasan. Iaitu, pembolehubah baru harus ditakrifkan jika nilai tambahan dikehendaki. Oleh itu, keadaan pemboleh ubah adalah tetap pada setiap masa.

Ini menghapuskan kemungkinan sedikit kesan yang tidak diingini, kerana mana -mana pemboleh ubah boleh digantikan dengan nilai sebenar semasa mana -mana titik pelaksanaan program.

Rekursi

Dalam pengaturcaraan berfungsi tidak ada gelung "untuk" dan "sementara". Sebaliknya, lelaran bergantung pada rekursi. Rekursi dilaksanakan menggunakan fungsi rekursif, yang menyebut diri mereka berulang -ulang sehingga kes asas dicapai.

Kebolehubahan

Pembolehubah tidak berubah, iaitu, tidak mungkin untuk mengubah suai pemboleh ubah sebaik sahaja ia dimulakan. Walaupun pemboleh ubah baru dapat dibuat, pembolehubah yang ada tidak dibenarkan.

Contoh

Pendekatan penting dan deklaratif

Contohnya, perbezaan antara pendekatan ini boleh dianalisis, melaksanakan operasi yang sama dalam kedua -dua peruntuk.

Ia adalah pengiraan yang sama, dengan hasil yang sama. Walau bagaimanapun, seperti yang dapat dilihat, kod imperatif terperinci dan tidak jelas segera. Sebaliknya, pendekatan deklaratif boleh dibaca dan jelas, kerana ia memberi tumpuan kepada apa yang anda mahu dapatkan.

Fungsi tulen

Anda boleh menjelaskan apa yang ditakrifkan sebagai fungsi murni dan tidak suci dengan beberapa contoh asas:

Fungsi seperti objek kelas pertama

Bermaksud menggunakan fungsi dengan cara yang sama bahawa data digunakan. Oleh itu, mereka boleh lulus sebagai parameter ke fungsi lain. Dalam contoh berikut, anda boleh lulus fungsi int sebagai parameter ke fungsi peta:

>>> senarai (peta (int, ["1", "2", "3"]))

[1, 2, 3]

Mereka boleh diberikan kepada pembolehubah dan mengembalikannya. Sebagai contoh, kod berikut boleh diberikan fungsi hello_world, kemudian melaksanakan pembolehubah sebagai fungsi.

Kelebihan

- Fokus pada apa yang anda ingin capai (deklaratif) dan bukan bagaimana untuk mencapainya (penting).

- Mereka tidak mengandungi ayat peruntukan, jadi selepas pembolehubah diberi nilai, mereka tidak akan lagi berubah. Oleh itu, program berfungsi tidak mengandungi kesan sampingan.

Boleh melayani anda: bencana teknologi

- Aliran logik jelas, kerana keadaan kurang tersebar dan tidak diubah suai secara tersirat.

- Mengakui konsep penilaian tertunda, yang bermaksud bahawa nilai hanya dinilai dan disimpan apabila perlu.

- Oleh kerana fungsi murni tidak mengubah keadaan dan bergantung sepenuhnya di pintu masuk, mereka mudah difahami. Nilai pulangan yang diberikan oleh fungsi tersebut adalah sama dengan hasil yang dihasilkan oleh mereka.

- Oleh kerana sifat fungsi murni menghalang pembolehubah atau sebarang data luaran dari perubahan, pelaksanaan persetujuan menjadi berkesan.

- Fungsi dianggap sebagai nilai, bergerak ke fungsi lain seperti parameter. Ini meningkatkan pemahaman dan kebolehbacaan kod.

- Fungsi tulen mengambil parameter sekali, menghasilkan jalan keluar yang tidak berubah. Dengan menggunakan nilai yang tidak dapat diubah, pemurnian dan ujian difasilitasi.

Lebih pendek dan lebih senang difahami

Mereka lebih pendek dan lebih mudah difahami daripada imperatif. Kajian telah menunjukkan bahawa produktiviti pengaturcara purata dari segi baris kod lebih kurang sama untuk mana -mana bahasa pengaturcaraan, menerjemahkan produktiviti yang lebih besar.

Tiada aliran kawalan

Semasa memanggil fungsi, anda tidak boleh mempunyai kesan yang berbeza dari pengiraan hasilnya. Ini memerintah sumber kesilapan yang penting, juga membuat perintah pelaksanaan tidak relevan, kerana tiada kesan sampingan dapat mengubah nilai ekspresi, dapat dinilai pada bila -bila masa.

Pengaturcara menggembirakan beban menubuhkan aliran kawalan. Oleh kerana ungkapan dapat dinilai pada bila -bila masa, pembolehubah dapat digantikan dengan nilai mereka.

Otonomi ini memberi nikmat bahawa program berfungsi lebih mudah diurus secara matematik daripada program konvensional.

Kekurangan

- Paradigma pengaturcaraan berfungsi tidak mudah, jadi menjadi sukar difahami untuk pemula.

- Sukar untuk dijaga, kerana semasa pengekodan banyak objek berkembang.

- Dalam beberapa kes, ketika menulis fungsi tulen pengurangan dalam kebolehbacaan kod itu disebabkan.

- Nilai yang tidak berubah dalam kombinasi dengan rekursi boleh menyebabkan pengurangan drastik dalam prestasi sistem.

- Penggunaan semula sangat rumit dan memerlukan refactorisasi yang berterusan.

- Menulis program dengan gaya rekursif dan bukannya menggunakan ikatan atau gelung boleh menjadi tugas yang sangat tidak menggalakkan.

- Objek mungkin tidak mewakili masalah dengan betul.

Ia boleh melayani anda: 50 blog permainan video yang disyorkan

- Walaupun menulis fungsi tulen ternyata mudah, menggabungkannya dengan seluruh aplikasi dan dengan operasi input/output agak sukar

Aplikasi

Program Perisikan Buatan dijalankan dalam bahasa pengaturcaraan berfungsi dan teknik kecerdasan buatan berhijrah ke aplikasi dunia nyata.

Juga menonjol dalam pelaksanaan model matematik yang kompleks. Atas sebab ini, salah satu penggunaan utama bahasa berfungsi secara tradisinya menjadi akademik. Ia berguna untuk membangunkan spesifikasi dan pelaksanaan prototaip yang boleh dilaksanakan.

Banyak bahasa berfungsi juga menonjol untuk melaksanakan pemprosesan selari. Ini disebabkan oleh keupayaannya untuk memanfaatkan fungsi murni, yang selalu mengembalikan nilai yang sama tanpa mengira perintah di mana mereka dilaksanakan.

Metodologi fungsional

WhatsApp menggunakan bahasa pengaturcaraan erlag, yang mengikuti model pengaturcaraan berfungsi, yang membolehkan lebih daripada seratus pekerjanya mengendalikan data milik kira -kira 1.600 juta orang.

Satu lagi pembawa penting gaya pengaturcaraan berfungsi ialah Haskell. Ia digunakan oleh Facebook dalam sistem antispam anda. Malah JavaScript, salah satu bahasa pengaturcaraan yang paling banyak digunakan, menawarkan sifat bahasa berfungsi yang dinamik.

Bahasa yang menyokong pengaturcaraan berfungsi

D

Ia direka selepas C ++, memperoleh semua faedahnya sambil menghapuskan kelemahannya yang diperhatikan kerana harus bersesuaian dengan C.

Erlang

Ia sangat berskala dan serentak, menjadikannya sesuai untuk telekomunikasi dan aplikasi lain yang menerima sejumlah besar data dalam urutan yang tidak dapat diramalkan.

Haskell

Ini adalah bahasa pengaturcaraan fungsional yang murni, yang menggunakan pengiraan lambda untuknya.

Ml

Ia digunakan dalam jenis matematik, saintifik, kewangan, analisis dan lain -lain jenis lain. Salah satu kekuatannya adalah membuat perisian untuk mengendalikan program lain.

Objektif Caml

Ia adalah bahasa sumber terbuka yang berdasarkan caml. Ia cenderung untuk mewujudkan program yang sangat ringan, membantu mereka dimuatkan dan dilaksanakan lebih cepat daripada yang dicipta oleh bahasa lain.

Skim

Ia berdasarkan struktur sintaks dan algol LISP. Terima kasih kepada kesederhanaannya, ia digunakan dalam banyak kursus komputer sebagai pengenalan kepada reka bentuk program untuk menunjukkan beberapa asas pengaturcaraan komputer.

Rujukan

  1. Whho menganjurkan ini (2019). Belajar Pengaturcaraan Fungsian: Gaya pengekodan ini akan meniup fikiran anda. Diambil dari: whoisostingthis.com.
  2. Andrea Bertoli (2019). Pengenalan yang mencukupi untuk Programmmmm Fungsional. Diambil dari: Dev.ke.
  3. Hacker Earth (2020). Pengaturcaraan fungsional. Diambil dari: Hakereph.com.
  4. Clojure (2020). Pengaturcaraan fungsional. Diambil dari: Clojure.org.
  5. Akhil Bhadwal (2020). Pengaturcaraan Fungsian: Konsep, Pengembaraan, Kekurangan, dan Aplikasi. HACKR. Diambil dari: HACKR.Io.
  6. Guru99 (2020). Apakah pengaturcaraan berfungsi? Dengan tutorial contoh. Diambil dari: Guru99.com.