aynı isimde "crystal" başlığı da var
  • http://crystal-lang.org/

    adresinden erişebileceğiniz programlama dili.
  • ruby syntax'inda*, static type checking yapan, llvm ile native koda compile edilip calisan (dolayisiyla yuksek performansli) bir dil. https://crystal-lang.org/

    suradan bir review'ini okuyabilirsiniz: https://blog.codeship.com/…fast-as-c-slick-as-ruby/
  • eglenceli bir dil. dilde en populer olan framework'ün kemal isimli bir web framework'ü olması dili milli duygularımızla bağrımıza bastırır.
  • dil olanı için, şurada bir video serisi mevcut. dili tamamen anlatmasa da, giriş babında işe yarayabilir:

    https://www.youtube.com/…z0dh5p73vdfwauh1mf_yq6f9rj
  • programlamayı severim ancak bu benim için bir hobi kıvamındadır. ne yetiştiğim ortam ne de okuduğum bölüm, ne de yapmayı düşündüğüm meslek programlamayla ilişkili. bu yüzden, biraz kendimi koyduğum konumdan dolayı hem yazılım topluluğuna hem de yazılımcılığın kendisini dışarıdan inceleyebiliyorum. zira, yazılımcılar dışında pek çok topluluktan insanları görüp kıyas edebiliyorum ve yazılımcıların farkında olmadıkları özellikleri bizzat analiz edebiliyorum.

    peki, yazılımcıların en keskin özelliği nedir?

    rekabetçi olmaları. belki batı kültürünün bir özelliğidir, belki de başka bir şey. birbirlerini bir şekilde ezmek için didinir dururlar. kimi zaman bu doğrudan gerçekleşir. mesela python (programlama dili) başlığına bir girip bakın, kimler kimleri nasıl eziyor görün. bilmeyeniniz olursa diye konuşuyorum, python çok rahat anlaşılabilecek bir programlama dilidir ve sırf bu yönünden dolayı gömülür de gömülür. bu yüzden, biraz daha karmaşık dillerde yazmak zorunda kalan programcılarda gizli ya da açıktan bir kolay dil düşmanlığı apaçık görünür. size böyle henüz ergenliğine girmiş gençlerin alışkanlığı gibi görünebilir. ama kişisel olarak takdir ettiğim @ssg'nin bile böyle bir huyu vardır.

    (bkz: #741)
    (bkz: #41847969)

    tamam anladık, zor öğrenilen bir dili yazan adam kolay dili öğrenen bir adamı şöyle böyle eziyor. yavaş diyor, hantal diyor ya da işte kullanışsız diyor. bir noktada haklılık payı var, hoş görebiliriz. ancak aynı dili yazan insanlar arasında rekabet nasıldır? işte orada iş iyice çirkinleşir. kod öyle karmaşık, öyle kriptik bir hâle gelir ki böyle bir koda denk geldiğiniz zaman hiçbir zaman anlamazsınız. eğer işin ne kadar berbat olabileceğini kestiremiyorsanız, size şöyle bir örnek vereyim:

    (bkz: #10209328)

    şimdi böyle kodlar yazan insanlar sert bir şekilde uyarılıyor bin şükür. hani üstte gördüğünüz örnek bir mecburiyet değil, bir tercih. adam gayet eğlenerek, güle isteye bunu yazmış. bu rekabetin şöyle bir türü: senin daha okuyamadığın bu karmaşayı bizzat ben yarattım ve ben işte bu kadar zeki bir adamım.

    inanması güç, ama böyle bir algı var. belki bilinçli belki bilinçsiz oluyor ama her yazılımcının derinliklerinde "kriptik" kod yaratma arzusu vardır. kimi zaman belirsiz değişken adlarıyla, kimi zaman bilinmeyen yan etki oluşturan fonksiyonlarla kimi zaman da iyice iç içe girmiş kodlarla yapar bu programcılar.

    90lı yıllarda c ortamlarında yeni başlayanlar çatır çutur aşağılanır, nasıl da bilmedikleri yüzlerine yüzlerine vurulurken japonya'nın topluluk kültürü içerisinde bu anlayışın çok tersine bir programlama dili ortaya çıkıyordu. bu programlama dili okunaklıydı, makinenin konforundan önce programcının konforu için tasarlanmıştı ve neredeyse hiç yazılım bilmeyen bir insan dahi şöyle bir baktığında ne döndüğünü anlayabilirdi. bu dil, ruby'dir.

    dilin ne kadar anlaşılır olduğunu örnekleyebilmek için buraya bir arayüz programlama dökümanı bırakıyorum. muhtemelen biraz biraz linuxla haşır neşir olmuş insanlar ne döndüğünü hemen anlayacaktır. başlıkların altında orijinal belgedeki c kodlarını inceleyebilirsiniz.

    https://github.com/…dlemo/ruby-gtk3-tutorial#basics

    diğer programlama dilleri en iyisi ve en mükemmel olmayı hedeflerken ruby, anlaşılır olmayı ve kibar bir topluluğa sahip olmayı hedefledi. dediğim gibi, c forumlarında insanlar kaba bir tavırla yeni başlayanlara yaklaşırken ruby forumlarında "matz kibarsa biz de kibarız" * anlayışıyla tane tane anlatmaya çalıştı yıllar boyunca. bu arada yanlış anlaşılmasın, zor öğrenilen dillere düşman değilim. hatta rust gibi bir canavarı gayet beğeniyorum. yalnızca ruby'nin kolay anlaşılabilirlik - konfor endeksli olmasını ayrıca takdir ediyorum.

    ruby'nin kendi hedeflerine ne kadar yaklaştığı, ne kadar başarılı olduğu tartışılır. pek çokları, ruby'nin ölü bir dil olduğunu ve artık ortadan kalkacağını düşünüyor. belki haklılardır zira ruby eskisi kadar konuşulan bir dil değil. nihai rakibi python'un karşısında epey kan kaybetti. ancak nereden bakarsak bakalım, ruby aşağıda görebileceğiniz gibi github üzerinde en çok kullanılan on dilden birisi. c#, kotlin, rust gibi dilleri geride bırakarak hem de! tabii bu kadar yıllık bir programlama dilinin bu kadar popüler olması aman aman enteresan bir şey değil, ama "henüz" ölmediğine dair bir kanıt olduğunu düşünüyorum.

    https://madnight.github.io/githut/

    peki, ruby ile bu başlığın ne alakası var? başlıkları mı karıştırdım? elbette ki hayır. konumuz crystal programlama dili ve bu dil ruby ile yakından ilişkili. şöyle ki, pek çok ruby kodunu üzerinde hiçbir değişiklik yapmadan crystal derleyicisi üzerinde çalıştırabilirsiniz.

    güzel ama ruby varken bu dile ne ihtiyaç var? yani madem ruby'den hiç farkı yok? elbette var, performans.

    biliyorsunuz ki ruby yorumlanan bir dil. bu çalışma prensibinin yarattığı esnekliklere karşın, ruby ne yazık ki alabildiğine hantal bir dil. bundan dolayı çoğu zaman ruby'i bayıla bayıla yazan programcılar performans gerektiren durumlarda mecburen c gibi yazılımcı konforundan çok makine konforunu hedefleyen bir dilde yazmak zorundalar. bu sadece bir rahatına düşkünlük mevzusu değil, aynı zamanda yazılımın çıkması için gereken sürenin ve bakımın artması demek. hem şöyle c hızında tepki veren, hem de ruby kadar yetenekli bir dil olsa... çok şey mi isteriz?

    çok şey ister miyiz istemez miyiz bilemem, ancak neticede birileri böyle bir şeyi tasarlayıp ortaya koymuş. evet, gördüğünüz üzere konu gayet başlıkla ilgili.

    crystal henüz yeni bir dil, dokümanları ruby'i pek tanımayan birisi için pek yeterli değil ve kütüphane desteği pek fazla yok. üstelik dilin duyurulmasından beri geçen beş yılın ardından adam akıllı bir windows desteği dahi gelmedi. ancak yine bir yerlerde böyle bir çalışma yapılmış olması benim gayet hoşuma gidiyor. zira, programcılığın merkezine tekrar insanı almasından dolayı bence takdir edilmesi, desteklenmesi gereken bir dil. zira böyle ufak adımlar yazılımcılığa rekabet yoluyla yerleşmiş olan "çileciliğin" ortadan kalkması için bir adımdır.

    edit: debeye girmişim. sanırım ilk olabilir, hepinize teşekkür ederim. :)
  • zamanında bu dili bir güzel yağlayıp parlatmışım. ufak bir tanıtım yazısı yapmak ve öğrenmek isteyenler bir yönlendirmede bulunsam iyi olur.

    crystal, ruby'den çok ağır bir şekilde esinlenerek tasarlanmış bir llvm dili. syntax olduğu gibi ruby'den alınma ve ruby'nin bazı tuhaflıklarını düzenleyip daha göze hoş gelen bir biçimde düzenlemişler. bunun dışında ruby'de olmayıp da crystal'de olan pek çok özellik de var. genel bakışta, crystal statik tipli ve hızlı bir ruby.

    ruby ile ilgilenmiyor olabilirsiniz, ruby'nin python'a çok benzediğini söylersem belki ilginizi çeker. python ile üç aşağı beş aşağı aynı ve ruby python'dan bile daha kolay; çünkü öğrenilecek daha az noktası var. crystal de, go dengi bir performans sağlamasına karşın, python gibi çok temiz/az satırla iş yapılabiliyor.

    ancak crystal go gibi çeşitli alanlara dağılmış bir dil değil. genel ağırlık backend üzerinde ve takdir etmek gerekirse rust'tan daha ileride bir backend anlayışı gördüm. çoğunlukla oturmuş ve çeşitli araçlara ulaşmak mümkün. amber, kemal ve lucky crystal'in bayrağını tutan frameworkler, bunların arasında en kalitelisi ve oturmuş olanı lucky, ardından kemal geliyor. amber'in odak noktası "daha hızlı" bir rails olmak olduğu için hâliyle rails ile kıyaslayıp hayal kırıklığına uğruyorum. kemal ise yerli ve milli* microframeworkümüz, python'daki flaskın/ruby'deki sinatranın muadili. lucky, crystal'in en olgun frameworkü ve gördüğüm kadarıyla da crystal'in araçlarını en verimli şekilde değerlendiren framework.

    lucky'e biraz eğilmek istiyorum. crystal'in mvc frameworklerinin odak noktası rails'e benzemek, rails'in daha performanslı bir hâlini sunmak. lucky ise benzerini görmediğim cinsten, gerçekten deneysel bir framework. bütün hataların derleme zamanında keşfedilmesi için her şey birer class olarak tanımlanır, html templateları dahil olmak üzere. kulağa yorucu gelse de, aslında pek çok şey gayet oturaklı ve rails'in kendi içinde "magic" anlayışıyla çözmeye çalıştığı şeyler lucky'de gayet güzel cevaplandırılmış.

    crystal öğrenmek için ne gerekiyor? öncelikle ruby'i iyi kötü biliyor olmanız, crystal'e de aşinalık kazanmanız için gayet önemli. webde rastgele bir ruby cheatsheeti arayarak ruby öğrenebilirsiniz ki öğrenmesi kolay bir dil. ancak, güncel bir şey aramanıza gerek yok zira ruby'deki syntax sugarların ciddi bir kısmı crystal'de geçersiz.

    crystal'in profesyonel alanlardaki kullanımı nasıl? itiraf etmek gerekirse crystal stabil formuna ulaşmış olsa da henüz tercih eden bir iki şirket dışında pek bir şey görünmüyor. sponsorlar listesini inceleyebilirsiniz. https://crystal-lang.org/sponsors/

    crystal öğrenmeli misiniz? eğer yeni bir şey arıyorsanız ve hızlıca, performanslı backend projeleri tamamlamak istiyorsanız crystal gayet uygun görünüyor.
hesabın var mı? giriş yap