Elixir
- Okunuşu
- iliksır
Kısaca
Elixir, Erlang sanal makinesinde çalışan, hataya dayanıklı ve yüksek eşzamanlılıklı sistemler kurmasıyla bilinen, dinamik ve fonksiyonel bir dildir.
Elixir nedir?
Elixir, José Valim tarafından geliştirilen ve ilk kez 2012'de yayımlanan, 1.0 sürümüne 2014'te ulaşan, genel amaçlı ve fonksiyonel bir programlama dilidir. Erlang için geliştirilmiş sanal makine olan BEAM üzerinde çalışır; böylece yıllarca ayakta kalması gereken sistemler için onlarca yıllık mühendislik birikimini devralır. Elixir; daha dostane bir sözdizimi, üst programlama için makrolar ve mix derleme aracı ile Hex paket yöneticisi gibi modern araçlar ekler.
Elixir kodu, işletim sistemi tarafından değil BEAM tarafından yönetilen küçük, yalıtılmış birimler olan hafif süreçlerde (processes) çalışır ve tek bir sunucu bunlardan milyonlarcasını çalıştırabilir. Süreçler bellek paylaşmaz ve yalnızca mesaj göndererek haberleşir; denetçiler (supervisors) onları izler ve çöken olursa yeniden başlatır. Bu yaklaşım "çökmesine izin ver" (let it crash) olarak bilinir. Elixir dinamik tiplidir ve son sürümler derleyiciye kademeli bir tip denetleyicisi eklemeye başladı.
Elixir'de veri değiştirilemezdir ve boru operatörü |> bir fonksiyonun sonucunu bir sonrakinin ilk argümanı olarak geçirir; böylece bir dönüşüm tıpkı bir tarif gibi yukarıdan aşağıya okunur. Elixir, çoğunlukla Phoenix çatısıyla web uygulamalarında ve API'lerde, ayrıca gerçek zamanlı sohbet ve bildirim sistemlerinde, gömülü cihazlarda ve veri hatlarında kullanılır.
Elixir, Erlang ile yakından ilişkilidir ve ikisi sıkça karıştırılır. İkisi de aynı BEAM sanal makinesi için bayt koda derlenir ve birbirlerinin kodunu doğrudan çağırabilir; bu yüzden Elixir projeleri denetim ve dağıtım için Erlang'ın OTP kütüphanelerini kullanır. Fark çoğunlukla yüzeydedir: Elixir Ruby'den esinlenen bir sözdizimine, makrolara ve daha yeni araçlara sahipken Erlang, Prolog'dan esinlenen bir sözdizimine ve telekomünikasyonda daha uzun bir geçmişe sahiptir.
Önemli noktalar
- Elixir, Erlang sanal makinesi BEAM üzerinde çalışır ve Erlang koduyla birlikte çalışabilir.
- Hafif süreçler ve mesajlaşma, devasa eşzamanlılığı pratik hale getirir.
- Denetçiler başarısız olan süreçleri yeniden başlatır; bu da sistemlerin kendiliğinden toparlanmasına yardımcı olur.
- Veri değiştirilemezdir ve boru operatörü
|>dönüşümleri zincirler. - Çoğunlukla Phoenix çatısıyla, gerçek zamanlı web uygulamaları için popülerdir.
Örnek
# Pipe a string through a series of transformations
"the quick brown fox jumps over the lazy dog"
|> String.split()
|> Enum.map(&String.length/1)
|> Enum.sum()
|> IO.puts() # 35
# Spawn a lightweight process and send it a message
pid = spawn(fn ->
receive do
{:greet, name} -> IO.puts("Hello, #{name}!")
end
end)
send(pid, {:greet, "Ada"})Sık sorulan sorular
Elixir ile Erlang arasındaki fark nedir?
İkisi de aynı BEAM sanal makinesinde çalışır ve OTP kütüphanelerini paylaşır; dolayısıyla aynı eşzamanlılık ve hata toleransı modeline sahiptir. Elixir Ruby benzeri bir sözdizimi, makrolar ve modern araçlar sunar; Erlang ise Prolog'dan esinlenen kendi sözdizimiyle daha eski olan dildir.
Elixir ne için kullanılır?
Elixir; web arka uçlarında, sohbet ve canlı panolar gibi gerçek zamanlı özelliklerde, mesajlaşma sistemlerinde, gömülü cihazlarda ve veri işleme hatlarında, yani yüksek eşzamanlılığın ve kesintisiz çalışmanın önemli olduğu her yerde kullanılır.
Elixir statik tipli mi?
Elixir dinamik tiplidir; ancak 2024'ten beri derleyicisi, açıklama gerektirmeden bazı tip hatalarını yakalayan kademeli, küme kuramı tabanlı bir tip sistemi kazanıyor. Geliştiriciler ayrıca typespec yazabilir ve ayrı analiz araçları çalıştırabilir.
İlgili sayfalar
- ErlangProgramlama Dilleri, s. 10Erlang, 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ı.
- Fonksiyonel programlamaProgramlamanın Temelleri, s. 21Fonksiyonel programlama, paylaşılan verileri değiştirmeyen saf fonksiyonlarla yazılım kurma stilidir; kodu daha öngörülebilir ve test etmesi kolay yapar.
- EşzamanlılıkProgramlamanın Temelleri, s. 19Eşzamanlılık, bir programın birden çok görevde örtüşen zaman dilimlerinde ilerleyebilme yeteneğidir; örneğin birçok kullanıcıya aynı anda hizmet vermek gibi.
- DeğişmezlikProgramlamanın Temelleri, s. 11Değişmezlik, bir değerin oluşturulduktan sonra değiştirilememesi demektir; her güncelleme, orijinali yerinde değiştirmek yerine yeni bir değer üretir.
- Hata ToleransıYazılım Mimarisi, s. 17Hata toleransı, bir sistemin bazı donanım ya da yazılım bileşenleri arızalandığında, belki azalmış kapasiteyle de olsa doğru çalışmayı sürdürebilmesidir.
- RubyProgramlama Dilleri, s. 28Ruby, geliştirici mutluluğu için tasarlanmış, okunaklı sözdizimi ve Ruby on Rails web çatısıyla tanınan, dinamik ve nesne yönelimli bir dildir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin