Eliksir (język programowania)

Eliksir
elixir programming language
Eliksir
Paradygmaty wieloparadygmat : funkcjonalny , współbieżny , rozproszony , zorientowany procesowo
Zaprojektowany przez Jose Valim
Po raz pierwszy pojawiły się 2012 ; 11 lat temu ( 2012 )
Wersja stabilna
Edit this on Wikidata 1.14.3 / 14 stycznia 2023 ; 41 dni temu ( 14 stycznia 2023 )
Dyscyplina pisania dynamiczny , mocny , kaczka
Platforma Erlang
Licencja Licencja Apache 2.0
Rozszerzenia nazw plików .ex, .exs
Strona internetowa elixir-lang .org
Pod wpływem
Clojure , Erlang , Ruby
Pod wpływem
LFE

Elixir to funkcjonalny , współbieżny język programowania ogólnego przeznaczenia wysokiego poziomu , który działa na maszynie wirtualnej BEAM , która jest również używana do implementacji języka programowania Erlang . Elixir opiera się na Erlangu i ma te same abstrakcje do tworzenia aplikacji rozproszonych , odpornych na błędy . Elixir zapewnia również produktywne narzędzia i rozszerzalny projekt. To ostatnie jest obsługiwane przez metaprogramowanie w czasie kompilacji z makrami i polimorfizmem za pośrednictwem protokołów.

Elixir jest używany przez takie firmy jak Ramp, PagerDuty , Discord , Brex , E-MetroTel, Pinterest , Moz, Bleacher Report , The Outline , Inverse , Divvy, FarmBot oraz do budowy systemów wbudowanych . Społeczność organizuje coroczne wydarzenia w Stanach Zjednoczonych, Europie i Japonii, a także mniejsze lokalne imprezy i konferencje.

Historia

José Valim jest twórcą języka programowania Elixir, projektu badawczo-rozwojowego stworzonego w Plataformatec. Jego celem było umożliwienie większej rozszerzalności i produktywności maszyny wirtualnej Erlang przy jednoczesnym zachowaniu zgodności z ekosystemem Erlanga.

Elixir był skierowany do witryn i aplikacji na dużą skalę. Elixir wykorzystuje cechy Ruby , Erlang i Clojure do opracowania języka o „wysokiej współbieżności” i „niskim opóźnieniu”. Elixir został zaprojektowany do obsługi dużych wolumenów danych. Elixir jest używany w branży telekomunikacyjnej, eCommerce i finansowej.

12 lipca 2018 Honeypot wydał mini-dokument o Elixir.

Wersjonowanie

Elixir w większości opiera się na wersjonowaniu semantycznym i ma tylko 1 główną wersję bez planów na drugą. Każda z wersji pomocniczych obsługuje określony zakres wersji Erlang/ OTP . Obecna wersja stabilna to .

Cechy

Przykłady

Poniższe przykłady można uruchomić w powłoce iex lub zapisać w pliku i uruchomić z wiersza poleceń , wpisując elixir <nazwa pliku> .

Klasyczny przykład Hello world :


 iex>  IO  .  puts  (  „Witaj, świecie!”  )  Witaj, świecie! 

Rozumienie listy :

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

Dopasowywanie wzorców (destrukturyzacja):

    



      

 iex>  [  1  ,  za  ]  =  [  1  ,  2  ]  iex>  a  2  iex>  {  :ok  ,  [  cześć  :  a  ]}  =  {  : ok  ,  [  cześć  :  "świat"  ]}  iex>  a  "świat" 

Dopasowywanie wzorców (wiele klauzul):

  
     
     
 iex>  sprawa  Plik  .  read  (  "ścieżka/do/pliku"  )  do  iex>  {  :ok  ,  zawartość  }  ->  IO  .  puts  (  "znaleziony plik:  #{  zawartość  }  "  )  iex>  {  :błąd  ,  przyczyna  }  ->  IO  .  puts  (  "brakujący plik:  #{  powód  }  "  )  iex>  end 

Operator rurociągu:

    
 iex>  "1"  |>  Ciąg  .  to_integer  ()  |>  Jądro  .*  (  2  )  2 

Moduły :

  
   0  0
     
         
 defmodule  Zabawa  do  def  fib  (  ),  do  :  def  fib  (  1  ),  do  :  1  def  fib  (  n  ),  do  :  fib  (  n  -  2  )  +  fib  (  n  -  1  )  koniec 

Sekwencyjne uruchamianie tysiąca procesów:

            dla  num  <-  1  ..  1000  wykonaj  :  spawn  fn  -  >  IO  .  stawia  (  "  #{  liczba  *  2  }  "  )  koniec 

Asynchroniczne wykonywanie zadania:

      

  zadanie  =  zadanie  .  async  fn  ->  perform_complex_action  ()  koniec  other_time_using_action  ()  Zadanie  .  czekać na  zadanie 

Godne uwagi projekty Elixir

Zobacz też

Linki zewnętrzne