Elixir (programovací jazyk) - Elixir (programming language) - Wikipedia
![]() | tento článek obsahuje obsah, který je napsán jako reklama.Červen 2020) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
![]() | |
Paradigma | multi-paradigma: funkční, souběžně, distribuováno, orientovaný na proces |
---|---|
Poprvé se objevil | 2011 |
Stabilní uvolnění | 1.11.2 / 3. listopadu 2020[1] |
Psací disciplína | dynamický, silný, kachna |
Plošina | Erlang |
Licence | Licence Apache 2.0[2] |
Přípony názvu souboru | .ex, .exs |
webová stránka | elixír-jazyk |
Ovlivněno | |
Clojure, Erlang, Rubín | |
Ovlivněno | |
LFE |
Elixír je funkční, souběžně, univerzální programovací jazyk který běží na PAPRSEK virtuální stroj slouží k implementaci Erlang programovací jazyk.[3] Elixir staví na vrcholu Erlangu a sdílí stejné abstrakce pro stavění distribuováno, tolerantní k chybám aplikace. Elixir také poskytuje produktivní nástroje a rozšiřitelný design. Ten je podporován kompilací metaprogramování s makra a polymorfismus prostřednictvím protokolů.[4]
Elixir používají společnosti jako PagerDuty,[5] Svár,[6] Brex,[7] E-MetroTel,[8] Pinterest,[9] Moz,[10] Zpráva bělidla,[11] Obrys,[12] Inverzní,[13] Divvy,[14] FarmBot[15] a pro stavbu vestavěné systémy.[16][17] Komunita pořádá každoroční akce ve Spojených státech,[18] Evropa[19] a Japonsko[20] stejně jako menší místní akce a konference.[21][22]
Dějiny
José Valim je tvůrcem programovacího jazyka Elixir, a výzkum a vývoj projekt společnosti Plataformatec. Jeho cílem bylo umožnit vyšší rozšiřitelnost a produktivitu ve virtuálním počítači Erlang při zachování kompatibility s ekosystémem Erlang.[23][24]
Cílem José Valima bylo vytvořit programovací jazyk pro rozsáhlé weby a aplikace. Jako vývojář Ruby použil funkce Ruby, Erlang a Clojure k vývoji jazyka s vysokou souběžností a nízkou latencí. Elixir byl navržen pro zpracování velkých objemů dat. Jeho rychlost a možnosti rozšiřují Elixir v telekomunikačním, elektronickém obchodu a finančním průmyslu.[25]
12. července 2018 vydala společnost Honeypot mini-dokument o Elixíru.[26]
Správa verzí
Většinou elixír[27] následuje sémantické verze a má pouze 1 hlavní verzi bez plánů na vteřinu. Každá z vedlejších verzí podporuje specifický rozsah Erlang /OTP verze.[28]
Funkce
- sestavuje na bytecode pro Erlang Virtuální stroj (BEAM)[29]
- Všechno je výraz[29]
- Funkce Erlang lze volat z Elixíru a naopak bez doba běhu dopad, kvůli kompilaci do Erlang bytecode
- Meta programování umožňující přímou manipulaci s abstraktní syntaxový strom (AST)[29]
- Polymorfismus prostřednictvím mechanismu zvaného protokoly. Jako v Clojure, protokoly poskytují a dynamické odesílání mechanismus. To však nelze zaměňovat hromadné odeslání jako protokoly Elixir odesílají na jeden typ.
- Podpora dokumentace prostřednictvím docstrings podobných Pythonu v Snížení formátovací jazyk[29]
- Sdílelo nic souběžného programování prostřednictvím předávání zpráv (Herecký model )[30]
- Důraz na rekurze a funkce vyššího řádu namísto vedlejší účinek -na základě opakování
- Lehká souběžnost využívající mechanismy Erlangu[29]
- Železniční programování přes
s
postavit - Integrované nástroje pro správu závislostí, kompilaci kódu, spouštění testů, formátování kódu, vzdálené ladění a další
- Líný a asynchronní sbírky s proudy
- Shoda vzoru[29] propagovat asertivní kód[31]
- Unicode podpora a UTF-8 struny
Příklady
Následující příklady lze spustit v iex
shell nebo uložen do souboru a spuštěn z příkazového řádku zadáním elixír <filename>
.
Klasický Ahoj světe příklad:
iex>IO.uvádí("Ahoj světe!")Ahoj světe!
Porozumění
iex>pro n <- [1,2,3,4,5], rem(n, 2) == 1, dělat: n*n[1, 9, 25]
Porovnávání vzorů (destrukce)
iex>[1, A] = [1, 2]iex>A2iex>{:OK, [Ahoj: A]} = {:OK, [Ahoj: "svět"]}iex>A"svět"
Porovnávání vzorů (více klauzulí)
iex>případ Soubor.číst("cesta / k / souboru") dělatiex> {:OK, obsah} -> IO.uvádí("nalezený soubor: #{obsah}")iex> {:chyba, důvod} -> IO.uvádí("chybějící soubor: #{důvod}")iex>konec
Provozovatel potrubí
iex>"1" |> Tětiva.to_integer() |> Jádro.*(2)2
Moduly
defmodule Zábava dělat def fib(0), dělat: 0 def fib(1), dělat: 1 def fib(n), dělat: fib(n-2) + fib(n-1) konec
Postupně se objeví tisíc procesů
pro počet <- 1..1000, dělat: potěr fn -> IO.uvádí("#{počet * 2}") konec
Asynchronní provádění úkolu
úkol = Úkol.asynchronní fn -> perform_complex_action() konecother_time_consuming_action()Úkol.čekat úkol
Pozoruhodné projekty Elixir
- Směs je nástroj pro automatizaci sestavení, který poskytuje úkoly pro vytváření, kompilaci a testování projektů Elixir, správu jeho závislostí a další.[32]
- Phoenix je rámec pro vývoj webových aplikací napsaný v Elixiru, který implementuje řadič zobrazení modelu na straně serveru (MVC ) vzor.[33]
- Nervy je prostředí platformy, rámce a nástrojů pro vytváření vestavěných systémů a zařízení.[17][34]
- Ecto je generátor obálek databáze a dotazů pro Elixir.[35]
Viz také
Reference
- ^ „Vydání - elixír-jazyk / elixír“. Citováno 3. listopadu 2020 - přes GitHub.
- ^ „elixir / LICENSE ve společnosti master · elixir-lang / elixir · GitHub“. GitHub.
- ^ „Nejoblíbenější programovací jazyky roku 2018 - blog Elite Infoworld“. 2018-03-30. Citováno 2018-05-08.
- ^ "Elixír". José Valim. Citováno 2013-02-17.
- ^ „Elixir at PagerDuty“. PagerDuty. 2018-06-14. Citováno 2019-04-21.
- ^ Višnevskij, Stanislav (6. července 2017). „Jak Discord změnil elixír na 5 000 000 souběžných uživatelů“. Citováno 2019-04-21.
- ^ Valim, José (2020-06-23). „Elixír na fintech s brexem“. elixir-lang.github.com. Citováno 2020-11-14.
- ^ „Co je nového ve verzi 6.0 | Dokumentace“. www.emetrotel.com. Citováno 2019-04-21.
- ^ „Představujeme nové nástroje open-source pro komunitu Elixir“. Citováno 2016-08-01.
- ^ „Odemknutí nových funkcí v Moz Pro s architekturou bez databáze“. Citováno 2016-08-01.
- ^ "Elixír". Bleacher Report Engineering. Citováno 2019-05-22.
- ^ Lucia, Dave (24. září 2018). „Two years of Elixir at The Outline“. Citováno 2019-05-22.
- ^ „Jaké velké projekty používají Elixir?“. Citováno 2016-08-01.
- ^ „Proč Divvy používá elixír místo populárnějších kódovacích jazyků“. Citováno 2019-04-30.
- ^ Operační systém a veškerý související software, který běží na Raspberry Pi společnosti FarmBot .: FarmBot / farmbot_os, FarmBot, 2019-10-28, vyvoláno 2019-10-29
- ^ „Elixír v produkčním rozhovoru: Garth Hitchens“. Citováno 2016-08-01.
- ^ A b „Nerves - Craft and deploy bulletproof embedded software in Elixir“. Citováno 2016-08-01.
- ^ „ElixirConf“. Citováno 2018-07-11.
- ^ „ElixirConf“. Citováno 2018-07-11.
- ^ „Erlang & Elixir Fest“. Citováno 2019-02-18.
- ^ „Elixir LDN“. Citováno 2018-07-12.
- ^ „EMPEX - Empire State Elixir Conference“. Citováno 2018-07-12.
- ^ Elixir - moderní přístup k programování pro Erlang VM. Citováno 2013-02-17.
- ^ José Valim - ElixirConf EU 2017 Keynote. Citováno 2017-07-14.
- ^ „Behind the code: The One Who Created Elixir“. Citováno 2019-11-25.
- ^ „Elixír: minidokumentární“. Citováno 2018-07-12.
- ^ „Imperativní přiřazení porušují aplikaci v aktualizaci 1.7 · Vydání # 8076 · elixir-lang / elixir“. GitHub. Citováno 2020-02-10.
- ^ Elixir je dynamický, funkční jazyk určený pro vytváření škálovatelných a udržovatelných aplikací: elixir-lang / elixir, Elixir, 21. 04. 2019, vyvoláno 2019-04-21
- ^ A b C d E F "Elixír". Citováno 2014-09-07.
- ^ Loder, Wolfgang (12. května 2015). Erlang a elixír pro imperativní programátory. „Kapitola 16: Koncepty strukturování kódu“, název sekce „Model herce“: Leanpub. Citováno 7. července 2015.CS1 maint: umístění (odkaz)
- ^ „Psaní asertivního kódu pomocí Elixiru“. Citováno 2018-07-05.
- ^ "Směs". Citováno 2019-04-18.
- ^ "Přehled". Citováno 2019-04-18.
- ^ „Začínáme“. Citováno 2019-04-18.
- ^ „Začínáme“. Citováno 2019-04-16.