Elixir (limbaj de programare)
Elixir limbaj de programare | |
---|---|
Logo-ul oficial al limbajului de programare Elixir. | |
Autor | José Valim , colaboratori pe GitHub |
Data de origine | 24 mai 2012 | (v0.5.0)
Ultima versiune | 1.9.0 [1] (24 iunie 2019 ) |
Utilizare | scripting , scop general |
Paradigme | concurente , funcționale |
Tastare | dinamic , puternic |
Specificații lingvistice | Specificația limbajului Elixir |
Extensii comune | ex și ex |
Influențată de | Erlang , Ruby , Clojure |
Implementare referință | |
Licență | Licență Apache 2.0 [2] |
Site-ul web | elixir-lang.org/ |
Elixir este un limbaj de programare funcțional și concurent al cărui cod compilat este interpretat de mașina virtuală Erlang (BEAM). Acesta îl folosește cu precizie pentru a oferi aplicații distribuite, tolerante la erori și (aproape) în timp real, dar și pentru a-l extinde către suportul meta-programării prin macrocomenzi, polimorfism și protocoale. [3]
Istorie
Creatorul limbajului de programare Elixir este José Valim . Limbajul de programare este un proiect de cercetare și dezvoltare al Plataformatec . Scopul este de a permite o mai mare extensibilitate și productivitate a Erlang VM , păstrând în același timp compatibilitatea cu instrumentele și ecosistemul Erlang în sine. [4]
Nașterea Elixir a fost motivată de faptul că capacitatea de procesare a procesoarelor este în continuă creștere, ceea ce a dat naștere la mai multe procesoare de bază și că ecosistemul Erlang , inclusiv mașina sa virtuală , profită din plin de acest tip de multi-procesor arhitectură, astfel încât un program care rulează să poată fi împărțit într-o serie de microprocese paralele. Elixir s-a născut pentru a depăși deficiențele lui Erlang în unele paradigme și pentru a pune la dispoziție unele abordări de programare neadmise de Erlang , cum ar fi meta-programarea și polimorfismul .
Aspecte tehnice
Elixir are un sistem de gestionare a pachetelor , macrocomenzi , un instrument ușor de utilizat care automatizează dezvoltarea și un sistem de codificare Unicode . [5] Deoarece Elixir este un limbaj care rulează pe mașina virtuală Erlang , acesta câștigă toate avantajele oferite de maturitatea VM și poate utiliza bibliotecile Erlang existente, fără a penaliza performanța. [5] Spre deosebire de Erlang , Elixir are operatorul de țevi . [5] Sintaxa lui Elixir, spre deosebire de cea a lui Erlang , este mai familiară dezvoltatorilor Ruby . [5]
Caracteristici
- Un limbaj care este compilat în bytecode pentru mașina virtuală Erlang (BEAM) [3]
- Totul este o expresie [3]
- Integrare perfectă cu limbajul de programare Erlang: fără penalizări pentru apelurile de funcții Erlang (și invers)
- Meta-programare care implică manipularea directă a arborelui analizat [3]
- Suport de documentare prin Python- stil docstring ; limbajul de markup folosit ca standard de facto este markdown [3]
- Polimorfism printr-un mecanism numit protocoale . Enumerabil este un exemplu de protocol și este inspirat de reductoarele Clojure [6] La fel ca în cazul Clojure , protocoalele oferă un mecanism de legătură dinamică numit dispecer dinamic . Cu toate acestea, acest lucru nu trebuie confundat cu conexiunea multiplă, numită și expediere multiplă .
- Arhitectura nimic partajat prin schimbul de mesaje ( model de actor )
- Accent pe recursivitate și funcții de ordin superior, mai degrabă decât efecte secundare și bucle.
- Colecții leneșe și asincrone cu fluxuri
- Potrivirea modelului [3]
- Suport pentru șiruri Unicode și UTF-8
Exemple
Următoarele exemple pot fi rulate într-un shell IEx (înseamnă Interactive Elixir) sau pot fi salvate într-un fișier și rulate de pe linia de comandă tastând elixir <filename>
.
Hello world - Tipărește șirul de caractere Hello world la ieșirea standard:
IO. pune „Hello World!”
Operații pe liste - Dintre elementele care aparțin listei originale, sunt selectate doar cele impare (obținute în cazul în care restul împărțirii lor la 2 este egal cu 1) și se creează o listă care conține aceste elemente pătrate.
pentru n <- [ 1 , 2 , 3 , 4 , 5 ], rem ( n , 2 ) == 1 , faceți : n * n
# => [1, 9, 25]
Potrivire de model
[ 1 , a ] = [ 1 , 2 ]
# 'a' este acum egal cu 2
{ : ok , [ hello : a ]} = { : ok , [ hello : "world" ]}
# „a” este acum egal cu „lume”
Formulare
defmodule Fun do
def fib ( 0 ), faceți : 0
def fib ( 1 ), faceți : 1
def fib ( n ) do
fib ( n - 2 ) + fib ( n - 1 )
Sfârșit
Sfârșit
Invocare cod nativ Erlang - Exemplu de utilizare a unei biblioteci Erlang (biblioteca este inet_res ); în momentul scrierii acestui paragraf, adresa IP a gazdei indicată de URL - ul furnizat ca parametru de intrare pentru metodă (cea a secțiunii poloneze a Wikipedia ) era 91.198.174.192
: inet_res . căutare ( „pl.wikipedia.org” ,: Held, a)
# => [{91, 198, 174, 192}]
Proiecte Elixir remarcabile
- Mix este un instrument de automatizare a dezvoltării care oferă sarcini pentru crearea, construirea și testarea proiectelor Elixir, gestionarea dependențelor sale și multe altele.
- Phoenix este un cadru de dezvoltare web scris în Elixir care implementează server-side model-view-controller (MVC) model .
Notă
- ^ https://github.com/elixir-lang/elixir/releases/tag/v1.9.0
- ^ https://github.com/elixir-lang/elixir/blob/master/LICENSE
- ^ a b c d e f José Valim, Elixir , pe site-ul oficial Elixir , José Valim, 24 aprilie 2012. Accesat la 24 aprilie 2012 (arhivat din original la 18 aprilie 2012) .
- ^ Elixir - O abordare modernă a programării pentru Erlang VM , pe vimeo.com . Adus la 17 februarie 2013 .
- ^ a b c d Lau Taarnskov, Elixir - Următorul mare limbaj pentru web , pe Creative Deletion , Lau Taarnskov, 19 aprilie 2015. Adus 19 aprilie 2015 (arhivat din original la 20 aprilie 2015) .
- ^ Peter Minten, Elixir's Enumerable , pe Un cazan de pietre albe și negre, blogul personal al lui Peter Minten, Peter Minten, 7 septembrie 2014. Accesat la 7 septembrie 2014 (arhivat din original la 6 septembrie 2014) .
Bibliografie
- ( EN ) Wolfgang Loder, Erlang and Elixir for Imperative Programmers , prima ediție, capitolul 16: „Conceptele de structurare a codurilor”, secțiunea „Model de actor”, Leanpub, 12 mai 2015, p. 53.
- ( RO ) Dave Thomas, Elixir de programare :: Funcțional> Concurent> Pragmatic> Distracție , prima ediție, The Pragmatic Bookshelf, 2014, p. 280, ISBN 978-1937785581 .
Alte proiecte
- Wikimedia Commons conține imagini sau alte fișiere despre Elixir
linkuri externe
- ( RO ) Site oficial , la elixir-lang.org .
- ( EN ) Cod sursă publicat pe GitHub , la github.com .
- ( EN ) Elixir - O abordare modernă a programării pentru prezentarea video Erlang VM , su vimeo.com .
Controlul autorității | LCCN ( EN ) sh2015000669 |
---|