Memulai dengan Bahasa Pemrograman Elixir
Diterbitkan: 2022-03-11Jika Anda telah membaca posting blog, utas berita peretas, tweet pengembang favorit Anda, atau mendengarkan podcast, pada titik ini Anda mungkin pernah mendengar tentang bahasa pemrograman Elixir. Bahasa ini dibuat oleh Jose Valim, seorang pengembang terkenal di dunia open-source. Anda mungkin mengenalnya dari kerangka kerja MVC Ruby on Rails atau dari permata ruby rancang dan simple_form yang telah dikerjakannya dan rekan kerjanya dari Plataformatec dalam beberapa tahun terakhir.
Menurut Jose Valim, Elixir lahir pada tahun 2011. Dia memiliki ide untuk membangun bahasa baru karena kurangnya alat yang baik untuk menyelesaikan masalah konkurensi di dunia ruby. Saat itu, setelah menghabiskan waktu mempelajari konkurensi dan mendistribusikan bahasa terfokus, dia menemukan dua bahasa yang dia sukai, Erlang dan Clojure yang berjalan di JVM. Dia menyukai semua yang dia lihat dalam bahasa Erlang (Erlang VM) dan dia membenci hal-hal yang tidak dia lihat, seperti atribut polimorfisme, metaprogramming, dan perluasan bahasa yang dikuasai Clojure. Jadi, Elixir lahir dengan pemikiran itu, untuk memiliki alternatif untuk Clojure dan bahasa dinamis yang berjalan di Mesin Virtual Erlang dengan dukungan perpanjangan yang baik.
Elixir menggambarkan dirinya sebagai bahasa yang dinamis dan fungsional dengan status yang tidak dapat diubah dan pendekatan berbasis aktor untuk konkurensi yang dirancang untuk membangun aplikasi yang dapat diskalakan dan dapat dipelihara dengan sintaks yang sederhana, modern, dan rapi. Bahasa ini berjalan di Erlang Virtual Machine, mesin virtual yang tahan pertempuran, berkinerja tinggi, dan terdistribusi yang dikenal dengan latensi rendah dan karakteristik toleransi kesalahan.
Sebelum kita melihat beberapa kode, ada baiknya mengatakan bahwa Elixir telah diterima oleh komunitas yang sedang berkembang. Jika Anda ingin mempelajari Elixir hari ini, Anda akan dengan mudah menemukan buku, perpustakaan, konferensi, pertemuan, podcast, posting blog, buletin, dan segala macam sumber belajar di luar sana serta diterima oleh pencipta Erlang.
Mari kita lihat beberapa kode!
Instal Elixir:
Menginstal Elixir sangat mudah di semua platform utama dan merupakan one-liner di sebagian besar platform.
Arch Linux
Elixir tersedia di Arch Linux melalui repositori resmi:
pacman -S elixir
Ubuntu
Menginstal Elixir di Ubuntu agak merepotkan. Tapi itu cukup mudah.
wget https://packages.erlang-solutions.com/erlang-solutions_1.0_all.deb && sudo dpkg -i erlang-solutions_1.0_all.deb apt-get update apt-get install esl-erlang apt-get install elixir
OS X
Instal Elixir di OS X menggunakan Homebrew.
brew install elixir
Temui IEx
Setelah instalasi selesai, saatnya untuk membuka shell Anda. Anda akan menghabiskan banyak waktu di shell Anda jika Anda ingin mengembangkan di Elixir.
Shell interaktif Elixir atau IEx adalah REPL - (Baca Evaluasi Cetak Loop) di mana Anda dapat menjelajahi Elixir. Anda dapat memasukkan ekspresi di sana dan mereka akan dievaluasi memberikan Anda umpan balik segera. Ingatlah bahwa kode Anda benar-benar dievaluasi dan tidak dikompilasi, jadi pastikan untuk tidak menjalankan profil atau benchmark di shell.
Perintah Istirahat
Ada hal penting yang perlu Anda ketahui sebelum memulai IEx REPL - cara keluar darinya.
Anda mungkin terbiasa menekan CTRL+C
untuk menutup program yang berjalan di terminal. Jika Anda menekan CTRL+C
di IEx REPL, Anda akan membuka Menu Istirahat. Setelah berada di menu istirahat, Anda dapat menekan CTRL+C
lagi untuk keluar dari shell serta menekan a
.
Saya tidak akan menyelami fungsi menu istirahat. Tapi, mari kita lihat beberapa pembantu IEx!
pembantu
IEx menyediakan banyak pembantu, untuk mendaftar semuanya ketik: h()
.
Dan inilah yang harus Anda lihat:
Itu adalah beberapa favorit saya, saya pikir itu akan menjadi milik Anda juga.
-
h
seperti yang baru saja kita lihat, fungsi ini akan mencetak pesan pembantu. -
h/1
yang merupakan fungsi yang sama, tetapi sekarang ia mengharapkan satu argumen.
Misalnya, kapan pun Anda ingin melihat dokumentasi metode String
strip/2
Anda dapat dengan mudah melakukannya:
Mungkin helper IEx paling berguna kedua yang akan Anda gunakan saat memprogram di Elixir adalah c/2
, yang mengkompilasi file elixir yang diberikan (atau daftar) dan mengharapkan sebagai parameter kedua jalur untuk menulis file yang dikompilasi.
Katakanlah Anda bekerja di salah satu latihan http://exercism.io/ Elixir, latihan Anagram.
Jadi Anda telah mengimplementasikan modul Anagram
, yang memiliki metode match/2
di file anagram.exs. Sebagai pengembang yang baik, Anda telah menulis beberapa spesifikasi untuk memastikan semuanya berfungsi seperti yang diharapkan juga.
Beginilah tampilan direktori Anda saat ini:
Sekarang, untuk menjalankan pengujian terhadap modul Anagram, Anda perlu menjalankan/mengkompilasi pengujian.
Seperti yang baru saja Anda lihat, untuk mengompilasi file, cukup panggil elixir
yang dapat dieksekusi lewat sebagai jalur argumen ke file yang ingin Anda kompilasi.
Sekarang katakanlah Anda ingin menjalankan IEx REPL dengan modul Anagram yang dapat diakses dalam konteks sesi. Ada dua opsi yang umum digunakan. Yang pertama adalah Anda dapat meminta file dengan menggunakan opsi -r
, seperti iex -r anagram.exs
. Yang kedua, Anda dapat mengkompilasi langsung dari sesi IEx.
Sederhana, begitu saja!
Ok, bagaimana jika Anda ingin mengkompilasi ulang modul? Haruskah Anda keluar dari IEx, menjalankannya lagi dan mengkompilasi file lagi? Tidak! Jika Anda memiliki memori yang baik, Anda akan ingat bahwa ketika kami mendaftar semua pembantu yang tersedia di REPL IEx, kami melihat sesuatu tentang perintah recompile. Mari kita lihat cara kerjanya.
Perhatikan bahwa kali ini, Anda meneruskan modul itu sendiri sebagai argumen dan bukan jalur file.

