Elixir'in Erlang'ın yapamayacağı veya tam tersi yapabileceği şeyler var mı?


103

Bu soru, bir Turing tam dilinin neler yapabileceğinin genel bağlamında değil, Beam VM ve sağladığı yetenekler bağlamındadır. Saf Erlang ya da Elixir öğrenmek için biraz zaman ayırmak istiyorum. İkisi arasındaki temel farkları anlıyorum ve makrolar, daha iyi sözdizimi ve bu gün dilin daha hızlı gelişmesi nedeniyle Elixir'e yöneliyorum.

Sorum şu: Elixir'i seçersem, içinde yapamayacağım ama Erlang'da yapabileceğim bir şeye rastlar mıyım? Elixir ile tüm OTP öğelerini, tüm Erlang kitaplıklarını, kod yeniden yüklemeyi vb. Kullanabilir miyim?

İkisi arasında birinin tercihini istemiyorum; dillerin olasılıkları hakkında gerçekler. Tercihen her ikisini de yapımda kullanan birinden.


20
@hedgehog bir görüş değil, gerçek. sorum şu: Elixir'i seçersem, yapamayacağım ama Erlang'da yapabileceğim bir şeye rastlar mıyım? Elixir ile tüm OTP öğelerini, tüm Erlang kitaplıklarını, kod yeniden yükleme vb. kullanabilir miyim? " ve cevap fikirlere değil gerçeklere dayanmaktadır.
Saša Šijak

4
Bu soru için cevap şu: Erlang'da yapabileceğiniz her şey Elixir'de mümkündür. Ancak başlık, sorunun neye yatırım yapmanız gerektiği ve burada yanıtın "buna göre değişir" olduğunu gösteriyor. Ne yapmak istiyorsun? Web uygulamaları için Elixir çok daha güzel çünkü bu sorunu çözmek için yaratıldı. Bazı dağıtılmış sistemler için, Erlang üstününün basitliğini bulabilirsiniz. Özellik eksikliği genellikle iyi bir şeydir. Yalnızca Erlang öğrenmek, en önemli kısma odaklanmanıza yardımcı olacaktır: OTP.
tkowal

2
@ SašaŠijak Sorunun başlığını IMO'nun ne hakkında olduğunu daha iyi yansıtması için değiştirdim - kabul etmiyorsanız geri dönün.
Paweł Obrok

2
@ PawełObrok harika düzenleme, bilmek ilgilendiklerimi doğru bir şekilde özetliyor
Saša Šijak

3
her zaman bu tür sorular sorduğumda -10 olumsuz oy alıyorum
arisalexis

Yanıtlar:


37

Sadece önsöz olarak - üretimde Erlang değil sadece Elixir kullandım.

Elixir'i dürüstçe tavsiye ederim. Bu benim fikrimdir ve sizin için doğru olanı olmayabilir, ancak aşağıda nedenlerimi listeleyeceğim.

  1. Üretkenlik: Ruby / Rails geçmişinden geliyorum, bu yüzden Elixir sözdizimi ve stili bana çok tanıdık geldi. Bir dili öğrenip öğrenemeyeceğime karar vermeme yardımcı olan ana faktörlerden biri o dil içinde ne kadar üretken olabileceğimdir - esasen neden Ruby'yi seçtim. İksir aynıdır. Ruby'de olabildiğince hızlı çalışabilirim ve eşzamanlılık ve kalıp eşleştirmenin tüm ek avantajlarıyla birlikte.
  2. Erlang: Elixir, Erlang'ın üzerine inşa edildiği ve erlang ve beam vm'ye kadar derlendiği için, her erlang modülüne ve paketine erişebilirsiniz. Dolayısıyla, iksir kullanmaktan endişeleniyorsanız ve Erlang'ın tüm özelliklerini kaçırıyorsanız, olmamalısınız. Elixir, GenServer, GenEvent vb. Gibi daha büyük Erlang / OTP özelliklerinin çoğunun kendi uygulamalarına bile sahiptir.
  3. Topluluk / Kaynaklar: Elixir topluluğu gerçekten harika bir topluluk. Slack kanalı, yeni başlayanlar için bazı cevaplar almanın gerçekten popüler ve harika bir yoludur. Dil üzerine yazılmış (Programming Elixir 1.2 - Dave Thomas, Ruby Pickaxe Yazarı) aynı zamanda dile girmeyi gerçekten kolaylaştıran gerçekten iyi kitaplar zaten var.

