de Nikolas O’Donnell

Introducerea mea în Elixir: modul în care învățarea unui alt limbaj de programare vă poate face un dezvoltator mai bun

Introducerea mea in Elixir modul in care invatarea unui alt
Karen Roe: https://www.flickr.com/photos/karen_roe/7375634372

Am participat la ElixirConf EU la Varșovia la începutul acestui an. A fost de fapt prima mea conferință de programare. Colegul meu ținea o discuție despre Elixir și Phoenix numită „Phoenix și lumea de mâine”.

Acum, experiența mea este în JavaScript, dar compania mea este obsedată de Elixir. După ce am luat o gură din compania kool-aid și am văzut ce poate face – sunt destul de bine convertit.

JavaScript va fi întotdeauna prima mea limbă și deține un loc special în inima mea. Încă folosesc, învăț și fac parte din comunitatea JavaScript și React vibrantă și în creștere.

Deși m-am familiarizat cu Elixir pentru muncă, am ajuns să văd o mare valoare în învățarea unui alt limbaj de programare.

Este o experiență similară cu învățarea unei noi limbi vorbite. Ești împins în afara zonei tale de confort. Trebuie să înțelegeți și să raționați în alt mod, chiar și dintr-o altă perspectivă.

ad-banner

Mai mult, trebuie să reconstruiți de la primele principii – care, la rândul lor, pot avea avantajele adăugate de a încălca ipotezele preconcepute și limitările.

Acesta este un lucru sănătos de făcut și în cele din urmă ar trebui să fim agnostici de limbă, bibliotecă și cadru.

Sarcina noastră nu este de fapt să scriem cod și cu siguranță să nu scriem o „limbă” specifică a codului.

Mai degrabă este pentru a rezolva problemele companiilor, clienților și clienților noștri.

A avea la dispoziție alte limbaje, cadre și paradigme de codificare atunci când rezolvați o problemă vă mărește șansele de a o rezolva într-un mod mai bun. În plus, vă face un programator mai bine rotunjit și un membru valoros al echipei.

Explorând Elixir în continuare

Elixir este un limbaj de meta-programare relativ nou creat de Jose Valim și lansat în 2012.

Partea „meta” nu înseamnă doar că eu încerc să fiu „șold”, „întâmplător” și „jos cu copiii mișto”. Oferă o informație suplimentară a ceea ce este Elixir.

Pentru a explica mai multe despre Elixir, cred că trebuie să vorbesc mai întâi puțin despre Erlang. Acest lucru se datorează faptului că Elixir este construit deasupra Erlang (de aici și partea „meta”). Funcționează pe mașina virtuală Erlang, numită BEAM din cauza unor acronime pe care ar trebui să le aflu DuckDuckGo.

Erlang a fost creat de Joe Armstrong, Robert Virding și Mike Williams, în timp ce lucrau pentru Ericsson la mijlocul anilor ’80.

Ericsson funcționează în spațiul de telecomunicații. Au avut problema de a face software-ul robust, tolerant la erori și asincron – deci apelurile nu au renunțat!

Sarcinați cu această misiune, acești ingineri l-au creat pe Erlang. Inginerul danez Agner Krarup Erlang este adesea citat ca omonim … deși este, de asemenea, o alegere destul de convenabilă pentru un Ericsson Language (sunt pe tine ಠ_ಠ).

Înapoi la Elixir. Fiind un limbaj funcțional, este foarte frumos să păstrezi toate lucrurile ordonate, organizate și lizibile.

Această funcție îndeplinește acea sarcină specifică. Acest modul îndeplinește acest set de funcții. Niciunul dintre ei nu trebuie să știe cu adevărat ce face celălalt. Acest model de design modular facilitează păstrarea unei baze de cod curate.

