Latar belakang
- Erlang adalah bahasa yang dikembangkan untuk membangun sistem terdistribusi yang andal; awalnya dimulai sebagai pustaka Prolog lalu berkembang menjadi bahasa yang berdiri sendiri.
- Bahasa ini digunakan di Ericsson untuk memrogram sentral telepon, dan pada 1998 beralih menjadi open source.
- Joe Armstrong adalah salah satu perancang utama Erlang, dan disertasi doktornya membahas cara membuat sistem terdistribusi yang andal dalam kondisi adanya cacat perangkat lunak.
Behaviour
- Behaviour di Erlang mirip dengan interface di Java atau Go, yaitu kumpulan tanda tangan tipe yang dapat memiliki beberapa implementasi.
- Dengan behaviour, kita hanya perlu menulis kode yang mendefinisikan logika bisnis program, sementara kode infrastruktur disediakan secara otomatis.
- Behaviour ditulis oleh para ahli dan didasarkan pada praktik terbaik.
Behaviour server umum
gen_server dijelaskan dengan contoh implementasi penyimpanan key-value.
handle_call bertugas memperbarui state atau mencari key, dan seluruh konkurensi disembunyikan di dalam komponen gen_server.
Behaviour pengelola event
gen_event adalah pengelola event yang mendaftarkan event handler dan menjalankannya saat pesan tiba.
- Ini berguna untuk pencatatan kesalahan, dan diberikan contoh logger sederhana.
Behaviour mesin status
gen_fsm telah diubah namanya menjadi gen_statem, dan cocok untuk implementasi protokol.
Behaviour supervisor
- Supervisor memastikan proses lain bekerja dengan benar dan akan me-restart-nya sesuai strategi yang telah ditentukan jika terjadi kegagalan.
- Strategi
one_for_one hanya me-restart proses yang gagal, sedangkan strategi one_for_all akan me-restart semua child jika satu proses gagal.
Behaviour application dan release
- Application mencakup pohon supervisor dan semua hal yang diperlukan, sedangkan release mengemas satu atau lebih application.
- Saat upgrade gagal, harus dimungkinkan untuk melakukan rollback.
Implementasi behaviour
- Struktur behaviour, lebih daripada proses ringan dan pengiriman pesan di Erlang, adalah yang mengarah pada perangkat lunak yang andal.
- Untuk mengimplementasikan behaviour di bahasa lain, kita bisa mulai dengan menggunakan tanda tangan interface.
Ketepatan behaviour
- Pengujian simulasi memudahkan pengujian sistem terdistribusi, dan struktur behaviour
gen_server dapat digunakan untuk menyederhanakan pemecahan masalah.
Kontribusi
- Ada ide seperti meminjam gagasan dari karya Martin Thompson untuk membuat event loop yang cepat dan menambahkan I/O asinkron.
- Jika tertarik atau memiliki pendapat, saran, atau pertanyaan, penulis dapat dihubungi.
1 komentar
Komentar Hacker News
Hal yang menakjubkan dari Erlang dan BEAM adalah kedalaman kemampuannya. Bagi OP, hasil terbesar adalah Behavior/Interface Erlang. Secara pribadi, saya merasa yang penting adalah sumber daya pengembangan yang dibutuhkan untuk membangun sistem kompleks jauh lebih sedikit dibanding bahasa lain. Bagi banyak orang, proses ringan dan model pemrogramannya adalah daya tarik utamanya
eimilik Erlang, kami bisa mengompilasi node dari C dan membuatnya berinteraksi dengan node Erlang lain. Melalui libraryrpcErlang, pemanggilan fungsi dari C dan antarmuka dengan aplikasi Elixir juga dimungkinkanSaya pernah bekerja dengan beberapa manajer dan orang-orang yang ingin menulis buku berdasarkan pengalaman mereka. Kami selalu berbeda pendapat tentang faktor keberhasilan. Sebagian orang berargumen bahwa proses ringan dan message passing bukanlah saus rahasia, tetapi mereka melewatkan bahwa Communicating Sequential Processes di Erlang tidak bisa dipisahkan dari karakteristik tersebut
Saya kembali tertarik pada Erlang karena proses ringan dan message passing. Sampai sekarang, behavior terasa sekunder
Saya sedang mencari informasi mengapa Ericsson berhenti menggunakan Erlang, serta tentang pemecatan Joe
Kekuatan Erlang/Elixir bukanlah implementasi model Actor, matching ala Prolog, immutability, behavior, dan sebagainya, melainkan hasrat Joe untuk menunjukkan bahwa lebih banyak hal bisa dilakukan dengan sumber daya yang lebih sedikit
Erlang, OTP, dan BEAM menawarkan lebih dari sekadar behavior. VM-nya mirip kernel virtual, menyediakan supervisor, proses terisolasi, dan mode terdistribusi. OTP juga menyediakan mode yang berguna seperti Mnesia (database), atomic counter/tabel ETS (caching), dan lainnya
Konsep paling menarik di Erlang/BEAM adalah bahwa pemulihan parsial pada dasarnya sudah tertanam. Saat keadaan tak terduga muncul, alih-alih mematikan seluruh proses atau mengambil risiko menyebabkan korupsi, sistem melakukan rollback ke keadaan baik yang diketahui pada tingkat yang paling terperinci yang memungkinkan
Alasan mengapa struktur behavior Erlang tidak dijiplak oleh perancang bahasa dan library lain adalah karena signature fungsi behavior Erlang sangat terkait erat dengan fitur-fitur Erlang lainnya, terutama penggunaan immutability yang khas
Saya tidak setuju dengan isi tulisan ini. Behavior dimungkinkan oleh arsitektur dasar sistem. Behavior bukanlah interface, melainkan lebih mirip objek abstrak dalam bahasa seperti Java
Behavior tidak terlalu menarik. Itu juga ada di bahasa pemrograman lain. Hal yang menarik dari BEAM adalah melempar error dilakukan dengan sangat elegan. Kemampuan melempar error dan kekuatan behavior memudahkan penangkapan error, pelaporan informasi konteks, dan secara umum membuatnya mudah untuk dikomposisikan