aynı isimde "elixir" başlığı da var
  • 2012'de piyasaya sürülen dinamik ve güçlü programlama dili.
    github
    wiki
  • erlang'ın sanal makinesi üzerinde çalışan ve onunla aynı multithread konseptini paylaşan, eski bir ruby geliştiricisi olan jose valin'in yazdığı güzel bir dil. rubyde olduğu gibi dilin ux'ini umursadığından ilginç bir dildir. nötr kalan pek görmedim, ruby gibi ya sev ya nefret et durumu var.
  • geceleri gizli gizli dökümanlarını kurcaladığım programlama dili.
  • phoenix adlı bir web framework'e sahip olan fonksiyonel programlama dilidir.
  • 1.8 sürümü yayınlanmıştır: https://elixir-lang.org/…14/elixir-v1-8-0-released/
  • ruby'nin fonksiyonelcesi. bu sıralar yeni hevesim. yorulunca ve sıkılınca bakıyorum şöyle bir, belki bir gün ciddi anlamda kullanmaya başlarım ki doğrusu ciddi bir şekilde kullanabilme fırsatını çok isterim.
  • eğer bu dili öğrenmek istiyorsanız, biraz da uygulayarak öğrenmek istiyorsanız, şu sayfayı bence muhakkak gözden geçirin. eğer azıcık ruby aşinalığınız varsa pratik yaparak elixir'i öğrenebilirsiniz.

    https://exercism.org/tracks/elixir/concepts

    doğrusu beni biraz zorlamıyor değil, oop mantığına alıştıktan sonra fonksiyonel mantık çok tuhaf geliyor.
  • çok hoş bir programlama dili. phoenix framework ile gayet hızlı, ölçeklenebilir platformlar kurmak mümkün.
  • ruby programlayan birisi olarak uzun bir süre bu dile kafa patlattım, neticede vardığım nokta elixir öğrenmenin gerektirdiği süreye karşılık pek de mantıklı bir yatırım olmaması.

    öncelikle syntax olarak pek lezzetli bir dil. tabii "dil dediğin c syntaxlı olacak" deyip python'a sırf syntaxtan ötürü düşmanlık duyuyorsanız size pek hitap etmeyecektir. ama gerçekten syntax olarak benzer klasmanındaki dillerden çok daha ileri özellikler sunuyor. en azından iyice özümseyince if - else unutturuyor size. tail recursion'un paşalar gibi işlemesi sayesinde mis gibi patlamayan sonsuz recursionlar üretebilirsiniz.

    daha önce başlıkta "ruby'nin fonksiyonelcesi" diye bir girdi girmişim. değil. fonksiyonel özellikleri olan bir dil olduğu aşikar ancak rust ne veriyorsa ondan fazlasını vaat etmiyor. hatta o kadarını da vermiyor. tabii, her şeyin değişmez sabitlerden oluştuğu modül sistemi classlara göre daha göze daha "fonksiyonelce" geliyor. bu çok özgün bir yapı, incelenmeye değer. fakat, bir yerden sonra inheritance yapamayan fakat composition yapabilen bir class gibi davranmaya başlıyor modüller. bu da güzel tabii.

    doğru tanım "ruby'nin erlangçası" olurmuş. erlang o kadar kendisine özgü tarzda bir dil ki ne fonksiyonel tanıma ne de oop tanımına uyuyor. (yine de oop anlayışını uygulayabileceğiniz bir tarzı var.) erlang dediğimiz yapıda değişmez yapılar processler vasıtasıyla işleniyor ve tek değişim processlerin kendisine gerçekleşiyor.

    ama ne dersiniz bilmem, erlang'ı sevemedim. bir yerden sonra "hepsi aynı işi yapıyor galiba" dedirten yapıların içerisinde kayboluyorsunuz ve çok detaylı yapılandırmalarda sürünüyorsunuz. en sonunda kurduğunuz mantık "3 saniye bekle, cevap gelmezse kapatıp gidelim" gibi programlama mantığından çok uzak bir mantığa çıkıyor. üstelik işinizi kolaylaştıran bir dil olmak kenara, konu process yönetimi olunca c++ gibi incik cincik detaylara girip çıkıyorsunuz bazen. erlang uzmanlaşması hakikatten zor bir alan ve getirisi de bence aman aman değil. (tabii, ilginizi çekiyorsa ve aktif olarak üzerinde uğraşıyorsanız devam edin. neticede muhakkak alıcısı çıkar ve alıcısı da yana yakıla adam arıyor genelde. yani biraz kumar, ya hep ya hiç şeklinde bir getirisi var)

    bunun dışında topluluğu da pek büyük değil, çünkü olmazsa olmaz bir dil değil. elixir/erlang'ın verdiği araçlar çoğunlukla network programlamaya, backend kurgulamaya veyahut dağıtık yapıların altından çıkmaya yarıyor. bu alanlarda kuvvetli olsa da java'dır, rust'tır, c++'dır, go'dur, node.js bir kamyon seçeneğiniz var. hem de scalability olarak erlang'tan daha güçlü ve muhtemelen bir yerlerden öğrenmiş olduğunuz diller. bu da topluluğunu çok küçük tutuyor. bir şeyi merak edip araştırıyorsunuz, alakasız cevaplar çıkıyor karşınıza. bir haftadır erlang'ın mnesia kütüphanesini elixir'de kullanacağım diye heder oldum. "paşam ben redis'e geçiyorum" dememek için kendimi zorladım ve erlang kodu okurken buldum.

    rails'e alternatif olarak tasarlanmış phoenix frameworkünü sevemedim bu arada. yersiz karmaşık ve bambaşka soyutlamaları anlamanız gerekiyor. kafam o kadar esnek çalışamıyor ne yazık ki. scalability olarak epey övülmüş, fakat ben benchmarklarda ahım şahım bir şey göremedim. yani evet rails'ten daha "scalable" duruyor fakat neticede gelmiş geçmiş en scalable framework de değil. hatta bazı node.js frameworkleri bile gayet iyi duruyor. öğrenmesi de o kadar yorucu değil.

    son olarak, statik tipleme için sunulan dialyzer aracı rezilin rezili bir şey. elixir/erlang dinamik tipli bir dil ve eğer ufak tefek scriptler yazmıyorsanız dinamik tipin hiç bir avantajı yok. bir haftasonu kalktığınızda ananıza bacınıza sövülen küfürlerle uyanmamak için uygulamaları gayet iyi test etmelisiniz. statik tipleme de test yazarken işinizi kolaylaştırıyor, sorunları daha derleme zamanında anlamanızı sağlıyor. elixir'in de yazıldığı alanlardaki hedefine uygun olarak statik tipli olması daha uygun ve bunun için dil için tipleme desteği ile dialyzer sunulmuş. ama yahu, bu da kendince bir komedi adeta. hiçbir şey anlatmayan uyarı mesajları var (fonksiyon değer dönmüyormuş, eee?) ve ciddi bir kısmı da gözardı edilebilir. (bin tane dialyzer uyarısı ile açılan kütüphanelere selam olsun) işin özü bazen cidden güzel hatalar yakalasa da hatanın ne olduğunu anlatmaktan o kadar aciz ki ekranı yumruklayası geliyor insanın. bir de... tip bildirme syntaxı gözünüzü kanatabilir, hazırlıklı olun.

    neticede elixir öğrenmenin, genel programlama anlayışınızı geliştireceğini düşünüyorum. çok güzel araçlar da sunuyor ama olmazsa olmaz da değil ve uzmanlaşması "hafta sonu şöyle bir göz atayım" denecek bir dilden çok daha fazla bir özveri gerektiriyor.
  • ortalama kod yazarlar tarafindan -muhtemelen- zor ogrenilen ancak tam da bu yuzden ogrenmeye deger bir dil.
    (ortalama ve muhtemelen demem itici gelmis olabilir, bu ifadelerin sebebi kendimi ortalama uzeri gormem degil, ilk dogru duzgun ogrendigim dilin haskell olmasi. dolayisiyla oop benim icin yeni bir paradigmaydi, ortalama biri icin bile eski bir konsept esasinda.)

    populer dillere ve bunlarin paradigmalarina baktigimiz zaman bu dillerin birbirlerinden cok da farkli olmadiklarini goruyoruz. syntax olarak benzemenin otesinde yeni bir sey de sunmuyorlar. imperative ve object oriented kod yazdiktan sonra bunu python'da mi yazdiniz, java'da mi yazdiniz pek bir onemi yok. bi yerden sonra herhangi bir problemi baska bir dilde cozmek transpiling gibi duruyor. boyle olmayan bir avuc dil var.

    elixir de onlardan biri. elixir'in neler sundugunu anlatmayacagim uzun uzun, bunu merak eden zaten detaylica acar bakar. ancak bu tarz degisik paradigmalari encourage eden dilleri ogrenmenin faydasindan bahsetmek gerekli olabilir. populer paradigma(lar) her durum icin kullanisli degil. ve cogu insanin bu paradigmalar disinda bir deneyimi yok, bu paradigmalardan haberi yok. bu da farkli bir yaklasimla cok daha basit bir sekilde cozulebilecek bir problemi kompleks hale getirmeye yol aciyor. bu yuzden o an isimize yaramayacak degisik paradigmalardaki dilleri ogrenmek bir an geldiginde zor bi probleme dogru sekilde yaklasarak cok daha iyi bir cozum ortaya cikarmanin yolunu acabilir.

    programlama konusundaki vizyonunu gelistirmek isteyen biri pratik bir sekilde yarin kullanabilecegi ancak bugun kullandigi dilden bir iki syntax farki disinda fark olmayan bir dil yerine hicbir fikrinin olmadigi paradigmalardaki dilleri ogrenmeli. cogu dil oo olsa da functional ozellikler tasiyor ve gelecekte de mainstream dillere nis dillerdeki ozellikler gelmeye devam edecek. bu tarz konseptleri de onceden gormus olmak favori gunluk dilinize o ozellik 3 yil sonra geldiginde de faydali olur hem *

    simdi yolla butonuna basmadan tekrar bir okudum entry'i, elixir'in pratik kullanimi yokmus gibi bir anlam cikabilir gibi geldi. elixir muhtemelen degisik* diller arasinda en cok pratik kullanimi olan dil.
hesabın var mı? giriş yap