Implementasi dunia nyata pemrograman fungsional? [Tutup]

9

Saya mencoba memperkenalkan diri dengan berbagai jenis bahasa untuk memahami bidang-bidang di mana masing-masing dari mereka sangat pandai. Sejauh ini, saya telah mencoba-coba ke C - bahasa prosedural, C ++ & java - statis mengetik bahasa Berorientasi Objek dan groovy - dinamis mengetik bahasa Berorientasi Objek.

Setiap bahasa pemrograman mungkin sudah mulai menjawab suatu kebutuhan. Dan saya kira setiap bahasa sangat bagus setidaknya satu hal karena itu menjadi standar dalam bidang atau bidang tertentu. Seperti C, C ++ telah menjadi standar di bidang-bidang seperti pengembangan browser atau game. Python di dunia Linux karena kemampuan scriptingnya yang mudah, Java di dunia perusahaan, dll.

Sekarang saya tertarik untuk belajar bahasa pemrograman fungsional seperti Clojure atau Lisp. Jadi, di mana bahasa pemrograman fungsional digunakan dalam skenario dunia nyata? Saya tidak berpikir seseorang akan menggunakan Clojure atau Lisp untuk mengembangkan aplikasi atau UI. Jadi pada jenis proyek apa yang harus saya nikmati setelah melalui tutorial dasar dan sumber belajar untuk mendapatkan pemahaman singkat tentang implementasi pemrograman fungsional? Dan apakah Anda sangat merekomendasikan satu bahasa secara spesifik, seperti say clojure?

Vamsi Emani
sumber
5
"Dan saya menganggap setiap bahasa sangat baik setidaknya satu hal karena itu menjadi standar dalam bidang atau bidang tertentu" Itu tidak secara umum benar. Adalah anggapan yang berbahaya untuk berpikir bahwa bahasa entah bagaimana "terspesialisasi". Beberapa bahasa memiliki relung, tetapi secara umum tidak benar.
S.Lott
6
"Aku tidak tahu bagaimana dan dari mana harus memulai." Apa yang mencegah Anda memulai dengan tutorial? Bisakah Anda menjelaskan mengapa tutorial untuk bahasa ini tidak membantu atau bermanfaat?
S.Lott
"C ++ & java" sangat, sangat sedikit hubungannya satu sama lain.
DeadMG
Bolehkah saya memberi tahu Anda apa yang benar-benar membangkitkan minat Anda untuk mempelajari Clojure atau Lisp selain dari alasan mereka mengikuti paradigma Pemrograman Fungsional?
Maxood
3
Ketika Anda mengatakan "waktu nyata", maksud Anda "dunia nyata"? Itu tampaknya lebih masuk akal dalam konteks pertanyaan ini.
sepp2k

Jawaban:

13

Anda mengatakan pemrograman fungsional dunia nyata, saya pikir Erlang.

Erlang adalah bahasa pemrograman yang digunakan untuk membangun sistem waktu nyata lunak berskala besar yang dapat diskalakan dengan persyaratan ketersediaan tinggi. Beberapa kegunaannya adalah di bidang telekomunikasi, perbankan, e-commerce, telepon komputer dan pengiriman pesan instan.

http://www.erlang.org/

Robert Harvey
sumber
3
+1 Korrecto! Juga, saya ingin menambahkan, bahwa untuk pemula di bidang fungsional, bahasa fungsional "paling murni" di sekitar adalah Haskell :)
yati sagade
5

Ada serangkaian kuliah luar biasa tentang Pemrograman Fungsional oleh Universitas Stanford. Anda dapat memeriksanya di YouTube.

Saya akan menyarankan Anda untuk melihat Skema daripada LISP. Skema adalah versi Lisp yang dimodifikasi dengan peningkatan lebih lanjut. Skema sebagian besar digunakan untuk tujuan akademis dan pelatihan. Ini adalah bahasa yang hebat jika Anda ingin melakukan penelitian dalam ilmu compueter teoritis.

Aplikasi :

Google App Inventor untuk Android menggunakan Skema, di mana Kawa digunakan untuk mengkompilasi kode Skema ke byte-kode untuk Java Virtual Machine yang berjalan pada perangkat Android. Elk Scheme digunakan oleh Synopsys sebagai bahasa scripting untuk alat teknologi CAD (TCAD).

FYI: Penggunaan Skema