Este considerat de fapt un limbaj multi-paradigmatic, deoarece este funcțional, concurent, distribuit și orientat spre proces. Poveste grozavă – dar ce înseamnă asta?

  • Programare funcțională folosește funcții (în mod ideal „funcții pure” în care intrările și ieșirile sunt declarate clar) fără valori ascunse care intră sau ies pentru a construi programul. Scopul este de a elimina efectele secundare sau rezultatele neintenționate din cod.
  • Concurență permite unui program să execute mai multe calcule în același timp. Nu trebuie să aștepte să se termine un lucru înainte de a începe altul. Aceasta este denumită „blocare”, deoarece execuția următorului articol este blocată pentru a rula până la finalizarea elementului anterior.
  • Distribuit descrie modul în care se schimbă informațiile. În sistemele distribuite, problemele sunt împărțite în sarcini mai mici. Acestea sunt completate prin schimbul de mesaje. Deoarece aceste mesaje pot vorbi între ele prin intermediul mașinilor / rețelelor, acestea sunt distribuite.
  • Orientat spre proces reflectă, de asemenea, modul în care problemele sunt împărțite în sarcini sau procese mai mici și își propune să mențină structurile de date separate de procesele care interacționează cu acestea. Motivul pentru care dorim să facem acest lucru este că permite programatorilor să fie mai asigurați de obținerea rezultatului pe care îl așteaptă.

Așa arată codul Elixir:

Introducerea mea in Elixir modul in care invatarea unui alt
https://marketplace.visualstudio.com/items?itemName=mjmcloug.vscode-elixir

Curățați corect și destul de lizibil – luați notă de următorul model:

defmodule <Module_name> do

 def <something> do
  
  <the things to do>
  |> {you can use the pipe operator (|>) to parse..}
  |> {the result from a function..}
  |> {as the fist argument to the next function..}
  |> {creating a 'pipeline' with a final output..} 
  |> {of the entire cross function calls!}
  
 end
 
end

Dar unde este toată sintaxa suplimentară?

Ei bine, fiind un limbaj nou, are norocul câștigat din spate. Limba împrumută unele dintre cele mai bune aspecte ale altor limbi. După cum sa menționat, este construit pe Erlang și este de fapt compatibil – ceea ce înseamnă că puteți utiliza sintaxa Erlang în codul Elixir.

De asemenea, utilizează sintaxa curată și structura codului Ruby – creatorul său provenind dintr-un fundal Ruby.

Phoenix

Phoenix este un framework web construit pentru Elixir de Chris McCord. Vă puteți gândi la asta ca la o modalitate de a demara un proiect. Este modular (datorită Elixir). De asemenea, este foarte rapid (datorită lui Erlang) și, în cele din urmă, foarte puternic.

Îl puteți folosi ca strat API între baza de date și front-end. De asemenea, puteți utiliza cu ușurință șabloanele HTML și CSS care vin cu Phoenix. Puteți utiliza Brunch JS pentru a injecta aceste părți în site-ul / aplicația dvs.

Alternativ, puteți utiliza, de asemenea, un cadru frontal, cum ar fi Ember sau React, pentru a face același lucru – făcându-l o abordare „cea mai bună din ambele lumi”.

Aceasta este discuția pe care colegul meu Ley a susținut-o la ElixirConf EU, pe care am menționat-o mai devreme. Merită un ceas, deoarece se uită la rolul pe care Phoenix îl poate juca în următorii miliarde de utilizatori care accesează internetul pe dispozitive <3G:

Deci, dacă ești intrigat, de ce să nu iei o înghițitură de Elixir? Cred că s-ar putea să te agăți.

Deși, în orice caz, luați o înghițitură de ceva nou. Ieșiți din zona de confort de programare și provocați-vă să explorați un alt limbaj, perspectivă și mod de gândire. Care este cel mai rău care s-ar putea întâmpla …?

1611522067 547 Introducerea mea in Elixir modul in care invatarea unui alt
https://gfycat.com/gifs/detail/fewalarmingcaiman