Elixir (langage de programmation) - Elixir (programming language)

Élixir
langage de programmation élixir
Paradigme multi-paradigme : fonctionnel , concurrent , distribué , orienté processus
Première apparition 2011 ; Il ya 10 ans ( 2011 )
Version stable
1.12  Modifiez ceci sur Wikidata / 19 mai 2021 ; il y a 2 mois ( 19 mai 2021 )
Discipline de frappe dynamique , fort , canard
Plate-forme Erlang
Licence Licence Apache 2.0
Extensions de nom de fichier .ex, .exs
Site Internet élixir-lang .org
Influencé par
Clojure , Erlang , Rubis
Influencé
LFE

Elixir est un langage de programmation fonctionnel , simultané et à usage général qui s'exécute sur la machine virtuelle BEAM utilisée pour implémenter le langage de programmation Erlang . Elixir s'appuie sur Erlang et partage les mêmes abstractions pour la création d'applications distribuées et tolérantes aux pannes . Elixir fournit également un outillage productif et une conception extensible . Ce dernier est pris en charge par la métaprogrammation à la compilation avec des macros et le polymorphisme via des protocoles.

Elixir est utilisé par des sociétés telles que PagerDuty , Discord , Brex , E-MetroTel, Pinterest , Moz, Bleacher Report , The Outline , Inverse , Divvy, FarmBot et pour la construction de systèmes embarqués . La communauté organise des événements annuels aux États-Unis, en Europe et au Japon ainsi que des événements et des conférences locaux mineurs.

Histoire

José Valim est le créateur du langage de programmation Elixir, un projet de recherche et développement créé chez Plataformatec. Ses objectifs étaient de permettre une extensibilité et une productivité plus élevées dans la machine virtuelle Erlang tout en conservant la compatibilité avec l'écosystème d'Erlang.

José Valim visait à créer un langage de programmation pour les sites et les applications à grande échelle. En tant que développeur Ruby, il a utilisé les fonctionnalités de Ruby, Erlang et Clojure pour développer un langage à forte concurrence et à faible latence. Elixir a été conçu pour gérer de gros volumes de données. Sa vitesse et ses capacités ont répandu Elixir dans les secteurs des télécommunications, du commerce électronique et de la finance.

Le 12 juillet 2018, Honeypot a publié un mini-documentaire sur Elixir.

Gestion des versions

Elixir suit principalement le versioning sémantique et n'a qu'une seule version majeure sans aucun plan pour une seconde. Chacune des versions mineures prend en charge une gamme spécifique de versions Erlang/ OTP .

Caractéristiques

Exemples

Les exemples suivants peuvent être exécutés dans un iexshell ou enregistrés dans un fichier et exécutés à partir de la ligne de commande en tapant . elixir <filename>

Exemple classique de Hello world :

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

Compréhensions

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

Correspondance de motifs (déstructuration)

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

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

Correspondance de modèle (clauses multiples)

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

Opérateur de canalisation

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

Modules

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

Génération séquentielle d'un millier de processus

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

Exécuter une tâche de manière asynchrone

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

Des projets Elixir remarquables

  • Mix est un outil d'automatisation de build qui fournit des tâches pour créer, compiler et tester des projets Elixir, gérer ses dépendances, etc.
  • Phoenix est un framework de développement Web écrit en Elixir qui implémente le modèle de contrôleur de vue modèle côté serveur ( MVC ).

Voir également

Les références

Liens externes