Ada banyak hype di sekitar Haskell, namun, sulit untuk mendapatkan informasi tentang bagaimana itu digunakan dalam aplikasi dunia nyata. Apa proyek / penggunaan paling populer dari Haskell dan mengapa ia unggul dalam memecahkan masalah ini?
Ada banyak hype di sekitar Haskell, namun, sulit untuk mendapatkan informasi tentang bagaimana itu digunakan dalam aplikasi dunia nyata. Apa proyek / penggunaan paling populer dari Haskell dan mengapa ia unggul dalam memecahkan masalah ini?
Jawaban:
Apa kegunaan umum untuk bahasa ini?
Pengembangan aplikasi yang cepat.
Jika Anda ingin tahu "mengapa Haskell?", Maka Anda perlu mempertimbangkan keuntungan dari bahasa pemrograman fungsional (diambil dari https://c2.com/cgi/wiki?AdvantagesOfFunctionalProgramming ):
Program fungsional cenderung jauh lebih singkat daripada rekan-rekan mereka yang berbahasa Imperative. Seringkali ini mengarah pada peningkatan produktivitas programmer
FP mendorong pembuatan prototipe cepat. Karena itu, saya pikir ini adalah paradigma desain perangkat lunak terbaik untuk ExtremeProgrammers ... tapi apa yang saya tahu?
FP bersifat modular dalam dimensi fungsionalitas, di mana ObjectOrientedProgramming bersifat modular dalam dimensi berbagai komponen.
Kemampuan memiliki kue dan memakannya. Bayangkan Anda memiliki pesan pemrosesan sistem OO kompleks - setiap komponen mungkin membuat perubahan keadaan tergantung pada pesan dan kemudian meneruskan pesan ke beberapa objek yang memiliki tautan. Bukankah itu terlalu keren untuk dapat dengan mudah memutar kembali setiap perubahan jika beberapa objek jauh di hierarki panggilan memutuskan pesan itu cacat? Bagaimana kalau memiliki sejarah negara yang berbeda?
Banyak tugas tata graha dibuat untuk Anda: mendekonstruksi struktur data (PatternMatching), menyimpan binding variabel (LexicalScope dengan penutup), pengetikan yang kuat (TypeInference), GarbageCollection, alokasi penyimpanan, apakah akan menggunakan kotak (penunjuk ke nilai) atau tanpa kotak (nilai secara langsung) ) representasi ...
Multithreading aman! Struktur data yang tidak dapat diubah tidak tunduk pada kondisi perlombaan data, dan akibatnya tidak harus dilindungi oleh kunci. Jika Anda selalu mengalokasikan objek baru, daripada secara destruktif memanipulasi objek yang sudah ada, pengunciannya dapat disembunyikan di dalam alokasi dan sistem GarbageCollection.
Terlepas dari Haskell ini memiliki kelebihan sendiri seperti:
1 / 0
sebagai item pertama dari daftar dan itu akan tetap berfungsi jika Anda hanya menggunakan item kedua.Anda dapat memeriksa tautan berikut:
x = 5;
menjamin bahwa setelah dijalankan, x
berisi nilai 5
.
operator =
dipanggil. Dan itu menjamin apa yang terjadi jika Anda tidak mendefinisikanoperator =
Saya pikir orang-orang di posting ini kehilangan poin paling penting bagi siapa saja yang tidak pernah menggunakan bahasa pemrograman fungsional: memperluas pikiran Anda. Jika Anda baru mengenal pemrograman fungsional, Haskell akan membuat Anda berpikir dengan cara yang belum pernah Anda pikirkan sebelumnya. Akibatnya pemrograman Anda di area lain dan bahasa lain akan meningkat. Berapa banyak? Sulit untuk diukur.
Ada satu jawaban yang bagus untuk apa bahasa tujuan umum seperti Haskell baik untuk: menulis program secara umum.
Untuk apa digunakan dalam praktiknya, saya punya tiga pendekatan untuk menetapkan bahwa:
Menunjukkan bahwa itu baik untuk grafik, jaringan, pemrograman sistem, struktur data, database, pengembangan, pemrosesan teks ...
Dan akhirnya, pendapat saya tentang apa yang benar-benar kuat di:
Saya harap itu memberi Anda pengertian tentang seberapa luas pertanyaan Anda, jika ingin dijawab dengan spesifik.
Dari Haskell Wiki :
Haskell memiliki beragam penggunaan komersial, mulai dari dirgantara dan pertahanan, untuk membiayai, hingga startup web, firma desain perangkat keras, dan produsen mesin pemotong rumput. Halaman ini mengumpulkan sumber daya tentang penggunaan industri Haskell.
Menurut Wikipedia, bahasa Haskell dibuat dari kebutuhan untuk mengkonsolidasikan bahasa fungsional yang ada menjadi bahasa umum yang dapat digunakan untuk penelitian masa depan dalam desain bahasa fungsional.
Hal ini jelas berdasarkan pada informasi yang tersedia yang telah melampaui tujuan aslinya dan digunakan untuk lebih dari sekedar penelitian. Sekarang dianggap sebagai bahasa pemrograman fungsional tujuan umum.
Jika Anda masih bertanya pada diri sendiri, "Mengapa saya harus menggunakannya?", Lalu baca Mengapa menggunakannya? bagian dari Pendahuluan Haskell Wiki.
Haskell adalah bahasa pemrograman tujuan umum. Ini dapat digunakan untuk apa pun yang Anda gunakan untuk bahasa lain. Anda tidak dibatasi oleh apa pun kecuali imajinasi Anda sendiri. Untuk apa itu cocok? Yah, hampir semuanya. Ada beberapa tugas di mana bahasa fungsional tidak unggul.
Dan ya, saya Rayne dari Dreamincode. :)
Saya juga ingin menyebutkan bahwa, jika Anda belum membaca halaman Wikipedia, pemrograman fungsional adalah sebuah paradigma seperti pemrograman Berorientasi Objek adalah sebuah paradigma. Kalau-kalau Anda tidak tahu. Haskell juga fungsional dalam arti berfungsi; itu bekerja dengan sangat baik pada saat itu.
Hanya karena suatu bahasa bukan bahasa Berorientasi Objek tidak berarti bahasanya dibatasi oleh apa pun. Haskell adalah bahasa pemrograman untuk tujuan umum, dan hanya untuk tujuan umum seperti Java.
Saya punya yang keren, facebook membuat alat otomatis untuk menulis ulang kode PHP. Mereka mengurai sumber menjadi pohon sintaksis abstrak, melakukan beberapa transformasi:
if ($f == false) -> if (false == $f)
Saya tidak tahu mengapa, tapi itu sepertinya gaya mereka dan kemudian mereka mencetaknya.
https://github.com/facebook/lex-pass
Kami menggunakan haskell untuk membuat bahasa spesifik domain kecil. Pemrosesan data dalam jumlah besar. Pengembangan web. Laba-laba web. Aplikasi pengujian. Menulis skrip administrasi sistem. Skrip backend, yang berkomunikasi dengan pihak lain. Skrip pemantauan (kami memiliki DSL yang berfungsi dengan baik bersama dengan munin, membuatnya lebih mudah untuk menulis kode monitor yang benar untuk aplikasi Anda.)
Semua jenis barang sebenarnya. Ini hanya bahasa tujuan umum sehari-hari dengan beberapa fitur yang sangat kuat dan berguna, jika Anda cenderung secara matematis.
false
di sebelah kiri, saya tidak melihat gunanya menggunakan alat untuk melakukannya secara otomatis: jika Anda sudah memiliki ==
operator maka Anda sudah tahu Anda tidak memiliki bug yang merupakan bagian dari lex-pass dimaksudkan untuk menangkap, dan jika Anda mendapatkan =
sebaliknya, tidak ada cara pasti untuk mengatakan apakah itu sengaja atau tidak.
Dari Haskell :
Haskell adalah bahasa pemrograman standar fungsional serba guna standar, dengan semantik non-ketat dan pengetikan statis yang kuat. Ini dinamai ahli logika Haskell Curry.
Pada dasarnya Haskell dapat digunakan untuk membuat apa saja yang biasanya Anda buat menggunakan bahasa tujuan umum lainnya (misalnya C #, Java, C, C ++, dll.).
Ini adalah sumber yang bagus untuk info tentang Haskell dan penggunaannya: