Perlunya mempelajari ekstensi bahasa haskell untuk produksi


10

Bahasa inti Haskell sangat sederhana. Berasal dari latar belakang OO, kesulitan utama adalah beradaptasi dengan paradigma fungsional murni.

Saat belajar Haskell "dasar", saya selalu menganggap ekstensi bahasa sebagai mainan untuk orang-orang CS atau sebagai percobaan untuk versi bahasa yang akan datang (seperti from future import ???dalam python).

Namun ketika saya mulai melihat kerangka kerja web seperti Yesod, saya menemukan bahwa banyak file sumber memerlukan antara 3 & 4 ekstensi. Beberapa terlihat cukup sederhana (StringOverload). Lainnya benar-benar mengintimidasi (GADT, Type Famillies, Template Haskell). Dokumentasi mereka terhubung ke makalah penelitian, yang menakutkan bagi seseorang yang mengharapkan untuk belajar "hanya" perpustakaan baru.

Apakah perlu mempelajari ekstensi bahasa GHC agar produktif di Haskell? Jika Anda menyewa pengembang Haskell untuk aplikasi produksi, apakah Anda akan meminta pengetahuan seperti itu?


Jawaban:


7

Apakah perlu mempelajari ekstensi bahasa GHC agar produktif di Haskell?

Iya. Dan itu berlaku untuk semua bahasa / alat. Dengan pengetahuan inti / dasar Anda dapat memecahkan masalah kontes online, mungkin proyek universitas kecil, tapi jelas bukan aplikasi dunia nyata.

Jika Anda menyewa pengembang haskell untuk aplikasi produksi, apakah Anda akan meminta pengetahuan seperti itu?

Itu sekarang tergantung pada apakah Anda memiliki seseorang dengan Anda yang dapat membagikan pengetahuan ini. Jika ya, maka orang itu dapat meningkatkan karyawan baru. Jika tidak, maka Anda harus mendapatkan orang tersebut dengan pengetahuan terlebih dahulu. Dan lagi ini berlaku untuk teknologi baru.

Tentu saja Anda juga dapat mencoba untuk merekrut orang-orang yang memiliki pengetahuan mendalam di Haskell. Tetapi Haskell relatif baru dalam industri dan mengingat sangat sedikit proyek komersial yang dilakukan di sekitarnya, menemukan orang seperti itu akan sulit. Cara efektif untuk membangun tim profesional di Haskell, adalah dengan merekrut orang yang tahu dasar dan mau bekerja di Haskell, dan kemudian mendidik mereka.


Saya akan memprotes, tetapi kemudian saya melihat bahwa Real World Haskell mengajarkan banyak ekstensi bahasa. Terima kasih atas jawaban Anda.
Simon Bergot

2
"Dan itu benar untuk semua bahasa / alat" - itu sepenuhnya salah. Katakanlah, ambil bahasa seperti Java, C #, C ++ - tidak satupun dari mereka memiliki ekstensi bahasa yang umumnya ditemukan dalam kode aplikasi dunia nyata. Jika Anda harus menggunakan ekstensi bahasa setiap kali Anda perlu menulis sesuatu yang kurang sepele daripada "solusi masalah kontes online", menurut pendapat saya, ada sesuatu yang sangat salah dengan spesifikasi bahasa.
Malcolm

@Malcolm Mengapa Anda menemukan "Jika Anda harus menggunakan ekstensi bahasa setiap kali Anda perlu menulis sesuatu yang kurang sepele daripada" solusi masalah kontes online ", menurut pendapat saya, ada sesuatu yang sangat salah dengan spesifikasi bahasa." benar? Apa karakteristik ekstensi yang membuatnya negatif? Saya menggunakan ghc dan ekstensi yang disediakan. Menambahkan ekstensi ke proyek yang ada tampaknya sama beratnya dengan menambahkan perpustakaan lain.
Davorak

2
@Davorak Karena alih-alih satu bahasa, kami memiliki miliaran kombinasi ekstensi yang berbeda, dan Anda tidak tahu apa-apa tentang apakah kode akan dikompilasi pada kompiler tertentu. Ekstensi membuat kode tidak portabel. Dan juga ini membuat bahasa itu sulit untuk dipelajari karena alih-alih satu set fitur yang semua orang gunakan ada sejumlah besar fitur tambahan, dan Anda tidak punya petunjuk mana yang harus Anda ketahui dan gunakan dan mana yang ada hanya karena peneliti bersenang-senang.
Malcolm

2
@Davorak Itulah masalah yang saya bicarakan: semua orang menggunakan GHC, karena ini adalah satu-satunya kompiler yang masih aktif dipelihara. Kompiler lain tidak dapat mengikuti, jadi tidak ada yang bisa menggunakannya, dan ada sedikit alasan untuk berinvestasi di dalamnya. Adapun perpustakaan: Anda memilih perpustakaan untuk masalah dan hanya bekerja dengan mereka. Katakanlah, jika Anda perlu membaca XML, Anda hanya perlu satu perpustakaan membaca XML. Namun, dengan ekstensi, tidak jelas kapan Anda membutuhkannya. Meskipun ada masalah dengan perpustakaan juga. Katakanlah, di Jawa hanya ada array dan koleksi, dan di Haskell ada banyak perpustakaan array.
Malcolm
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.