1 puan yazan GN⁺ 2024-08-31 | 1 yorum | WhatsApp'ta paylaş
  • CIEL, %100 Common Lisp tabanlı genişletilmiş bir Lisp olup, temel araçları birlikte sunan “batteries included” yapılandırmasını öne çıkarır
  • Betikler #!/usr/bin/env ciel shebang’iyle çalıştırılır; Lisp kodunda JSON okuma ve HTTP GET doğrudan kullanılabilir
  • Örnekte http:get ile çağrı yapılır, json:read-json ile yanıt okunur ve print ile çıktılanır
  • ./myscript.lisp çalıştırma örneği, CIEL betiklerinin normal çalıştırılabilir dosyalar gibi ele alındığı akışı gösterir
  • Web belgesinin kalan kısmı JavaScript gerektirir; JavaScript olmadan görüntülemek için GitHub deposuna bakmak gerekir

CIEL’in temel niteliği

  • CIEL, “genişletilmiş Lisp” olarak tanıtılan bir dildir
  • Common Lisp tabanlı

    • %100 Common Lisp tabanlıdır
    • Temel araçları içeren batteries included yapılandırmasını ayırt edici özellik olarak öne çıkarır

Betik çalıştırma örneği

  • Örnek kod, ciel çalıştırıcısını shebang olarak belirtir
#!/usr/bin/env ciel

(print
  (json:read-json
    (http:get "https://fakestoreapi.com/products?limit=5";)))
  • http:get ile HTTP isteği gönderir, json:read-json ile yanıt JSON’unu okur ve ardından print ile çıktılar
  • Çalıştırma komutu şöyledir
$ ./myscript.lisp

Belgelere ve depoya erişim

  • Proje bağlantısı GitHub üzerinde sunulmuştur
  • Web belgesinin kalan kısmı JavaScript gerektirir; JavaScript kullanılamıyorsa GitHub deposuna bakılması gerektiğine dair bir yönlendirme vardır

