Ana içeriğe geç

Erlang

Güncellendi 2 dk okuma

Bu sayfayı paylaşın

Bağlantıyı gönderin, tanımı bağlantısıyla birlikte alıntılayın ya da kendi sitenizde bir kart olarak gösterin.

https://softwaredictionary.org/tr/terimler/erlang

Kısaca

Erlang, Ericsson'da telekom santralleri için geliştirilen fonksiyonel bir dildir; devasa eşzamanlılık, hata toleransı ve kesintisiz çalışma için tasarlandı.

Erlang nedir?

Erlang, Ericsson'da 1986'da Joe Armstrong, Robert Virding ve Mike Williams tarafından, çok sayıda eşzamanlı aramayı yönetmesi ve yıllarca ayakta kalması gereken telefon santrallerini çalıştırmak için geliştirilen, fonksiyonel bir programlama dilidir. 1998'de açık kaynak olarak yayımlandı. Erlang neredeyse her zaman, güvenilir sunucular kurmak için bir kütüphaneler ve tasarım ilkeleri kümesi olan OTP (Open Telecom Platform) ile birlikte kullanılır; bu yüzden paketin tamamına genellikle Erlang/OTP denir.

Erlang programları, BEAM sanal makinesi üzerinde çalışan çok sayıda hafif süreçten (process) oluşur. Bu süreçler işletim sistemi iş parçacıklarından çok daha ucuzdur, bellek paylaşmaz ve yalnızca birbirlerine mesaj göndererek haberleşir. Her hatayı önlemeye çalışmak yerine Erlang, "çökmesine izin ver" (let it crash) felsefesini izler: denetçi (supervisor) süreçler işçileri izler ve başarısız olduklarında onları bilinen iyi bir durumda yeniden başlatır. Çalışma zamanı ayrıca, çalışan bir sistemde kodu durdurmadan değiştiren sıcak kod değişimini (hot code swapping) destekler.

Erlang; telekom sistemlerinde, mesajlaşma ve sohbet arka uçlarında, mesaj aracılarında (message broker), veritabanlarında ve yüksek erişilebilirlik gerektiren diğer servislerde kullanılır. Tasarımı iyi yönetilen bir çağrı merkezine benzer: birçok bağımsız operatör kendi çağrısıyla ilgilenir ve biri takılırsa bir süpervizör onu değiştirir; salonun geri kalanı bunu fark etmez. Veri değiştirilemezdir ve her değişken yalnızca bir kez bağlanabilir; bu da bütün bir eşzamanlılık hataları sınıfını ortadan kaldırır.

Erlang, aynı BEAM sanal makinesinde çalışan ve aynı OTP kütüphanelerini kullanan Elixir ile yakından bağlantılıdır; ikisi birbirlerinin kodunu doğrudan çağırabilir. Erlang'ın kendine ait, Prolog'dan esinlenen sıkışık bir sözdizimi vardır; ifadeler noktayla biter ve değişkenler büyük harfle başlar. Elixir ise Ruby benzeri bir sözdizimi, makrolar ve daha yeni araçlar sunar. Erlang'ın hafif süreçleri ayrıca işletim sistemi süreçlerinden farklıdır: sanal makine onları tamamen yönetir ve tek bir düğüm milyonlarcasını çalıştırabilir.

Önemli noktalar

  • Erlang, kesintisiz çalışması gereken telekom sistemleri için Ericsson'da geliştirildi.
  • Hafif süreçler mesajlaşarak haberleşir ve bellek paylaşmaz.
  • OTP denetçileri, "çökmesine izin ver" felsefesini izleyerek başarısız süreçleri yeniden başlatır.
  • Sıcak kod değişimi, çalışan bir sistemi durdurmadan güncellemeye olanak tanır.
  • Elixir aynı BEAM sanal makinesinde çalışır ve Erlang kütüphanelerini doğrudan kullanabilir.

Örnek

Erlang'da süreç başlatmak ve mesaj göndermekerlang
-module(greeter).
-export([start/0]).

% Spawn a lightweight process that waits for messages
start() ->
    Pid = spawn(fun loop/0),
    Pid ! {hello, "Ada"},
    Pid ! stop.

loop() ->
    receive
        {hello, Name} -> io:format("Hello, ~s!~n", [Name]), loop();
        stop -> ok
    end.

Sık sorulan sorular

Erlang ile Elixir arasındaki fark nedir?

İkisi de BEAM sanal makinesinde çalışır ve OTP'yi paylaşır; dolayısıyla aynı eşzamanlılık ve hata toleransı modeline sahiptir. Erlang kendi sözdizimiyle özgün dildir; Elixir ise Ruby'den esinlenen sözdizimi, makrolar ve modern araçlara sahip daha yeni bir dildir.

"Çökmesine izin ver" ne demek?

Olası her hata için savunmacı kod eklemek yerine Erlang geliştiricileri başarısız bir sürecin çökmesine izin verir ve onu temiz biçimde yeniden başlatmak için bir denetçiye güvenir. Süreçler yalıtılmış olduğundan bir çökme sistemin geri kalanını bozmaz.

Erlang hâlâ kullanılıyor mu?

Evet. Erlang/OTP her yıl büyük bir sürüm alır ve telekom ekipmanlarını, mesajlaşma platformlarını, mesaj aracılarını ve kesintisiz çalışmanın en çok önem taşıdığı diğer sistemleri çalıştırır.

İlgili sayfalar

Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin

Daha fazla

Ayarlar