Lompat ke isi

Elixir (bahasa pemrograman): Perbedaan antara revisi

Dari Wikipedia bahasa Indonesia, ensiklopedia bebas
Konten dihapus Konten ditambahkan
Ibensis (bicara | kontrib)
←Membuat halaman berisi '{{Infobox programming language | name = Elixir | title = | logo = | caption = | paradigm = Bahasa pemrograman berparadigma jamak, Fungsional, Konkuren, Terdistribus...'
 
InternetArchiveBot (bicara | kontrib)
Rescuing 1 sources and tagging 0 as dead.) #IABot (v2.0.9.3
 
(10 revisi perantara oleh 6 pengguna tidak ditampilkan)
Baris 11: Baris 11:
| website = {{URL|https://elixir-lang.org}}
| website = {{URL|https://elixir-lang.org}}
| year = {{start date and age|2011}}
| year = {{start date and age|2011}}
| influenced_by = [[Clojure]], [[Erlang]], [[Ruby (bahasa pemrograman)|Ruby]]
| influenced by = [[Clojure]], [[Erlang]], [[Ruby (bahasa pemrograman)|Ruby]]
| creator = José Valim
| creator = José Valim
| latest_release_date = {{Start date and age|df=yes|2018|10|24}}<ref>{{cite web|title = Releases - elixir-lang/elixir|url=https://github.com/elixir-lang/elixir/releases|accessdate=26 October 2018|via=[[GitHub]]}}</ref>
| latest_release_date = {{Start date and age|df=yes|2018|10|24}}<ref>{{cite web|title = Releases - elixir-lang/elixir|url=https://github.com/elixir-lang/elixir/releases|accessdate=26 October 2018|via=[[GitHub]]}}</ref>
Baris 17: Baris 17:
}}
}}


'''Elixir''' adalah sebuah bahasa pemrograman [[fungsional]], [[konkuren]] dan untuk berbagai keperluan yang berjalan dalam [[Mesin Virtual]] bahasa Erlang.<ref>{{Cite web|title = Elixir: A Mini-Documentary|url = http://doc.honeypot.io/elixir-documentary-2018/|accessdate = 2018-07-12}}</ref><ref>{{Cite news|url=https://www.eliteinfoworld.com/blog/popular-programming-languages-2018/|title=Most Popular Programming Languages of 2018 - Elite Infoworld Blog|date=2018-03-30|access-date=2018-05-08|language=en-US}}</ref> Elixir dibuat berdasarkan bahasa Erlang dan memiliki abstraksi yang sama dalam membangun aplikasi yang terdistribusi dan toleran atas kesalahan. Elixir juga menyediakan perkakas yang productif dan desain yang mudah dikembangkan. Kemudahan pengembangan tersebut diwujudkan melalui [[meta-programming]] saat [[proses kompilasi]] dengan [[makro]] dan [[polimorfisme]] dengan protokol-protokolnya. <ref>{{cite web |url=https://elixir-lang.org|title=Elixir | work=José Valim | accessdate=2013-02-17}}</ref> Proses-proses di Elixir diawasi oleh sebuah ''Supervisor'' yang apabila terjadi satu proses yang gagal maka akan dibangkitkan proses baru sehingga tidak mengakibatkan kegagalan yang menggangu seluruh sistem, inilah keunggulan toleran atas kesalahan yang dimiliki oleh Elixir. Proses-proses seperti ini bisa mencapai jutaan proses dalam satu waktu.
'''Elixir''' adalah sebuah bahasa pemrograman [[fungsional]], [[konkuren]] dan untuk berbagai keperluan yang berjalan dalam [[Mesin Virtual]] bahasa Erlang.<ref>{{Cite web|title = Elixir: A Mini-Documentary|url = http://doc.honeypot.io/elixir-documentary-2018/|accessdate = 2018-07-12|archive-date = 2018-07-12|archive-url = https://web.archive.org/web/20180712124701/http://doc.honeypot.io/elixir-documentary-2018/|dead-url = yes}}</ref><ref>{{Cite news|url=https://www.eliteinfoworld.com/blog/popular-programming-languages-2018/|title=Most Popular Programming Languages of 2018 - Elite Infoworld Blog|date=2018-03-30|access-date=2018-05-08|language=en-US|archive-date=2018-05-09|archive-url=https://web.archive.org/web/20180509080342/https://www.eliteinfoworld.com/blog/popular-programming-languages-2018/|dead-url=yes}}</ref> Elixir dibuat berdasarkan bahasa Erlang dan memiliki abstraksi yang sama dalam membangun aplikasi yang terdistribusi dan toleran atas kesalahan. Elixir juga menyediakan perkakas yang productif dan desain yang mudah dikembangkan. Kemudahan pengembangan tersebut diwujudkan melalui [[meta-programming]] saat [[proses kompilasi]] dengan [[makro]] dan [[polimorfisme]] dengan protokol-protokolnya.<ref>{{cite web |url=https://elixir-lang.org|title=Elixir | work=José Valim | accessdate=2013-02-17}}</ref> Proses-proses di Elixir diawasi oleh sebuah ''Supervisor'' yang apabila terjadi satu proses yang gagal maka akan dibangkitkan proses baru sehingga tidak mengakibatkan kegagalan yang menggangu seluruh sistem, inilah keunggulan toleran atas kesalahan yang dimiliki oleh Elixir. Proses-proses seperti ini bisa mencapai jutaan proses dalam satu waktu.


telah digunakan bebrapa perusahaan semacam E-MetroTel, [[Pinterest]]<ref>{{Cite web|title = Introducing new open-source tools for the Elixir community|url = https://engineering.pinterest.com/blog/introducing-new-open-source-tools-elixir-community|accessdate = 2016-08-01}}</ref> dan Moz.<ref>{{Cite web|title = Unlocking New Features in Moz Pro with a Database-Free Architecture|url = https://moz com/devblog/moz-analytics-db-free/|accessdate = 2016-08-01}}</ref> Elixir juga digunakan entuk mengembangkan situs web, oleh perusahaan seperti Bleacher Report, Discord, dan Inverse,<ref>{{Cite web|title = What big projects use Elixir?|url = https://www.quora.com/What-big-projects-use-Elixir|accessdate = 2016-08-01}}</ref> and for building embedded systems.<ref>{{Cite web|title = Elixir in production interview: Garth Hitchens|url = http://blog.plataformatec.com.br/2015/06/elixir-in-production-interview-garth-hitches/|accessdate = 2016-08-01}}</ref><ref>{{Cite web|title = Nerves - Craft and deploy bulletproof embedded software in Elixir |url = http://nerves-project.org/|accessdate = 2016-08-01}}</ref>
telah digunakan bebrapa perusahaan semacam E-MetroTel, [[Pinterest]]<ref>{{Cite web|title = Introducing new open-source tools for the Elixir community|url = https://engineering.pinterest.com/blog/introducing-new-open-source-tools-elixir-community|accessdate = 2016-08-01}}</ref> dan Moz.<ref>{{Cite web|title = Unlocking New Features in Moz Pro with a Database-Free Architecture|url = https://moz com/devblog/moz-analytics-db-free/|accessdate = 2016-08-01}}{{Pranala mati|date=Maret 2021 |bot=InternetArchiveBot |fix-attempted=yes }}</ref> Elixir juga digunakan entuk mengembangkan situs web, oleh perusahaan seperti Bleacher Report, Discord, dan Inverse,<ref>{{Cite web|title = What big projects use Elixir?|url = https://www.quora.com/What-big-projects-use-Elixir|accessdate = 2016-08-01}}</ref> and for building embedded systems.<ref>{{Cite web|title = Elixir in production interview: Garth Hitchens|url = http://blog.plataformatec.com.br/2015/06/elixir-in-production-interview-garth-hitches/|accessdate = 2016-08-01}}</ref><ref>{{Cite web|title = Nerves - Craft and deploy bulletproof embedded software in Elixir |url = http://nerves-project.org/|accessdate = 2016-08-01}}</ref>


==Sejarah==
== Sejarah ==
Pembuat bahasa Elixir adalah Jose Valim, Ia memaksudkan bahasa ini untuk dapat memiliki produktifitas dan kemampuan untuk mungkin berkembang yang tinggi pada mesin virtual Erlang dan tetap menjaga kecocokan terhadap ekosistem bahasa Erlang. <ref>{{ cite AV media |url=http://vimeo.com/53221562|title=Elixir - A modern approach to programming for the Erlang VM | accessdate=2013-02-17}}</ref> <ref>{{ cite AV media |url=https://www.youtube.com/watch?v=IZvpKhA6t8A|title=José Valim - ElixirConf EU 2017 Keynote | accessdate=2017-07-14}}</ref>
Pembuat bahasa Elixir adalah Jose Valim, Ia memaksudkan bahasa ini untuk dapat memiliki produktivitas dan kemampuan untuk mungkin berkembang yang tinggi pada mesin virtual Erlang dan tetap menjaga kecocokan terhadap ekosistem bahasa Erlang.<ref>{{ cite AV media |url=http://vimeo.com/53221562|title=Elixir - A modern approach to programming for the Erlang VM | accessdate=2013-02-17}}</ref><ref>{{ cite AV media |url=https://www.youtube.com/watch?v=IZvpKhA6t8A|title=José Valim - ElixirConf EU 2017 Keynote | accessdate=2017-07-14}}</ref>


==Fitur-fitur==
== Fitur-fitur ==
* A language that [[Compiler|compiles]] to [[bytecode]] for the [[Erlang (programming language)|Erlang]] Virtual Machine (BEAM)<ref name="elixirhome">{{ cite web |url=https://elixir-lang.org/|title=Elixir | accessdate=2014-09-07}}</ref>
* A language that [[Compiler|compiles]] to [[bytecode]] for the [[Erlang (programming language)|Erlang]] Virtual Machine (BEAM)<ref name="elixirhome">{{ cite web |url=https://elixir-lang.org/|title=Elixir | accessdate=2014-09-07}}</ref>
* Everything is an [[Expression (computer science)|expression]]<ref name="elixirhome" />
* Everything is an [[Expression (computer science)|expression]]<ref name="elixirhome" />
Baris 37: Baris 37:
* [[Mix (build tool)|Built-in tooling]] for managing dependencies, code compilation, running tests, formatting code, remote debugging and more
* [[Mix (build tool)|Built-in tooling]] for managing dependencies, code compilation, running tests, formatting code, remote debugging and more
* [[Lazy evaluation|Lazy]] and [[Futures and promises|async collections]] with streams
* [[Lazy evaluation|Lazy]] and [[Futures and promises|async collections]] with streams
* [[Pattern matching]]<ref name="elixirhome" /> to promote assertive code<ref>{{Cite web|title = Writing assertive code with Elixir|url = http://blog.plataformatec.com.br/2014/09/writing-assertive-code-with-elixir/|accessdate = 2018-07-05}}</ref>
* [[Pattern matching]]<ref name="elixirhome" /> to promote assertive code<ref>{{Cite web|title = Writing assertive code with Elixir|url = http://blog.plataformatec.com.br/2014/09/writing-assertive-code-with-elixir/|accessdate = 2018-07-05}}</ref>
* [[Unicode]] support and [[UTF-8]] strings
* [[Unicode]] support and [[UTF-8]] strings


==Contoh-contoh==
== Contoh-contoh ==
Sintaksis bahasa Elixir banyak terinspirasi dari bahasa Ruby dan Erlang, sehingga relatif mudah dipahami. Jose Valim sendiri juga diketahui sebagai salah seorang pengguna bahasa Ruby. Berikut adalah contoh-contoh yang dapat dijalankan dalam 'iex shell' maupun disimpan ke dalam sebuah berkas dan dijalankan melalui Terminal dengan mengetikan <code>elixir ''<filename>''</code>.
Sintaksis bahasa Elixir banyak terinspirasi dari bahasa Ruby dan Erlang, sehingga relatif mudah dipahami. Jose Valim sendiri juga diketahui sebagai salah seorang pengguna bahasa Ruby. Berikut adalah contoh-contoh yang dapat dijalankan dalam 'iex shell' maupun disimpan ke dalam sebuah berkas dan dijalankan melalui Terminal dengan mengetikan <code>elixir ''<filename>''</code>.


Contoh klasik program [[Hello world]]:
Contoh klasik program [[Hello world]]:
<source lang="iex">
<syntaxhighlight lang="iex">
iex> IO.puts("Hello World!")
iex> IO.puts("Hello World!")
Hello World!
Hello World!
</syntaxhighlight>
</source>


Komprehensi
Komprehensi
<source lang="iex">
<syntaxhighlight lang="iex">
iex> for n <- [1,2,3,4,5], rem(n, 2) == 1, do: n*n
iex> for n <- [1,2,3,4,5], rem(n, 2) == 1, do: n*n
[1, 9, 25]
[1, 9, 25]
</syntaxhighlight>
</source>


Pencocokan pola (destructuring)
Pencocokan pola (destructuring)
<source lang="iex">
<syntaxhighlight lang="iex">
iex> [1, a] = [1, 2]
iex> [1, a] = [1, 2]
iex> a
iex> a
Baris 64: Baris 64:
iex> a
iex> a
"world"
"world"
</syntaxhighlight>
</source>


Pencocokan Pola (Banyak klausul)
Pencocokan Pola (Banyak klausul)
<source lang="iex">
<syntaxhighlight lang="iex">
iex> case File.read("path/to/file") do
iex> case File.read("path/to/file") do
iex> {:ok, contents} -> IO.puts("found file: #{contents}")
iex> {:ok, contents} -> IO.puts("found file: #{contents}")
iex> {:error, reason} -> IO.puts("missing file: #{reason}")
iex> {:error, reason} -> IO.puts("missing file: #{reason}")
iex> end
iex> end
</syntaxhighlight>
</source>


Operator Pipa
Operator Pipa
<source lang="iex">
<syntaxhighlight lang="iex">
iex> "1" |> String.to_integer() |> Kernel.*(2)
iex> "1" |> String.to_integer() |> Kernel.*(2)
2
2
</syntaxhighlight>
</source>


Modul-modul
Modul-modul
<source lang="elixir">
<syntaxhighlight lang="elixir">
defmodule Fun do
defmodule Fun do
def fib(0), do: 0
def fib(0), do: 0
Baris 87: Baris 87:
def fib(n), do: fib(n-2) + fib(n-1)
def fib(n), do: fib(n-2) + fib(n-1)
end
end
</syntaxhighlight>
</source>


Mengembangkan ribuan proses secara sequential.
Mengembangkan ribuan proses secara sequential.
<source lang=elixir>
<syntaxhighlight lang=elixir>
for num <- 1..1000, do: spawn fn -> IO.puts("#{num * 2}") end
for num <- 1..1000, do: spawn fn -> IO.puts("#{num * 2}") end
</syntaxhighlight>
</source>


Melakukan tugas secara tidak selaras (async)
Melakukan tugas secara tidak selaras (async)
<source lang=elixir>
<syntaxhighlight lang=elixir>
task = Task.async fn -> perform_complex_action() end
task = Task.async fn -> perform_complex_action() end
other_time_consuming_action()
other_time_consuming_action()
Task.await task
Task.await task
</syntaxhighlight>
</source>


==Program-program Elixir yang menonjol==
== Program-program Elixir yang menonjol ==
* [https://github.com/absinthe-graphql/absinthe Absinthe] ialah implementasi [[GraphQL]] untuk Elixir
* [https://github.com/absinthe-graphql/absinthe Absinthe] ialah implementasi [[GraphQL]] untuk Elixir
* [https://github.com/elixir-ecto/ecto Ecto] adalah pembungkus basisdata dan query untuk Elixir
* [https://github.com/elixir-ecto/ecto Ecto] adalah pembungkus basisdata dan query untuk Elixir
* [[Mix (build tool)|Mix]] adalah alat pembangun proyek otomatis untuk proyek-proyek Elixir.
* [[Mix (build tool)|Mix]] adalah alat pembangun proyek otomatis untuk proyek-proyek Elixir.
* [https://github.com/nerves-project/nerves Nerves] adalah sebuah kerangka kerja dan landasan kerja untuk piranti lunak tertanam.
* [https://github.com/nerves-project/nerves Nerves] adalah sebuah kerangka kerja dan landasan kerja untuk peranti lunak tertanam.
* [[Phoenix (web framework)|Phoenix]] adalah kerangka kerja pembangun situs web pada Elixir
* [[Phoenix (web framework)|Phoenix]] adalah kerangka kerja pembangun situs web pada Elixir
* [https://github.com/elixir-plug/plug Plug] adalah sebuah spesifikasi dan alat untuk mempermudah dalam membuat modul antara aplikasi-aplikasi web.
* [https://github.com/elixir-plug/plug Plug] adalah sebuah spesifikasi dan alat untuk mempermudah dalam membuat modul antara aplikasi-aplikasi web.


==Rujukan==
== Rujukan ==
{{Reflist|30em}}
{{Reflist|30em}}


==Pranala luar==
== Pranala luar ==
* [https://elixir-lang.org Elixir language website]
* [https://elixir-lang.org Elixir language website]
* [https://github.com/elixir-lang/elixir/ Code on GitHub]
* [https://github.com/elixir-lang/elixir/ Code on GitHub]
Baris 118: Baris 118:
* [https://pragprog.com/book/elixir16/programming-elixir-1-6 Dave Thomas: "Programming Elixir ≥ 1.6 Functional |> Concurrent |> Pragmatic |> Fun" (book)]
* [https://pragprog.com/book/elixir16/programming-elixir-1-6 Dave Thomas: "Programming Elixir ≥ 1.6 Functional |> Concurrent |> Pragmatic |> Fun" (book)]
* [http://shop.oreilly.com/product/0636920030584.do Simon St. Laurent, J. David Eisenberg: "Introducing Elixir" (book)]
* [http://shop.oreilly.com/product/0636920030584.do Simon St. Laurent, J. David Eisenberg: "Introducing Elixir" (book)]
* [http://shop.oreilly.com/product/9781680500417.do Chris McCord: "Metaprogramming Elixir " (book)]
* [http://shop.oreilly.com/product/9781680500417.do Chris McCord: "Metaprogramming Elixir " (book)]


{{Bahasa pemrograman}}
{{Bahasa pemrograman}}
{{Authority control}}

[[Kategori:Bahasa pemrograman]]
[[Kategori:Bahasa pemrograman]]

Revisi terkini sejak 5 April 2023 03.34

Edit nilai pada Wikidata
ParadigmaBahasa pemrograman berparadigma jamak, Fungsional, Konkuren, Terdistribusi, dan Berorientasi proses.
Rilis perdana2011; 13 tahun lalu (2011)
Tipe sistempenulisan yan dinamis, Strong, dan duck-typing.
PlatformErlang
LisensiApache License 2.0[1]
Ekstensi nama berkas.ex, .exs
Situs webelixir-lang.org
Repositorielixir-lang.org
Terpengaruh oleh
Clojure, Erlang, Ruby
Mempengaruhi
LFE
Sunting kotak info
Sunting kotak info • L • B
Info templat
Bantuan penggunaan templat ini


Elixir adalah sebuah bahasa pemrograman fungsional, konkuren dan untuk berbagai keperluan yang berjalan dalam Mesin Virtual bahasa Erlang.[2][3] Elixir dibuat berdasarkan bahasa Erlang dan memiliki abstraksi yang sama dalam membangun aplikasi yang terdistribusi dan toleran atas kesalahan. Elixir juga menyediakan perkakas yang productif dan desain yang mudah dikembangkan. Kemudahan pengembangan tersebut diwujudkan melalui meta-programming saat proses kompilasi dengan makro dan polimorfisme dengan protokol-protokolnya.[4] Proses-proses di Elixir diawasi oleh sebuah Supervisor yang apabila terjadi satu proses yang gagal maka akan dibangkitkan proses baru sehingga tidak mengakibatkan kegagalan yang menggangu seluruh sistem, inilah keunggulan toleran atas kesalahan yang dimiliki oleh Elixir. Proses-proses seperti ini bisa mencapai jutaan proses dalam satu waktu.

telah digunakan bebrapa perusahaan semacam E-MetroTel, Pinterest[5] dan Moz.[6] Elixir juga digunakan entuk mengembangkan situs web, oleh perusahaan seperti Bleacher Report, Discord, dan Inverse,[7] and for building embedded systems.[8][9]

Pembuat bahasa Elixir adalah Jose Valim, Ia memaksudkan bahasa ini untuk dapat memiliki produktivitas dan kemampuan untuk mungkin berkembang yang tinggi pada mesin virtual Erlang dan tetap menjaga kecocokan terhadap ekosistem bahasa Erlang.[10][11]

Fitur-fitur

[sunting | sunting sumber]

Contoh-contoh

[sunting | sunting sumber]

Sintaksis bahasa Elixir banyak terinspirasi dari bahasa Ruby dan Erlang, sehingga relatif mudah dipahami. Jose Valim sendiri juga diketahui sebagai salah seorang pengguna bahasa Ruby. Berikut adalah contoh-contoh yang dapat dijalankan dalam 'iex shell' maupun disimpan ke dalam sebuah berkas dan dijalankan melalui Terminal dengan mengetikan elixir <filename>.

Contoh klasik program Hello world:

iex> IO.puts("Hello World!")
Hello World!

Komprehensi

iex> for n <- [1,2,3,4,5], rem(n, 2) == 1, do: n*n
[1, 9, 25]

Pencocokan pola (destructuring)

iex> [1, a] = [1, 2]
iex> a
2

iex> {:ok, [hello: a]} = {:ok, [hello: "world"]}
iex> a
"world"

Pencocokan Pola (Banyak klausul)

iex> case File.read("path/to/file") do
iex> {:ok, contents} -> IO.puts("found file: #{contents}")
iex> {:error, reason} -> IO.puts("missing file: #{reason}")
iex> end

Operator Pipa

iex> "1" |> String.to_integer() |> Kernel.*(2)
2

Modul-modul

defmodule Fun do
  def fib(0), do: 0
  def fib(1), do: 1
  def fib(n), do: fib(n-2) + fib(n-1)  
end

Mengembangkan ribuan proses secara sequential.

for num <- 1..1000, do: spawn fn -> IO.puts("#{num * 2}") end

Melakukan tugas secara tidak selaras (async)

task = Task.async fn -> perform_complex_action() end
other_time_consuming_action()
Task.await task

Program-program Elixir yang menonjol

[sunting | sunting sumber]
  • Absinthe ialah implementasi GraphQL untuk Elixir
  • Ecto adalah pembungkus basisdata dan query untuk Elixir
  • Mix adalah alat pembangun proyek otomatis untuk proyek-proyek Elixir.
  • Nerves adalah sebuah kerangka kerja dan landasan kerja untuk peranti lunak tertanam.
  • Phoenix adalah kerangka kerja pembangun situs web pada Elixir
  • Plug adalah sebuah spesifikasi dan alat untuk mempermudah dalam membuat modul antara aplikasi-aplikasi web.
  1. ^ "elixir/LICENSE at master · elixir-lang/elixir · GitHub". GitHub. 
  2. ^ "Elixir: A Mini-Documentary". Diarsipkan dari versi asli tanggal 2018-07-12. Diakses tanggal 2018-07-12. 
  3. ^ "Most Popular Programming Languages of 2018 - Elite Infoworld Blog" (dalam bahasa Inggris). 2018-03-30. Diarsipkan dari versi asli tanggal 2018-05-09. Diakses tanggal 2018-05-08. 
  4. ^ "Elixir". José Valim. Diakses tanggal 2013-02-17. 
  5. ^ "Introducing new open-source tools for the Elixir community". Diakses tanggal 2016-08-01. 
  6. ^ com/devblog/moz-analytics-db-free/ "Unlocking New Features in Moz Pro with a Database-Free Architecture" Periksa nilai |url= (bantuan). Diakses tanggal 2016-08-01. [pranala nonaktif permanen]
  7. ^ "What big projects use Elixir?". Diakses tanggal 2016-08-01. 
  8. ^ "Elixir in production interview: Garth Hitchens". Diakses tanggal 2016-08-01. 
  9. ^ "Nerves - Craft and deploy bulletproof embedded software in Elixir". Diakses tanggal 2016-08-01. 
  10. ^ Elixir - A modern approach to programming for the Erlang VM. Diakses tanggal 2013-02-17. 
  11. ^ José Valim - ElixirConf EU 2017 Keynote. Diakses tanggal 2017-07-14. 
  12. ^ a b c d e f "Elixir". Diakses tanggal 2014-09-07. 
  13. ^ Loder, Wolfgang (12 May 2015). Erlang and Elixir for Imperative Programmers. "Chapter 16: Code Structuring Concepts", section title "Actor Model": Leanpub. Diakses tanggal 7 July 2015. 
  14. ^ "Writing assertive code with Elixir". Diakses tanggal 2018-07-05. 

Pranala luar

[sunting | sunting sumber]