1 yorum

 
GN⁺ 2024-08-31
Hacker News yorumları
  • Standart olarak iyi belgelenmiş bileşenlerin çekirdek dilin parçasıymış gibi hemen kullanılabilir şekilde paketlenmesi ve üstüne havalı bir isim verilmesi gerçekten önemli
    Hoşuma gitti; yeni bir standart hedefi de olabilir gibi görünüyor. Şimdi tek gereken iyi bir maskot ya da logo

    • İsme bakınca yavru fok olması gerekiyor gibi
    • Belgelerin nerede olduğunu bilmiyorum. Açıkçası burada çok fazla görünmüyor; buna belge demektense README derdim
  • Yaklaşımı beğendim. “Bir Lisp daha” bekliyordum; o havalı olurdu ama hemen kullanmak istemezdim
    Var olanı genişletip iyileştirmek, sıfırdan başlamaktan daha zor ve daha az eğlenceli olabilir ama çok daha değerli. Zaten Common Lisp kullanıyorum ve bu, özellikle yeni başlayanlar ya da küçük projelerde o kendine özgü tuhaflıkları biraz azaltıyor gibi

  • Hızlı ve kullanışlı Lisp konusu ne zaman açılsa Joker’dan (https://github.com/candid82/joker) bahsetmek istiyorum
    Go ile uygulanmış Clojure sözdizimi; projeyle bağlantım yok ama gerçekten harika olduğunu düşünüyorum. CIEL örneğini Joker ile yazarsanız (prn {:a 1 :b 2 :c 3}) olur; indirme·kurulum·çalıştırma için Gist: https://gist.github.com/lsh-0/f7df23777ef35a8cc3d85e1dcbf0eb...
    Tüm betiğin çalışması 2,1 saniye, örneğin kendisinin çalışması ise 0,007 saniye sürdü

  • Babashka’nın (https://babashka.org/) seçtiği yaklaşımın artık Common Lisp dünyasında da ortaya çıktığını görmek sevindirici

  • Safari’de bakınca da aynı Javascript uyarısı çıkıyor. Hiçbir eklenti açık değildi
    Chrome’da kontrol ettim; bunun dışında tam kullanmak isteyeceğim biçimde görünüyor. CL standart kütüphanesi zaten biraz aşırı yüklenmiş gibi hissettiriyor ama “piller dahil” bir şeye gidilecekse Alexandria, Bordeaux gibi şeyler eksikti; bu tercihi beğendim. Biraz parçalı CL ekosistemine “iyi uygulama” ya da standartlaşma hissi veriyor

  • Harika. Ben kişisel olarak Alexandria, Serapeum, Dexador, Bordeaux Threads ve JSON ile ilgili araçları içeren bir imaj kullanıyorum; başkalarının da benzer bir hedef için kullandığı bir şeyin olması kullanışlı olabilir
    Fazla tartışılıp az ilerleyen CDR önerilerinden ya da ondan önceki CL21’den daha başarılı olma ihtimali yüksek görünüyor. Varsayılan olarak ayarlanmış çok sayıda reader macro olup olmadığını da merak ediyorum

    • Terminal REPL’de yalnızca biri açık; CIEL’i normal bir Lisp kütüphanesi olarak kullanırken ise hiçbiri açık değil
      Çünkü varsayılan olarak readtable’a dokunmak istemiyorum. Editör REPL’inde shell passthrough’u açma yolu için aşağıya bakın
    • Koda hızlıca bakınca, REPL’den shell’e çıkmak için yalnızca clesh[1] varsayılan olarak etkin gibi görünüyor
      1: https://github.com/Neronus/Clesh
  • ncurses ve SDL core’unu derleyen bir wrapper gelirse, belki bir gün lem CIEL üzerinde doğrudan çalışır ve gerçek bir Lisp ortamı ortaya çıkar diye düşünüyorum
    https://news.ycombinator.com/item?id=41357409

  • Ron Garret’ın 2010’da yaptığı başka bir Lisp olan Ciel’den (https://pldb.io/concepts/ciel.html) farklı görünüyor. Kendisi aynı zamanda roket bilimci (https://flownet.com/ron/)

  • Kolayca binary’ye derlenebiliyor mu? Standart CL yolunu kullanmak yeterli gibi görünüyor
    CIEL custom REPL içinde !ls gibi shell passthrough olması güzel bir özellik

    • Oldukça kullanışlı. Terminalde shell kodu ile Lisp kodunu karıştırarak kullanabileceğiniz gelişmiş bir Lisp shell istiyorsanız lish’e bakın: https://github.com/nibbula/lish/
      Yazarı henüz “hazır” ya da “yeterince iyi” görmüyor ama epey ilerlemiş durumda. POSIX shell olan https://github.com/bradleyjensen/shcl de var. Her zamanki gibi daha uzun listeyi https://github.com/CodyReichert/awesome-cl#shells-shells-int... adresinde görebilirsiniz
    • Şu anda CIEL’i kütüphane olarak kullanıp standart yöntemle derliyor
      ciel build komutunu eklemek istiyorum
    • Yanılıyorsam kusura bakmayın ama bunun oldukça standart bir özellik olduğunu sanıyordum. IPython kernel de tam olarak aynı biçimi kullanıyor; tam bir shell gerekirse xonsh da kullanılabilir
      Python’ın REPL uygulamasında sıra dışı taraf olup olmadığını merak ediyorum. REPL olarak yalnızca Python ve e-lisp’e aşinayım
    • Ctrl+Z ile yetinmeyen ne var?
  • SBCL’ye kütüphaneler eklenmiş hali gibi görünüyor. Yazarı vindarel HN’de

    • Merhaba o/ Umarım CIEL’in hedefi iyi açıklanmıştır. Her gün kullanıyorum; editör içinde core image kullanıyor ve ürünleri de bununla dağıtıyorum
      Yeni bir projeye başlarken, dış dünyayla etkileşmek gerektiğinde, Python’ın karmaşıklığı olmadan küçük bir şey yazıp sunucuya koymak istediğimde çok zaman kazandırıyor. Django’nun yerini almak elbette zor ama CRUD işleri için otomatik bir DB dashboard’u da başlattım; henüz herkese açık değil ama üzerinde çalışılıyor
      Müşteri işlerine CL’yi kademeli olarak entegre ettim ve CIEL bu amaç için bir başka araç. CL’yi gerçekten kullanmak için. Projelerimin CL’nin süper güçlerine mutlaka ihtiyacı yok ama geliştirme·dağıtım·izleme tarafında o gücü istiyorum
      Bugün birkaç sorunu düzelttim ve v0.2’yi yayımladım: https://github.com/ciel-lang/CIEL/releases/tag/v02 Esas nokta, CIEL kurulumunun özellikle Mac’te çok daha kolay olması gerektiği. Artık sistem bağımlılıkları çok daha az
      Belirli platformlarda kurulum hâlâ zorsa, issue’ya ayrıntıları göndermenizi isterim. Özetle, CIEL’in CL yolculuğunuzu daha kolay ve pürüzsüz hale getirmesini umuyorum. Bazı şeyleri çözmenin ne kadar zaman aldığını hayal bile edemezsiniz. Artık burada hazır ve paketlenmiş durumda :-)