Kasutaja:Paulliibert/Elixir

Allikas: Vikipeedia

Elixir on dünaamiline, funktsionaalne programmeerimiskeel, mis on üles ehitatud Erlangi printsiipidel. Elixir on arendatud välja, et luua kergesti hallatavaid ja skaleeritavaid rakendusi.[1] Elixir ise kompileerib baitkoodi, mis on ühilduv Erlangi virtuaalmasinaga (BEAM) ning see tagab 100% koostalitlusvõime Erlangiga.[2]

Erlang on ise kui madala latentsusega, hajutatud ja suure rikketaluvusega süsteem. Need omadused erakordselt olulised, kui on tegemist rakendustega, kus fundamentaalne teenus peab olema kättesaadav kõigile. [3]

Ajalugu[muuda | muuda lähteteksti]

Elixiri arendus hakkas pihta 2011. aastal, kui programmeerimiskeele looja José Valim üritas parandada Railsi võimekust. Rails ei pakkunud vastavat lahendust probleemile ning José hakkas vaatama teisi tehnoloogiaid. Ta valis välja Erlang virtuaalmasina. Tema eesmärk oli rakendada suuremat paindlikust ja produktiivsust Erlangi virtuaalmasinas ning säilitada Erlangi ökosüsteem ning sellest arenes välja uus programmeerimiskeel Elixir.[4][5]

Platvormi omadused[muuda | muuda lähteteksti]

Skaleeritavus[muuda | muuda lähteteksti]

Kogu Elixiri kood jookseb kergekaaluliste lõimetel, mida nimetakse protsessideks. Need on omavahel eraldatud ja peavad suhtlust üksteise vahel:

current_process = self()
# Loome Elixir'i protsessi
spawn_link(fn ->
  send current_process, {:msg, "tere maailm"} #saadame sõnumi tere maailm
end)

# Ootame kuni sõnum on saabunud
receive do
  {:msg, contents} -> IO.puts contents #prindib välja tere maailm
end

Eraldatus lubab protsesse eemaldada sõltumatult, millega vähenevad süsteemisisesed pausid ja kasutakse masina ressursse võimalikult efektiivselt. Protsessid on võimelised suhtlema erinevate masinate protsessidega üle võrgu. Arendajal on võimalik töö mitme sõlme vahel ära jagada. See loob aluse hajussüsteemi ehitamiseks.[1]

Veataluvus[muuda | muuda lähteteksti]

Esimest tüüpi viga[muuda | muuda lähteteksti]

Esimest tüüpi vead on seotud probleemidega, mis tulevad väljaspoolt programmi. Need tekivad siis, kui kolmanda osapoole teenuse või süsteemiressurssi vahel puudub ühendus või võtab liiga kaua aega. Erlangi virtuaalmasin on vastutav kommunikatsiooni eest nii serveri ja sõlmede vahel. Sõlme informeeritakse sellest, kui ühendus puudub teise sõlme vahel.[3]

Teist tüüpi viga[muuda | muuda lähteteksti]

Teist tüüpi vead on seotud andmetega. Need tekivad siis, kui rakenduse funktsioon teeb näiteks matemaatilisi tehteid ja saab sisendiks sõne numbri asemel, siis selle tõttu rakendus hangub. Programm on tõrketaluv, kui süsteem suudab ennast ise ravida loogigavigadest, vale sisendi ja sisemiste vigade eest. Elixir on kompileeritud keel, kus vead koodis takistavad rakenduse käivitumist. See tagab, et rakendus oleks vähemalt korrektne käivitumisel. Seda nimetakse järelvalve printsiipiks ja seotakse protsessi eralduvusega, kus üks moodul on võimeline jooksutama isoleerituid protsesse. See tagab, et vead ühes moodulis ei jooksutaks tervet rakendust kokku ja seda moodulit saab taaskäivitada ka eraldi.[3]

Keele omadused[muuda | muuda lähteteksti]

Funktsionaalne programmeerimine[muuda | muuda lähteteksti]

Funktsionaalne programmeerimine edendab programmeerimise stiili arendajas. See aitab arendajal kirjutada koodi, mis on lühem, kiirem ja hallatavam. Mustrisobitus tagab arendajale üleliigsete andmete likvideerimise ja ligipääsu andmetele:

%Kasutaja{nimi: nimi, vanus: vanus} = Kasutaja.get("John Doe")
nimi #=> tagastab "John Doe"

Valvurid koos mustrisobitusega lubab arendajal sobitada ja olla kindel, et rakendus töötab väga spetsiifiliste tingimuste korral:

def juhi(%Kasutaja{vanus: vanus}) when vanus>= 16 do
 #when on valvur, mis teeb seda, et funktsioon käivitakse ainult siis, kui juht on vanem kui 16.
end

juhi(Kasutaja.get("John Doe"))
#=> ebaõnnestub

Elixir tugineb tugevalt nendel omadustel, et arendaja tarkvara töötaks kindlatel piirangutel.[1]

Viited[muuda | muuda lähteteksti]

  1. 1,0 1,1 1,2 "elixir homepage". Vaadatud 05.11.2018.
  2. "Why Elixir?". Vaadatud 05.11.2018.
  3. 3,0 3,1 3,2 "Elixir: A Big-Picture Programming Language". Vaadatud 05.11.2018.
  4. "José Valim | ElixirConf EU 2017 Keynote". Vaadatud 05.11.2018.
  5. "An Interview with Elixir Creator José Valim". Vaadatud 05.11.2018.