Maxood
sumber
Bertanya-tanya apakah pertanyaan ini dapat membantu Anda: programmers.stackexchange.com/questions/25056/…
Maxood
1
Dan ada buku LISP (gratis! Dan online!) Ini : gigamonkeys.com/book Ini mencakup proyek "praktis" seperti pengurai tag ID3, pemrograman web, dan penyaringan spam.
FrustratedWithFormsDesigner
5

Bryan O'Sullivan, pendiri mailrank.com (yang diakuisisi oleh Facebook) membangun seluruh sisi server dari perangkat lunak ini di Haskell. Dia mempresentasikan ini di Strange Loop 2011, video dan slide tersedia online.

Orang yang sama menulis buku berjudul Real World Haskell . Beberapa orang menyebutkan tutorial pemrograman. Yang ini mungkin cukup sesuai dengan minat Anda (saya suka saran Erlang juga).

Barend
sumber
4

Saya tahu dari teman-teman di bidang keuangan bahwa perusahaan perdagangan kuantitatif Jane Street menggunakan OCaml untuk menerapkan strategi perdagangannya. Mereka memiliki halaman di mana mereka berbicara tentang mengapa, bersama dengan tautan ke pembicaraan tentang masalah ini.

Geoff Oxberry
sumber
2

Inilah daftar kisah sukses Common Lisp:

http://wiki.alu.org/Industry%20Application

http://www.franz.com/success/

http://www.lispworks.com/success-stories/index.html

Meskipun Common Lisp hanya berfungsi sebagian (juga mendukung OOP dan prosedural, serta apa pun yang Anda ingin terapkan sendiri, atau dengan perpustakaan), ini adalah bahasa yang sangat pragmatis, dan sangat kuat di tangan programmer yang kompeten. Saya benar-benar menggunakannya untuk menulis aplikasi web dengan kerangka kerja RESTAS yang sangat baik .

Dan proyek python komersial yang saya kerjakan sekarang pada akhirnya akan dilengkapi dengan layanan yang ditulis dalam lisp (RESTAS seperti yang disarankan oleh namanya sangat baik untuk layanan RESTful).

Pavel Penev
sumber
1

Saya sarankan menyelam ke kompiler (untuk bahasa tujuan umum atau DSL) - ini adalah di mana pemrograman fungsional adalah yang terbaik. Akan ada banyak hal yang menarik dan berguna untuk dijelajahi, dari ADT dan pencocokan pola di satu sisi spektrum hingga makro Lisp di sisi lain.

Logika SK
sumber
0

Anda mungkin ingin melihat Hume .

Dari halaman Bahasa Pemrograman Hume :

Hume (Tingkat Tinggi Unified Meta-Environment) adalah bahasa yang diketik dengan sangat baik, sebagian besar berfungsi dengan perangkat terintegrasi yang ditetapkan untuk mengembangkan, membuktikan dan menilai sistem bersamaan, yang kritis terhadap keselamatan. Hume bertujuan untuk memperluas batas-batas desain bahasa untuk sistem terbatas sumber daya, termasuk sistem real-time tertanam dan kritis, dengan memperkenalkan tingkat abstraksi dan provabilitas yang baru.

Dari halaman Hikipedia wikipedia :

Hume adalah bahasa pemrograman berbasis fungsional yang dikembangkan di Universitas St Andrews dan Universitas Heriot-Watt di Skotlandia, dan dinamai menurut filsuf abad ke-18 David Hume. Ini menargetkan sistem tertanam waktu nyata, yang bertujuan untuk menghasilkan desain yang keduanya sangat abstrak, namun masih akan memungkinkan ekstraksi waktu dan biaya eksekusi ruang yang tepat, sehingga memungkinkan program untuk ditulis yang akan dieksekusi di bawah batasan waktu dan ruang terbatas yang dijamin.

Hume tidak biasa dalam menggabungkan ide-ide pemrograman fungsional dengan ide-ide dari automata keadaan terbatas . Automata digunakan untuk menyusun program komunikasi ke dalam serangkaian "kotak", di mana setiap kotak memetakan input ke output dengan cara yang sepenuhnya fungsional menggunakan pencocokan pola tingkat tinggi. Juga tidak biasa dalam disusun sebagai serangkaian level, yang masing-masing memaparkan sifat-sifat mesin yang berbeda, yang sangat tidak biasa.

Mark Booth
sumber