Örneklerle Erlang'a Genel Bakış

Erlang, Ericsson tarafından telekom uygulamalarında kullanılmak üzere geliştirilmiş işlevsel bir programlama dilidir. Bir telekom sisteminin önemli bir kesinti süresine sahip olmasının kabul edilemez olduğunu düşündükleri için, Erlang (diğer şeylerin yanı sıra) şu şekilde tasarlandı:

  • dağıtılmış ve hataya dayanıklı (arızalı bir yazılım veya donanım parçası sistemi çökertmemelidir)
  • eşzamanlı (her biri küçük ve iyi tanımlanmış bir iş parçasını yürüten ve birbirinden izole edilmiş ancak mesajlaşma yoluyla iletişim kurabilen birçok işlemi ortaya çıkarabilir)
  • çalışırken değiştirilebilir (kod, çalışırken sisteme değiştirilebilir, bu da yüksek kullanılabilirlik ve minimum sistem kapalı kalma süresine yol açar)

Sözdizimi

Erlang, yoğun özyineleme kullanır . Veriler Erlang'da değişmez olduğundan, whileve fordöngülerinin (bir değişkenin değerini değiştirmeye devam etmesi gerektiğinde) kullanımına izin verilmez.

İşte bir özyineleme örneği, bir işlevin bir ismin önündeki ilk harfi tekrar tekrar nasıl çıkardığını ve yazdırdığını, ancak yalnızca son harfle karşılaşıldığında durduğunu gösteren bir örnek.

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

Çıktı:

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

Bir yapıya veya ifadeye olan ihtiyacı sıklıkla ortadan kaldıran desen eşleştirmeye de büyük bir vurgu vardır . Aşağıdaki örnekte, belirli adlar için iki eşleşme, ardından diğer adlar için tümünü yakalama vardır.ifcase

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

Çıktı:

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

Erlang Terim Depolama

Normalde ETS olarak kısaltılan Erlang Term Storage, OTP'de yerleşik bir bellek içi veritabanıdır. Elixir'den erişilebilir ve uygulamanız tek bir düğümde çalıştığında Redis gibi çözümlere güçlü bir alternatiftir.

Hızlı başlangıç

Bir ETS tablosu oluşturmak için önce bir tabloyu başlatmanız gerekir, bir tabloyu başlattıktan tableName = :ets.new(:table_otp_name, [])sonra şunları yapabilirsiniz: veri ekleme, arama değerleri, verileri silme ve daha fazlası.

IEX'te ETS Demosu

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

Kalıcılık

ETS Tabloları kalıcı değildir ve sahibi olan süreç sona erdiğinde yok edilir. Verileri kalıcı olarak depolamak istiyorsanız, geleneksel bir veritabanı ve / veya dosya tabanlı depolama önerilir.

Kullanım durumları

ETS Tabloları, uygulamada verileri önbelleğe almak için yaygın olarak kullanılır, örneğin bir veritabanından alınan hesap verileri, veritabanına yönelik sorguların miktarını azaltmak için bir ETS Tablosunda depolanabilir. Diğer bir kullanım durumu, bir web uygulamasındaki özelliklerin kullanım oranını sınırlandırmasıdır - ETS'nin hızlı okuma ve yazma hızı, bunu bunun için harika kılar. ETS Tabloları, mümkün olan en düşük donanım maliyetiyle yüksek düzeyde eşzamanlı web uygulamaları geliştirmek için güçlü bir araçtır.

Denemek

Erlang komutlarını yerel olarak herhangi bir şey yüklemek zorunda kalmadan çalıştırmayı deneyebileceğiniz web siteleri vardır, örneğin:

  • Bir şans ver! (uygulamalı bir eğitim)
  • TutorialsPoint CodingGround

Bunu (veya sanal) makinenize kurmak isterseniz, kurulum dosyalarını Erlang.org'da veya Erlang Solutions'da bulabilirsiniz.

Daha fazla bilgi:

  • Erlang hakkında
  • Erlang (programlama dili)