Setelah membaca postingan @ray vernagus tentang menggunakan ArcObjects dengan F # , saya bertanya-tanya ... jenis masalah SIG apa yang lebih baik ditangani oleh Pemrograman Fungsional , yang bertentangan dengan bentuk pemrograman yang lebih tradisional?
Mungkin lebih khusus, kapan saya akan lebih baik menggunakan F # dibandingkan dengan C # dengan ArcObjects?
arcobjects
Kirk Kuykendall
sumber
sumber
R
dan Mathematica , yang memberikan banyak contoh terkait GIS.Jawaban:
Satu-satunya alasan terbesar mengapa pemrograman fungsional kembali ke mode akhir-akhir ini adalah konkurensi. Mampu melakukan pemrosesan secara paralel karena alasan kinerja menjadi sangat penting dalam komputasi secara keseluruhan dan GIS tidak terkecuali. Pemrograman fungsional memiliki beberapa manfaat serius dalam konteks menciptakan sistem paralel karena seberapa banyak penekanannya pada keabadian dan rekursi. Karena sifat-sifat ini sebagian besar bahasa fungsional cenderung hanya menghindari masalah seperti penguncian yang membuat pemrograman paralel dalam bahasa imperatif menjadi sakit kepala besar.
Yang sedang berkata, saya pikir bidang GIS memiliki jalan panjang sebelum Anda benar-benar dapat mengambil keuntungan dari banyak apa yang pemrograman fungsional tawarkan. Teknologi dan perpustakaan yang ada terlalu terfokus pada Orientasi Objek dan pendekatan yang umumnya penting. Sayangnya, hanya karena Anda dapat menggunakan ArcObjects dari F # tidak berarti pustaka yang mendasarinya akan benar-benar bermain bagus dengan gaya pemrograman fungsional.
sumber
Tidak hanya pemrograman, tetapi ArcToolbox mengikuti paradigma desain yang lebih fungsional.
Pendekatan fungsional ArcToolbox memungkinkan kita melakukan analisis spasial tanpa perlu menulis kode. Pengguna dapat bekerja dengan sekumpulan elemen sederhana seperti lapisan, dan tidak khawatir tentang iterasi, mempertahankan status, atau efek samping yang rumit.
sumber
Saya sendiri baru mengenal pemrograman fungsional jadi ini hanya beberapa pemikiran.
Ada contoh yang menarik dari Ray Tracer di F # yang menggambarkan beberapa kekuatan pemrograman fungsional, yaitu fungsi tingkat tinggi , rekursi , paralelisme , dan pencocokan pola . Memperluas beberapa konsep-konsep itu akan tampak bahwa matematika raster adalah salah satu bidang utama dalam GIS yang mungkin cocok untuk pemrograman fungsional.
sunting: Berikut contoh lain dari situs yang sama: Aturan 30 Cellular Automata
Pikiran lain adalah bahwa Anda tidak perlu menulis seluruh program Anda dalam F #. Anda dapat memiliki program utama ditulis dalam C # dan membuat proyek / rakitan dalam F # yang memecahkan masalah pemrograman fungsional spesifik. Saya pernah membaca Anda juga dapat menggunakan ILMerge untuk menggabungkan C # dan F # menjadi satu yang dapat dieksekusi / perakitan.
Terakhir, ada banyak hal pemrograman fungsional yang dapat Anda lakukan di C # dengan LINQ , melalui penggunaan ekspresi lambda , yang lebih tinggi fungsi (
Select
,Where
, dll), urutan pencocokan pola, dllsumber