Apa yang akan menjadi proyek pemrograman fungsional pertama yang bagus?
Saya ingin menyelesaikan proyek sarjana saya dan saya ingin menyelesaikannya dengan proyek pemrograman fungsional. Kami tidak mempelajarinya di sekolah tetapi kami didorong untuk mencoba mempelajari hal-hal baru sendiri, dan saya pikir belajar paradigma baru tidak hanya bahasa baru akan menjadi latihan yang bagus untuk saya, dan mungkin sesuatu yang menarik untuk dilihat oleh guru juga. .
Masalahnya adalah saya ingin memulai sedikit lebih awal pada proyek saya untuk memanfaatkan liburan musim panas dan mendapatkan pemahaman yang lebih baik tentang pemrograman fungsional, dan membiasakan diri dengan satu bahasa.
Apa yang Anda katakan akan menjadi proyek praktik yang baik yang sedikit menantang, tetapi juga memungkinkan saya mempelajari bahasa, paradigma, dll. Lalu apa yang menurut Anda akan menjadi proyek yang baik (yang lebih maju) untuk proyek sarjana saya?
Saran untuk bahasa terbaik untuk memulai ketika masuk ke pemrograman fungsional akan dihargai juga.
Jawaban:
Biasanya lebih mudah jika Anda menggunakan sesuatu yang relatif matematis atau logis - bahasa pemrograman fungsional umumnya cocok untuk aplikasi yang mewakili beberapa bentuk transformasi dari input yang diberikan ke output.
Beberapa ide, dalam urutan kesulitan:
Algoritma genetika - menulis program yang mengembangkan solusi untuk tugas tertentu di mana solusi diwakili dalam DSL sederhana. Saya sudah bersenang-senang sebelum membangun bot kecil yang berburu makanan dalam kotak 2D dan mengembangkan berbagai jenis strategi
Parsing combinators - membangun parser combinator library yang memungkinkan Anda membuat parser untuk bahasa arbitrer menggunakan fungsi orde tinggi.
Jika Anda benar-benar menginginkan tantangan, Anda dapat mencoba menulis permainan komputer ... perlu diketahui bahwa ini adalah tugas yang sulit karena permainan memiliki jumlah besar keadaan yang bisa berubah yang bisa rumit untuk dikelola dalam gaya pemrograman fungsional. Berharap untuk belajar lebih dari yang pernah Anda ingin tahu tentang monad dll .....
Saya akan merekomendasikan Clojure sebagai bahasa fungsional pragmatis. Saya telah menggunakannya selama sekitar 18 bulan sekarang dan saya sangat senang dengan pilihannya. Alasan utama adalah:
Anda dapat mencoba dasar-dasarnya dengan sangat mudah dengan:
sumber
Sebelum Anda mulai berpikir tentang proyek tertentu, mulailah dengan mempelajari dasar-dasar pemrograman fungsional sehingga Anda dapat memiliki ide yang baik tentang jenis-jenis proyek yang cocok.
Tempat terbaik untuk memulai mungkin adalah Struktur dan Interpretasi Program Komputer (SICP), yang didasarkan pada dialek Skema Lisp. Ini adalah teks CS klasik, dan teks lengkapnya tersedia online (tautan disediakan).
Jika Anda ingin menjadi mewah, dan menggunakan bahasa fungsional yang lebih modern yang menargetkan JVM, lihat Clojure. Bahkan ada versi SICP yang diadaptasi khusus untuk Clojure .
Dengan membaca teks SICP, Anda akan mendapatkan ide mengapa pemrograman fungsional sangat cocok untuk jenis tugas tertentu, dan latihan-latihan tersebut mungkin menginspirasi proyek yang lengkap. Jika Anda memilih untuk pergi ke rute Clojure, dan ingin memeriksa beberapa proyek yang ada, ada beberapa tautan bagus di sini .
sumber
Analisis kuantitatif
Jika Anda menemukan keuangan agak menarik melakukan beberapa hal kuantil dengan pemrograman fungsional adalah pasangan yang baik karena sangat algoritmik. Saya berbicara teori portofolio dan hal-hal seperti rasio sharpe dan sortino dll. Buat aplikasi yang menganalisis pengembalian dana dan memberikan statistik, diagram, dll. Yang berbeda
Saya akan merekomendasikan F # hanya karena saya pikir ini adalah bahasa fungsional yang mudah untuk memulai, memiliki alat yang baik dan kerangka kerja yang baik untuk mendukungnya. Alternatif lain adalah cadel dan clojure tetapi mereka agak sulit untuk dipelajari.
sumber
Untuk awal, Anda bisa mencoba menerapkan permainan blackjack kecil di F #. Ini adalah proyek pekerjaan rumah yang ditugaskan selama tutorial video singkat ini . Solusi juga disediakan di internet (dan di salah satu video).
sumber
Anda bisa menulis juru bahasa untuk skema atau lisp dengan OCaml.
sumber
Bahasa fungsional mana yang Anda pikirkan. Masing-masing memiliki karakteristik yang berbeda. Satu bahasa yang membuat dampak terbesar pada saya adalah Haskell dan saya sarankan Anda melakukan hal yang sama.
sumber
Anda juga dapat berkontribusi pada beberapa proyek sumber terbuka.
Misalnya, dalam proyek bahasa pemrograman Frege , ada banyak pekerjaan yang harus dilakukan. Misalnya, Anda bisa peduli tentang porting pustaka Haskell dasar. Ini akan membuat Anda semacam pakar Haskell saat Anda mengerjakannya.
sumber