Gerçekten, eğer ikisiyle bir karmaşa yaşıyorsanız, Elixir'in Erlang + More'un tüm özellikleriyle çok daha hoş bir dil olduğu kararına muhtemelen geleceksiniz. Aynı zamanda artıyor, tam sayıları hatırlayamıyorum ama Hex web sitesinden (paket yöneticisi) paket indirmelerinde önemli bir artışla ilgili bir şeyler okuduğumu hatırlıyorum.


14
Elixir, Erlang'a kadar derlenmez, BEAM koduna göre derlenir. İksir kahve kağıdına benzer DEĞİLDİR, vb. al. bu sadece JS yazıyor.
Peter R

64

Birinde yapamayacağınız, diğerinde yapamayacağınız hiçbir şeye rastlamamalısınız, çünkü Elixir kodunu Erlang'dan özgürce arayabilir veya tersi yapabilirsiniz. Hatta Erlang ve Elixir dosyalarını tek bir projede kolayca karıştırabilirsiniz.

İksir olarak:

:erlang_module.erlang_function(args)

Erlang'da:

'Elixir.ElixirModule':elixir_function(args)

2
İç içe geçmiş bağımlılıklar veya diğer çok özel durumlarda sürümler oluştururken bazen biraz yanıltıcı olabilir, ancak bence bu kesinlikle doğru cevap. NOT : kaynakları çok kısıtlı makinelerde çalışıyorsanız, bir sürüme Elixir ve Elixir bağımlılıklarını eklemek bellek açısından daha ağır olabilir. Bu yüzden, yanılmıyorsam, bazen saf Erlang'a bağlı kalmanın birkaç Megabayt bellek tasarrufu sağlama faydası olabilir, bu da VM'yi genişletmek için yer kalmadığında çökmeleri önlemeyi kolaylaştırır.
Laymer

37

TL; DR - Elixir ile başlayın

Erlang, Elixir'e kıyasla daha dik bir öğrenme eğrisine sahiptir. Elixir öğrenmeye başladığınızda, otomatik olarak Erlang öğrenmeye başlayacaksınız. Dolayısıyla Elixir ile başlayın. Elixir, Erlang ve Elixir ile yazılmıştır. Github'daki dağıtımı görün (Elixir, meta programlama olarak da bilinen makrolarla dolu olduğundan). Elixir Proje Kodu dağıtımı

Elixir'i Erlang ve tam tersi ile kullanabilirsiniz, bu nedenle 20+ yıllık kütüphanelerin tam Erlang eko-sistemi.

Erlang Solutions'dan daha fazla ayrıntı

Elixir'in "kutudan çıktığı haliyle" üretkenliği, veri manipülasyonunun ifadesinde alet ve rahatlığa güçlü bir odaklanma ile gerçekleştirilir. Sistem tasarımı Elixir ve Erlang'da aynıdır, ancak Elixir birçok standart kodu kaldırır ve genişletmesi daha kolaydır. Ortak plakanın kaldırılması üretkenliği artırır ve programcıların daha hızlı geri bildirim almasını sağlar - ürününüzü mümkün olduğunca hızlı bir şekilde piyasaya sürmek istediğinizde çok önemlidir. Daha az ortak şablon aynı zamanda mutlu geliştiriciler sağlar ve mutlu geliştiriciler, şaşırtıcı derecede üretken geliştiricilerdir.

Joe Armstrong'un (Erlang mucidi) Elixir hakkındaki blog yazısı

Elixir hakkında bilgi edinmek için buradan başlayın - Başlarken

İyi gittiğini hissettiğinizde, Egzersiz ve diğer kaynaklar üzerinde pratik yapmaya doğru ilerleyin .


3

Birkaç şey var. Elixir'de özyinelemeli bir anon işlevi yapamayacağınızı düşünüyorum. Şimdi adil olmak gerekirse, bu, Erlang'ın 8+ yılında hiç yapmam gerektiğini düşünmediğim bir şey ve eğer yaparsam başka bir şekilde kolaylıkla yapılabilir. Dürüst olmak gerekirse görmezden gelebileceğiniz muhtemelen buna benzer birkaç şey daha vardır.

Genel olarak, çoğu insanın Erlang'da yapabileceğin her şeyi önemsediği şeyler için Elixir'de yapabilirsin ya da tam tersi. Elixir tarafındaki topluluk daha aktif görünüyor, bu yüzden oradan başlamayı öneririm. Yakın zamanda Erlang'dan Elixir'e taşındım ve Proper'daki birkaç süslü şey dışında bunun oldukça kolay bir geçiş olduğunu söyleyebilirim

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.