En oversigt over Erlang med eksempler

Erlang er et funktionelt programmeringssprog udviklet af Ericsson til brug i telekomapplikationer. Fordi de følte, at det er uacceptabelt, at et telekommunikationssystem har nogen betydelig nedetid, blev Erlang bygget til at være (blandt andet):

  • distribueret og fejltolerant (et stykke svigtende software eller hardware bør ikke bringe systemet ned)
  • samtidig (det kan gyde mange processer, der hver udfører et lille og veldefineret stykke arbejde og isoleret fra hinanden, men i stand til at kommunikere via messaging)
  • hot-swappable (kode kan byttes ind i systemet, mens det kører, hvilket fører til høj tilgængelighed og minimal nedetid på systemet)

Syntaks

Erlang bruger tungt rekursion . Da data er uforanderlige i Erlang, er brug af whileog forsløjfer (hvor en variabel stadig skal ændre sin værdi) ikke tilladt.

Her er et eksempel på rekursion, der viser, hvordan en funktion gentager det første bogstav fra forsiden af ​​et navn og udskriver det, og stopper kun, når det sidste bogstav er stødt.

-module(name). -export([print_name/1]). print_name([RemainingLetter | []]) -> io:format("~c~n", [RemainingLetter]); print_name([FirstLetter | RestOfName]) -> io:format("~c~n", [FirstLetter]), print_name(RestOfName).

Produktion:

> name:print_name("Mike"). M i k e ok

Der lægges også stor vægt på mønstermatchning , hvilket ofte eliminerer behovet for en ifstruktur eller caseudsagn. I det følgende eksempel er der to matches for bestemte navne efterfulgt af en catch-all for andre navne.

-module(greeting). -export([say_hello/1]). say_hello("Mary") -> "Welcome back Mary!"; say_hello("Tom") -> "Howdy Tom."; say_hello(Name) -> "Hello " ++ Name ++ ".".

Produktion:

> greeting:say_hello("Mary"). "Welcome back Mary!" > greeting:say_hello("Tom"). "Howdy Tom." > greeting:say_hello("Beth"). "Hello Beth."

Erlang Term Storage

Erlang Term Storage, normalt forkortet ETS, er en in-memory database indbygget i OTP. Det er tilgængeligt inden for Elixir og er et effektivt alternativ til løsninger som Redis, når din applikation kører på en enkelt node.

Hurtig start

For at oprette en ETS-tabel skal du først initialisere en tabel tableName = :ets.new(:table_otp_name, []), når du først har initialiseret en tabel, kan du: indsætte data, opslagsværdier, slette data og mere.

ETS-demo i IEX

iex(1)> myETSTable = :ets.new(:my_ets_table, []) #Reference iex(2)> :ets.insert(myETSTable, {"favoriteWebSite", "freeCodeCamp"}) true iex(3)> :ets.insert(myETSTable, {"favoriteProgrammingLanguage", "Elixir"}) true iex(4)> :ets.i(myETSTable)  {<>,<>}  {<>,<>} EOT (q)uit (p)Digits (k)ill /Regexp -->

Udholdenhed

ETS-tabeller er ikke vedvarende og ødelægges, når processen, der ejer den, ophører. Hvis du vil gemme data vedvarende, anbefales en traditionel database og / eller filbaseret lagring.

Brug sager

ETS-tabeller bruges almindeligvis til caching af data i applikationen, for eksempel kan kontodata hentet fra en database gemmes i en ETS-tabel for at reducere antallet af forespørgsler til databasen. En anden brugssag er til hastighedsbegrænsende brug af funktioner i en webapplikation - ETSs hurtige læse- og skrivehastighed gør det fantastisk til dette. ETS-tabeller er et kraftfuldt værktøj til udvikling af meget samtidige webapplikationer til de lavest mulige hardwarepriser.

Prøve det

Der er websteder, hvor du kan prøve at køre Erlang-kommandoer uden at skulle installere noget lokalt, som disse:

  • Prøv det! (en praktisk vejledning)
  • TutorialsPoint CodingGround

Hvis du vil installere det på din (eller en virtuel) maskine, kan du finde installationsfiler på Erlang.org eller på Erlang Solutions.

Mere information:

  • Om Erlang
  • Erlang (programmeringssprog)