Jalur ini mengajarkan pemrograman Erlang/OTP dari bahasa inti hingga rilis production. Materi dimulai dari sintaks, pencocokan pola, dan rekursi, lanjut ke proses ringan serta OTP behaviour, kemudian penyimpanan, distribusi, pengujian, dan rilis dengan rebar3. Seluruh contoh dieksekusi pada Erlang/OTP 29 dengan rebar3, dan setiap keluaran berasal dari eksekusi nyata. Prasyaratnya hanya pengalaman dasar memakai terminal, tanpa keharusan menguasai bahasa fungsional terlebih dahulu.
Erlang
Jalur pemrograman Erlang/OTP dari bahasa inti hingga proses ringan, OTP behaviour, distribusi, pengujian, dan rilis production.
0/0 selesai
Modul pembuka: latar Erlang dan BEAM, penyiapan Erlang/OTP 29 dengan rebar3, serta alur kerja shell erl.
- Apa itu Erlang?Latar munculnya Erlang di dunia telekomunikasi, model aktor di atas BEAM, dan sifat bahasanya.
- PenyiapanMemasang Erlang/OTP 29, mengenal shell erl, dan menyiapkan rebar3 untuk proyek.
- Alur kerja shellEvaluasi ekspresi di shell erl, riwayat perintah, kompilasi modul, dan dokumentasi dari shell.
Bahasa inti Erlang: atom dan single assignment, bilangan, pencocokan pola, tuple, list, guard, case, dan if.
- Atom dan single assignmentAtom sebagai label dan aturan single assignment yang mengikat variabel sekali saja.
- Bilangan dan booleanBilangan bulat presisi arbitrer, aritmetika float, serta true dan false sebagai atom.
- Pencocokan pola di mana-manaPencocokan pola pada assignment, klausa fungsi, tuple, list, dan literal.
- Tuple dan listTuple sebagai struktur berukuran tetap dan list sebagai senarai bertaut beserta operasinya.
- Guard, case, dan ifKlausul guard pada definisi fungsi, ekspresi case sebagai pencocok umum, dan batasan if.
Rekursi sebagai pengganti perulangan: tail call, akumulator, idiom pengolahan list, dan fungsi orde tinggi.
- Rekursi sebagai iterasiRekursi sebagai mekanisme pengulangan pada bahasa tanpa pernyataan loop.
- Akumulator dan tail callTail call optimization dan pola akumulator untuk rekursi berkebutuhan memori konstan.
- Idiom pengolahan listPembangunan list secara terbalik, biaya operator ++, dan list comprehension.
- Fungsi orde tinggimap, filter, dan fold dari modul lists serta fungsi anonim sebagai argumen.
Record sebagai gula sintaksis tuple, pengenalan native record EEP-79 pada OTP 29, serta string dan binary.
- RecordRecord sebagai gula sintaksis di atas tuple, nilai bawaan, dan sintaks akses bidangnya.
- Pengenalan native record (EEP-79)Native record eksperimental sesuai EEP-79 pada OTP 29 dan kedudukannya di jalur ini.
- String dan binaryString sebagai list, penanganan unicode, dan dasar-dasar binary.
Konkurensi dasar: spawn, receive, PID dan mailbox, link, sinyal exit, monitor, timeout, dan registrasi nama.
- spawn dan receivePembuatan proses dengan spawn dan penerimaan pesan dengan receive beserta rekursi state.
- PID dan mailboxPengiriman pesan asinkron ke PID, selective receive, dan perilaku mailbox.
- Link dan sinyal exitPropagasi kegagalan melalui link, sinyal exit, dan process_flag trap_exit.
- MonitorPengamatan kegagalan proses secara satu arah dan pemilihan monitor versus link.
- Timeout dan registrasiKlausul after pada receive dan pendaftaran nama proses dengan register dan whereis.
Behaviour OTP: gen_server, supervisor, pohon supervisi, gen_statem, application, dan hot code upgrade.
- gen_serverCallback gen_server untuk server generik: handle_call, handle_cast, dan state yang mengalir.
- supervisorSpesifikasi child, strategi restart, dan intensitas restart pada supervisor.
- Pohon supervisiStruktur pohon supervisi: rest-for-one, one-for-all, dan susunan application.
- gen_statemMesin state dengan gen_statem: mode callback, event, dan transisi berwaktu.
- ApplicationBerkas .app, callback application, fase start, dan included application.
- Hot code upgradeMekanisme hot code upgrade dengan appup dan rebar3 di laboratorium terkontrol.
Penyimpanan dan data biner: ETS, DETS, Mnesia, bit syntax, binary comprehension, dan iodata.
- ETSTabel ETS dalam memori: tipe set, opsi konkurensi, dan match spec.
- DETS dan persistensiTabel DETS berbasis disk, perbaikan saat shutdown tidak bersih, dan batas ukurannya.
- MnesiaMnesia sebagai penyimpanan transaksional terdistribusi, kekuatan, dan sisi tajamnya.
- Binary dan bit syntaxKonstruksi dan penguraian binary dengan bit syntax dan pencocokan segmen.
- Binary comprehension dan iodataBinary comprehension untuk pembangunan binary efisien dan penghematan iolist.
Distribusi bawaan VM: node dan cookie, spawn jarak jauh, modul rpc, serta topologi penghubungan node.
- Node dan cookieKonsep node, penghubungan VM, dan autentikasi cookie bersama.
- Spawn jarak jauh dan RPCSpawn jarak jauh, modul rpc, dan transparansi lokasi dalam pengiriman pesan.
- Pengenalan topologi distribusiTopologi terhubung penuh, node tersembunyi, dan batas penskalaan distribusi.
Keandalan program: typespec, dialyzer, EUnit, Common Test, PropEr, dan ct_doctest pada OTP 29.
- TypespecAnotasi -spec dan -type untuk mendokumentasikan tipe dan mendukung dialyzer.
- DialyzerSuccess typing, pembuatan PLT, dan cara membaca konflik dialyzer.
- EUnitUnit test dengan EUnit: makro assert, generator, dan fixture.
- Test suite Common TestTest suite Common Test: group, perangkat konfigurasi, dan siklus hidupnya.
- PropEr dan ct_doctestPengujian berbasis properti dengan PropEr dan contoh dokumentasi dengan ct_doctest.
Kesiapan production: prinsip let it crash, logger, tracing dan debug, serta release dengan rebar3.
- Let it crash dengan benarLet it crash yang benar: error kernel dan intensitas supervisi sebagai parameter desain.
- Pencatatan log dengan loggerModul logger: level, handler, formatter, dan metadata terstruktur.
- Tracing dan debugModul sys, trace, dan observer untuk mengamati perilaku sistem secara langsung.
- Release dengan rebar3Release OTP dengan rebar3: sistem target dan skrip boot.
Proyek puncak jalur: pemilihan sistem dan perancangan pohon supervisi beserta protokol pesannya.
- Pemilihan proyekPemilihan lingkup proyek puncak: sistem obrolan atau presence multi-node dengan persistensi.
- Perancangan pohon supervisiPerancangan pohon supervisi proyek: struktur proses, strategi restart, dan protokol pesan.