Een overzicht van Erlang met voorbeelden

Erlang is een functionele programmeertaal die door Ericsson is ontwikkeld voor gebruik in telecomtoepassingen. Omdat ze vonden dat het onaanvaardbaar is dat een telecomsysteem aanzienlijke downtime heeft, is Erlang gebouwd om (onder andere):

  • gedistribueerd en fouttolerant (een stuk falende software of hardware mag het systeem niet naar beneden halen)
  • gelijktijdig (het kan vele processen voortbrengen, die elk een klein en goed gedefinieerd stuk werk uitvoeren, en geïsoleerd van elkaar maar in staat zijn om via berichten te communiceren)
  • hot-swappable (code kan in het systeem worden gewisseld terwijl het draait, wat leidt tot hoge beschikbaarheid en minimale systeemuitval)

Syntaxis

Erlang maakt veel gebruik van recursie . Aangezien gegevens onveranderlijk zijn in Erlang, is het gebruik van whileen forloops (waarbij een variabele zijn waarde moet blijven veranderen) niet toegestaan.

Hier is een voorbeeld van recursie, dat laat zien hoe een functie herhaaldelijk de eerste letter van de voorkant van een naam verwijdert en deze afdrukt, en pas stopt wanneer de laatste letter is aangetroffen.

-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).

Uitgang:

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

Er wordt ook veel nadruk gelegd op het matchen van patronen , waardoor er vaak geen ifstructuur of caseverklaring nodig is. In het volgende voorbeeld zijn er twee overeenkomsten voor specifieke namen, gevolgd door een catch-all voor andere namen.

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

Uitgang:

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

Erlang Term Opslag

Erlang Term Storage, normaal afgekort als ETS, is een in het geheugen ingebouwde database in OTP. Het is toegankelijk binnen Elixir en is een krachtig alternatief voor oplossingen zoals Redis wanneer uw applicatie op één knooppunt draait.

Snelle start

Om een ​​ETS-tabel te maken, moet u eerst een tabel initialiseren tableName = :ets.new(:table_otp_name, []). Nadat u een tabel heeft geïnitialiseerd, kunt u: gegevens invoegen, waarden opzoeken, gegevens verwijderen en meer.

ETS-demo in 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 -->

Persistentie

ETS-tabellen zijn niet persistent en worden vernietigd zodra het proces dat er eigenaar van is, wordt beëindigd. Als u gegevens permanent wilt opslaan, wordt een traditionele database en / of bestandsgebaseerde opslag aanbevolen.

Gebruik gevallen

ETS-tabellen worden gewoonlijk gebruikt voor het cachen van gegevens in de toepassing, bijvoorbeeld accountgegevens die uit een database worden opgehaald, kunnen worden opgeslagen in een ETS-tabel om het aantal zoekopdrachten naar de database te verminderen. Een andere use case is voor het beperken van het gebruik van functies in een webtoepassing - ETS's hoge lees- en schrijfsnelheid maakt het hier geweldig voor. ETS-tabellen zijn een krachtig hulpmiddel voor het ontwikkelen van zeer gelijktijdige webtoepassingen tegen de laagst mogelijke hardwarekosten.

Probeer het

Er zijn websites waarop u kunt proberen Erlang-opdrachten uit te voeren zonder iets lokaals te hoeven installeren, zoals deze:

  • Probeer het eens! (een praktische tutorial)
  • Tutorials Punt Codering Grond

Als je het op je (of een virtuele) machine wilt installeren, kun je installatiebestanden vinden op Erlang.org of op Erlang Solutions.

Meer informatie:

  • Over Erlang
  • Erlang (programmeertaal)