1 poin oleh GN⁺ 2025-04-13 | 1 komentar | Bagikan ke WhatsApp

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

 
GN⁺ 2025-04-13
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

    • OTP mencakup sangat banyak fitur. Kami sedang mengerjakan kompilasi Elixir agar bisa berjalan di perangkat iOS. Dengan menggunakan library ei milik Erlang, kami bisa mengompilasi node dari C dan membuatnya berinteraksi dengan node Erlang lain. Melalui library rpc Erlang, pemanggilan fungsi dari C dan antarmuka dengan aplikasi Elixir juga dimungkinkan
    • Erlang telah menyelesaikan banyak masalah yang masih menyulitkan stack teknologi modern, dan telah mengatasi persoalan skalabilitas serta biaya implementasi sejak puluhan tahun lalu. Namun di HN, minat terhadap Erlang/Elixir tidak berujung pada adopsi nyata, dan banyak perusahaan membuang uang untuk mencoba mengimplementasikan hal-hal yang sudah disediakan gratis oleh stack Erlang
  • Saya 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

    • Contoh: programmer aplikasi menulis kode sekuensial, dan semua konkurensi disembunyikan di dalam behavior
    • Anggota tim baru jadi mudah memulai: logika bisnis bersifat sekuensial, dan strukturnya mirip dengan yang mungkin pernah mereka lihat sebelumnya
    • Supervisor dan filosofi "biarkan crash" berkontribusi pada terciptanya sistem yang andal
  • Saya kembali tertarik pada Erlang karena proses ringan dan message passing. Sampai sekarang, behavior terasa sekunder

    • Proyeknya adalah membawa visual Flow Based Programming (FBP) ke Erlang. FBP tampak cocok untuk Erlang, dan saya terkejut ternyata sudah ada
    • Saya menggunakan Node-RED sebagai alat FBP, dan ide dasarnya adalah menghubungkan frontend Node-RED ke backend Erlang dan menjadikan semua node sebagai proses
  • Saya sedang mencari informasi mengapa Ericsson berhenti menggunakan Erlang, serta tentang pemecatan Joe

    • Jawaban singkatnya adalah Erlang tersisih ketika mereka beralih ke Java untuk proyek-proyek baru. Joe dan rekan-rekannya mendirikan Bluetail pada 1998, lalu diakuisisi oleh Nortel. Nortel adalah raksasa telekomunikasi; harga sahamnya mencapai $125 pada tahun 2000, tetapi turun ke bawah $1 pada 2002. Ini terkait dengan pecahnya gelembung dot-com dan penurunan belanja telekomunikasi
  • 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

    • Ini adalah sistem yang dirancang dengan baik dan konsisten, dengan tingkat konsistensi yang jarang terlihat di bahasa lain. Tidak sempurna, tetapi mengesankan
    • Saya rasa ada kekurangan dalam pengakuan dan penerimaan terhadap kekuatan kesederhanaan di dunia perangkat lunak
  • 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

    • Setahun lalu, saya mengadopsi Erlang sebagai bahasa backend di perusahaan konsultan pribadi saya. Saya menelusuri bagian dalam BEAM untuk mengganti stack berbasis TCP dengan QUIC dan mengintegrasikan patch Rust
  • 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

    • Untuk mencapai tujuan yang sama di bahasa lain, cara Erlang tidak boleh disalin mentah-mentah. Belajar dari perangkat lunak andal milik Erlang sangat layak direkomendasikan, tetapi mem-porting cara Erlang apa adanya ke bahasa lain sangat saya tolak
  • 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

    • Makalah Joe menunjukkan cara membangun sistem andal menggunakan sekumpulan balok Lego yang tersedia
  • 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