Seperti yang kita lihat, IEx memiliki banyak pembantu berguna lainnya yang akan membantu Anda mempelajari dan memahami lebih baik cara kerja program Elixir.
Dasar-dasar Jenis Elixir
angka
Ada dua jenis angka. Bilangan bulat berukuran arbitrer dan angka floating point.
bilangan bulat
Bilangan bulat dapat ditulis dalam basis desimal, heksadesimal, oktal dan biner.
Seperti di Ruby, Anda dapat menggunakan garis bawah untuk memisahkan kelompok tiga digit saat menulis angka besar. Misalnya Anda bisa memperbaiki seratus juta seperti ini:
100_000_000
Oktal:
0o444
Heksadesimal:
0xabc
Biner:
0b1011
mengapung
Floare adalah presisi ganda IEEE 754. Mereka memiliki 16 digit akurasi dan eksponen maksimum sekitar 10308.
Float ditulis menggunakan titik desimal. Harus ada setidaknya satu digit sebelum dan sesudah titik. Anda juga dapat menambahkan eksponen tambahan. Misalnya 1.0, 0.3141589e1, dan 314159,0-e.
atom
Atom adalah konstanta yang mewakili nama. Mereka adalah nilai-nilai yang tidak dapat diubah. Anda menulis sebuah atom dengan titik dua di depan :
dan urutan huruf, angka, garis bawah, dan tanda @
. Anda juga dapat menulisnya dengan tanda titik dua di depan :
dan urutan karakter arbitrer yang diapit oleh tanda kutip.
Atom adalah alat yang sangat kuat, mereka digunakan untuk mereferensikan fungsi erlang serta kunci dan metode Elixir.
Berikut adalah beberapa atom yang valid.
:name, :first_name, :"last name", :===, :is_it_@_question?
Boolean
Tentu saja, boolean adalah nilai benar dan salah. Tetapi hal yang menyenangkan tentang mereka adalah pada akhirnya, mereka hanyalah atom.
string
Secara default, string dalam Elixir sesuai dengan UTF-8. Untuk menggunakannya, Anda dapat memiliki sejumlah karakter yang diapit oleh "
atau '
. Anda juga dapat memiliki ekspresi yang diinterpolasi di dalam string serta karakter yang diloloskan.
Ketahuilah bahwa string yang dikutip tunggal sebenarnya adalah daftar binari.
Fungsi Anonim
Sebagai bahasa fungsional, Elixir memiliki fungsi anonim sebagai tipe dasar. Cara sederhana untuk menulis fungsi adalah fn (argument_list) -> body end
. Tetapi suatu fungsi dapat memiliki banyak badan dengan beberapa daftar argumen, klausa penjaga, dan sebagainya.
Dave Thomas, dalam buku Programming Elixir, menyarankan agar kita menganggap fn…end sebagai tanda kutip yang mengelilingi string literal, di mana alih-alih mengembalikan nilai string, kita mengembalikan fungsi.
Tuple
Tuple adalah array terindeks yang tidak dapat diubah. Mereka cepat mengembalikan ukurannya dan lambat menambahkan nilai baru karena sifatnya yang tidak dapat diubah. Saat memperbarui tuple, Anda sebenarnya membuat salinan baru dari tuple sendiri.
Tuple sangat sering digunakan sebagai nilai kembalian dari sebuah array. Saat coding di Elixir Anda akan sangat sering melihat ini, {:ok, something_else_here}
.
Inilah cara kita menulis tupel: {?a,?b,?c}
.
Pencocokan Pola
Saya tidak akan dapat menjelaskan semua yang perlu Anda ketahui tentang Pencocokan Pola, namun apa yang akan Anda baca mencakup banyak hal yang perlu Anda ketahui untuk memulai.
Elixir menggunakan =
sebagai operator pertandingan. Untuk memahami ini, kita perlu melupakan apa yang kita ketahui tentang =
dalam bahasa tradisional lainnya. Dalam bahasa tradisional operator equals adalah untuk penugasan. Di Elixir, operator equals adalah untuk pencocokan pola.
Jadi, begitulah cara kerjanya nilai di sisi kiri. Jika mereka adalah variabel, mereka terikat ke sisi kanan, jika mereka bukan variabel, elixir mencoba mencocokkannya dengan sisi kanan.
Pin Operator
Elixir menyediakan cara untuk selalu memaksa pencocokan pola terhadap variabel di sisi kiri, operator pin.
Daftar
Di Elixir, Daftar terlihat seperti array seperti yang kita ketahui dari bahasa lain tetapi sebenarnya tidak. Daftar adalah struktur terkait yang terdiri dari kepala dan ekor.
Daftar Kata Kunci
Daftar Kata Kunci adalah daftar pasangan Tuple.
Anda cukup menuliskannya sebagai daftar. Misalnya: [{:satu, 1}, 2, {:tiga, 3}]. Ada jalan pintas untuk mendefinisikan daftar, begini tampilannya: [satu: 1, tiga: 3].
Untuk mengambil item dari daftar kata kunci, Anda dapat menggunakan:
Keyword.get([{:one, 1}, 2, {:three, 3}], :one)
Atau gunakan pintasan:
[{:one, 1}, 2, {:three, 3}][:one]
Karena daftar kata kunci lambat saat mengambil nilai, di dalamnya adalah operasi yang mahal, jadi jika Anda menyimpan data yang membutuhkan akses cepat, Anda harus menggunakan Peta.
peta
Peta adalah kumpulan pasangan kunci/nilai yang efisien. Kunci dapat memiliki nilai apa pun yang Anda inginkan sebagai kunci, tetapi biasanya jenisnya harus sama. Berbeda dari daftar kata kunci, Maps hanya mengizinkan satu entri untuk kunci tertentu. Mereka efisien saat mereka tumbuh dan mereka dapat digunakan dalam pencocokan pola Elixir di peta penggunaan umum saat Anda membutuhkan array asosiatif.
Inilah cara Anda dapat menulis Peta:
%{ :one => 1, :two => 2, 3 => 3, "four" => 4, [] => %{}, {} => [k: :v]}
Kesimpulan
Elixir luar biasa, mudah dimengerti, memiliki tipe sederhana namun kuat dan perkakas yang sangat berguna di sekitarnya yang akan membantu Anda saat mulai belajar. Pada bagian pertama ini, kita telah membahas berbagai tipe data yang digunakan oleh program Elixir dan operator yang menjalankannya. Di bagian selanjutnya kita akan menyelam lebih dalam ke dunia Elixir - pemrograman fungsional dan bersamaan.