Kode Erlang Cantik [ditutup]

15

Saya mencoba belajar lebih banyak tentang Erlang daripada proyek mainan yang saya mainkan. Untuk tujuan ini, saya membaca Pemrograman Erlang dan beberapa arsip dari Armstrong di Perangkat Lunak .

Saya juga ingin membaca beberapa contoh (lebih disukai produksi) kode yang menampilkan hal-hal yang dapat Anda bangun dengan Erlang yang akan sulit secara tidak proporsional dalam bahasa lain. Selain dari (saya berasumsi) Frambusia , apakah ada contoh kode Erlang indah yang tersedia untuk umum yang dapat saya baca untuk mendapatkan pemahaman yang lebih baik tentang bahasa dan / atau melihat penggunaan idiomatik untuk berbagai konstruksi bahasa?

Saya secara khusus tidak mencari kode yang "menyelesaikan pekerjaan" tetapi menggunakan praktik yang dipertanyakan, atau contoh di sepanjang baris "inilah cara Anda menulis factorialdi Erlang".

Dengan nada yang sama, adakah yang bisa merekomendasikan literatur yang bagus untuk mempelajari bahasa ini (selain dari "Pemrograman Erlang" yang disebutkan)? Untuk preferensi, sesuatu yang Anda sendiri gunakan untuk mempelajarinya, tetapi jika ada beberapa buku standar komunitas untuk itu, masukkan juga.

Inaimathi
sumber
Erlang diciptakan oleh Ericcson untuk mendesain dan membuat saklar paralel besar-besaran untuk lalu lintas telepon. Itu dirancang oleh Ericsson untuk mendukung aplikasi terdistribusi, toleran terhadap kesalahan, soft-real-time, non-stop. Itu adalah domain masalah di mana ia unggul. Untuk semua domain masalah lainnya ... Jarak tempuh Anda mungkin beragam.
Robert Harvey

Jawaban:

-4

Karena Anda menambahkan tag fungsional-pemrograman, bagaimana dengan menulis kompiler atau juru bahasa Erlang di Haskell? Erlang tidak lagi canggih, sama sekali. Saya merekomendasikan untuk belajar Erlang dalam satu atau dua hari, seperti beberapa bahasa lain (LISP, Prolog), dan kemudian melupakannya; mereka hanyalah langkah untuk melepaskan bahasa OOP yang penting.

Untuk tugas yang lebih kecil daripada menerapkan kompiler, lihat Project Euler .

[EDIT] Untuk menjawab komentar:

Dari sudut pandang teknis: Erlang bagus di masa lalu, ketika tidak ada multicore-processor. Tapi sekarang - berikan kompiler / interpreter yang ada yang saya tahu - itu tidak berskala lagi seperti seharusnya. Seorang juru bahasa yang ditulis dalam skala Haskell, dikompilasi dengan Haskell akan membuatnya lebih cepat tetapi akan menghapus fitur penggantian kode saat-terbang.

Dari pandangan Pemrogram: Haskell bukan untuk semua tugas yang berlaku pilihan terbaik, tetapi atm, bahasa yang mungkin lebih maju sangat eksperimental, dan tugas-tugas yang tidak berlaku biasanya masih harus dilakukan dengan kedua sistem tertanam (seperti mikrokontroler dan GPU) atau numbercrunching, di mana C dan Assembler masih merupakan pilihan terbaik.

Apa sebenarnya yang bisa Anda lakukan dengan Erlang lebih baik daripada bahasa lain?

comonad
sumber
4
Saya tidak membuat klaim untuk mempelajarinya karena itu state-of-the-art; Saya hanya berpikir itu terlihat menarik, dan mungkin ada hal-hal yang dapat Anda buat dengan itu yang Anda tidak dapat dengan mudah dengan bahasa lain. Jika jawaban Anda adalah "Haskell adalah pilihan yang lebih baik untuk semua tugas yang berlaku", bagaimana dengan memberi tahu saya mengapa secara spesifik (alih-alih hanya menyatakannya secara samar), dan menjawab pertanyaan awal untuk Haskell, bukan Erlang?
Inaimathi
1
Aku tidak tahu bahwa jawaban ini adalah bahwa buruk, meskipun tidak rok tepat di pertanyaan awal. Jika Anda ingin melihat Haskell yang cantik dalam arti yang dibicarakan oleh comanad, lihat en.wikibooks.org/wiki/Write_Yourself_a_Scheme_in_48_Hours Ini adalah tutorial yang mengajarkan haskell, parsec parsing library, dan dan skema dengan menulis parser skema . Combinator Parser, saya rasa, adalah salah satu hal yang lebih indah untuk dimainkan dengan bahasa fungsional. Mereka juga agak praktis; setelah Anda tahu cara menulis parser, Anda dapat merancang bahasa Anda sendiri untuk menyelesaikan masalah tertentu.
CodexArcanum
1
"Apa sebenarnya yang bisa kamu lakukan dengan Erlang lebih baik daripada bahasa lain?" Saya tidak tahu; itu sebabnya saya mencoba mempelajarinya. Naluri saya memberi tahu saya bahwa bahasa yang konstruk utamanya adalah prosesnya (berbeda dengan penutupan seperti pada CL, lambda seperti dalam Skema atau kamus seperti pada python) akan memiliki sesuatu yang menarik untuk ditawarkan. Haskell juga fungsional, dan memiliki konstruksi pencocokan pola yang serupa, tetapi tidak ada fokus tanpa henti pada concurrency. Bahkan, konstruksi utama di Haskell tampaknya adalah tipenya, yang membuat saya berpikir mereka adalah hewan yang sangat berbeda.
Inaimathi
2
@CodexArcanum - AFAIK, Erlang, dan OTP tersedia di bawah turunan dari Lisensi Publik Mozilla, dan bebas-dalam-bir dari repo Debian. Apa yang Anda maksud dengan "sistem adalah milik"?
Inaimathi
1
@comonad - Apa yang saya maksud dengan "Haskell adalah pilihan yang lebih baik untuk semua tugas yang berlaku" adalah "Untuk setiap tugas yang dapat saya selesaikan dengan Erlang, Haskell dapat melakukannya dengan lebih baik". Saya tidak bermaksud mengatakan bahwa Anda dapat melakukan semua pekerjaan pemrograman dengan satu bahasa, atau bahwa saya hanya ingin menggunakan satu bahasa untuk semua proyek saya. Anda sepertinya bertanya "Mengapa menggunakan Erlang ketika Anda dapat menggunakan Haskell?", Yang menyiratkan bahwa Anda berpikir Haskell lebih unggul secara langsung. Saya ingin Anda mengklarifikasi dan mungkin mendukung klaim itu.
Inaimathi