Hangi Common Lisp?

0
zekzekus
Daniel Weinreb, buradan erişilebilecek şekilde, Common Lisp gerçekleştirimleri (implementasyonları) ile ilgili bir inceleme yapmış. İncelemeye konu olan Common Lisp gerçekleştirimlerinin sorumluları kendi gerçekleştirimlerini anlatmışlar. "Nedir bu Lisp? Ortada bir sürü Lisp var, hangisini seçmeliyim?" diyenler için özellikle az bilinen Common Lisp gerçekleştirimlerini de içermesi açısından güzel bir kaynak.
Not: Her ne kadar Common Lisp bir ANSI standardına sahip olsa da (ANSI standardı X3.226-1994) bu standardı uygulayan ticari ve özgür CL platformu üreticileri kendileri pek çok ek yapabiliyorlar.

Görüşler

0
FZ
zekzekus'a bu güzel haber için teşekkürler. Hiç fena bir inceleme değil. Türkçeye çevirmek için gönüllü olan var mı?
0
Tarık
GNU Clisp : GPL lisanslı ve Windows, Linux, Mac, Unix platformları için kullanılır durumda. Bunlar yeni başlayan benim için gnu clisp i seçmem konusunda bir kıstas olabilir mi? Yazıdaki kütüphane desteği tablosunda iki adet kütüphanenin gnu clisp tarafından kullanılamadığı belirtilmiş, bu benim için ne anlam ifade eder? saygı, sevgi...
0
FZ
Ben daha çok SBCL (Steel Bank Common Lisp) ve Allegro CL (Allegro Common Lisp) kullandım. GNU CLISP'i en son MS Windows'da Common Music ile Csound kontrol etmek için kullanmıştım ama pek deneyimim yok CLISP ile. Başlangıç için fena bir seçim değil gibi görünüyor. Daha sonra başka bir CL implementasyonuna geçerseniz zaten işler %99 aynı olacaktır.

Bu arada hangi kütüphaneleri desteklemiyormuş CLISP implementasyonu? Eğer sizin için kritik değilse şu anda kaale almaya değmez o eksikliği diye düşünüyorum.
0
Tarık
Bordeaux ve Hunchentoot tabloda 'No' olarak işaretlenmiş.

Bordeaux: Bordeaux, by Greg Pfeil, is a standard API for threads in Common Lisp.
Hunchentoot: Hunchentoot, by Edi Weitz, is a full-featured HTTP server.

Aslında ikinci(Hunchentoot) eksik "http sunucu" kütüphanesiymiş. yeni başlayan biri için pek bir ehemmiyet arzetmiyor sanırım.

Gerçi diğeride "threads" lerle ilgili ileri seviye bir konu. Onunda yeni başlayan için önemi yok gibi.
Bu durumda GNU Clisp uygunmudur sizce?
0
FZ
Bence uygundur. Daha sonra "thread" lazım olursa SBCL'e geçiş yapabilirsiniz. Onun kendi gelişmiş thread desteği var bildiğim kadarı ile. Keza Hunchentoot da SBCL ile çalışıyor olmalı. Dolayısı ile şimdi CLISP ile başlamak istiyorsanız başlayabilirsiniz. Adı üzerinde ANSI standardı olduğu için zaten Common Lisp spesifikasyonundaki her şey CLISP'te de uygulanmıştır, o bakımdan bir sorun yok yani.
0
Tarık
O halde win/lin üzerinde Emacs+Slime+CLISP uygundur deyip ortamı kuralım. teşekkürler...
0
FZ
Olur da bir sorun yaşar ve uğraşmak istemezseniz anahtar teslim paket çözüm var LispBox diye, ona da bakabilirsiniz.
0
Tarık
Bende tam apt ile 2 dk da nasıl common lisp çalışma ortamı kurulur makalesi hevesine girmiştim :D LispBox' a da bakalım.
0
FZ
Debian kullanıyorsanız herhangi bir zorluk ile karşılaşacağınızı sanmam Emacs, CLISP, SLIME, ve pek çok CL kütüphanesi apt-get ile kolayca kurulabilir. Kütüphane listesine bakmak için apt-cache search cl- gibi bir şey yazıp bakabilirsiniz cl- ile başlar hemen hepsi.
0
butch
Benim için yıllar önce hazırladığınız ama hakkını vermediğim bir belgeyi yapıştırayım buraya:

1- GNU Emacs


apt-get install emacs21


2-  Lisp ile ilgili paketler, sbcl  lisp derleyicisi, vs.:


 apt-get install cl-clx-sbcl

 apt-get install cl-uffi

 apt-get install sbcl

 apt-get install cl-faq

 apt-get install cl-mcclim

 apt-get install cl-mcclim-doc

 apt-get install cl-mcclim-examples

 apt-get install cl-ppcre


3- Dokümantasyon:


apt-get install cltl

apt-get install hyperspec


4- SLIME: Superior Lisp Interaction Mode for Emacs


Normal kullanici olarak:


$ export CVSROOT=:pserver:anonymous@common-lisp.net:/project/slime/cvsroot

$ cvs login


Parola sordugunda:


   anonymous


(eger olmazsa bir daha dene) Sonra da:


$ cvs checkout slime


Artik cok az kaldi. ~ yani home dizinine git, misal /home/boran ve bir .emacs dosyasi olustur normal kullanici

olarak:


$ emacs .emacs


ve icine sunlari yaz:


(setq inferior-lisp-program "/usr/bin/sbcl")

(add-to-list 'load-path "/home/fz/slime")

(require 'slime)

(slime-setup)


Tabii /home/fz/slime yerine slime dizinin neresi ise orayi yaz, ona dikkat et.


Kaydetmek icin:


C-x C-s


Sonra emacs'ten cik:


C-x C-c


Tekrar emacs calistir, sonra emacs icinde iken:


M-x slime


yaz. Burada M-x, Meta-x yani Meta tusu ile x tusu ayni anda basilacak manasinda.

Tarihi nedenlerden ötürü israrla ve inatla META key diyorlar, bizim PC klavyesinde

bu ALT tusuna karsilik geliyor yani M- gördügün her seyi ALT-  diye okuyabilirsin.


Neyse, slime bir süre calisir, kendini derler sbcl ile filan. Sonra da en altta böyle


*


yazar bekler, asagida da connecting filan der. Biraz bekle, sonra emacs'ten yine cik.

Tekrar gir:


emacs deneme.lisp


diye. Ardindan yine


M-x slime


de. Senin acmis oldugun hello.lisp bir yere kaybolmaz icin rahat olsun. Karsina


CL-USER>


seklinde Lisp interpreter satiri cikacak. hello.lisp'i görmek icin:


C-x b


yaz yani önce C-x bas, ardindan elini CTRL'den cekip b bas. Orada zaten

default olarak hello.lisp'e mi gecmek istiyorsun diye sorar. Enter basip gecebilir

ya da uzun uzun hello.lisp yazabilirsin. Simdi artik SLIME aktiftir ve hello.lisp

dosyani tam ekran görüyor olmalisin.


Full syntax highlighting icin Emacs'in Options menüsüne git ve $unlari sec:


Syntax Highlighting

Active Region Highlighting

Paren Match Highlighting


Sonra da yine ayni Options menüsünden Save Options de ki bir daha ki lisp oturumunda

gerekli özellikler acik gelsin, bir daha bunlari set etmek zorunda kalmayasin. Simdi

basit bir Lisp programi yazalim:


(defvar *my-global*)

(setf *my-global* 12)


gibi bir seyler yaz. Yani bir miktar gecerli Common Lisp kodu. C-x C-s ile kaydet. Simdi bu yazdigin kodu

calistirmak istiyorsun, nasil yapacagiz? Lisp dosyanin icinde calisirken:


C-c C-k     (load and compile file)


yazdigin anda Emacs ikiye bölünür, altta Lisp interpreter cikar, derledim, buyur senin girdini

bekliyorum der.


CL-USER>


iken mesela *my-global* yazip enter basarsan bunu EVALUATE eder, sana sonu

döndürür, sonra yukariki pencereye gidip (pencereler arasinda C-x o ile gecis yapabilirsin)

Lisp kodu yazip C-c C-k ile derleyip test edebilirsin.


Emacs ile isin bitince, yine alt kisma gec, ve virgül ba:


,


Command:


sorunca da en altta, o zaman quit de, SLIME'i durdur, sonra da C-x C-c ile emacs'tan cik.


Tabii


C-h t


ile Emacs tutorial'i mutlaka en az bir kez oku ve bir iki pratik yap, takildigin

bir sey ya da bir rahatsizligin olursa sakin ama sakin bana sormaktan cekinme.


Akabinde Practical Lisp'in ilk iki bölümünü oku ve uygula: Takildigin en ufak bir

sey bile olursa benim basimin etini yemekten cekinme, elimden geldigince yardimci olurum.


0
Tarık
:) Bu yazıya girilen tüm yorumlar ve önerilerle birlikte iyi bir makale ortaya çıktı. saygılar...
0
FZ
Bir ekstra tavsiye: CLISP ya da SBCL ya da CMU CL, sakın ola ki doğrudan komut satırından kullanmak gibi bir işkenceye katlanmayın. Mutlaka Emacs içinden SLIME ile entegre olarak kullanın (Çok az kullanılsa da VIM ve Eclipse alternatifleri de var ama pek tavsiye edilmez).
0
myavuzselim
Tabii ki emacs kullanin da, yeri gelmisken bir guzel programin adini vereyim: rlfe. Readline destegi olmayan programlari varmis gibi kullanabiliyorsunuz.

$ rlfe sbcl
0
realist
Bir de Linedit var, Emacs'a alışamayanların ilacı.
0
FZ
Bu arada bu tür sorularınıza daha detaylı cevap alabileceğiniz cs-lisp e-posta listesine abone oldunuz mu?

http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp
0
erhanbaris
merhabalar
benim lisp hakkinda ufak bir sorum olucakti.
bana kisaca lispi tam olarak hangi alanda kullanabilecegimi vede diger programlama dillerine gore farkinin ne oldugunu aciklarsaniz sevirim.
iyi gunler
0
FZ
Soru ufak lakin cevap büyük. Kısaca: Common Lisp'i aklınıza gelen hemen her alanda kullanabilirsiniz çünkü genel amaçlı yüksek seviyeli (ancak düşük seviyeli işler için de kullanılabilen) bir programlama dilidir. Diğer programlama dillerine göre farkına gelince, sorunuz yeterince açık değil, çok çeşitli diller var, Lisp'i ne ile kıyaslamak istiyorsunuz?

Sorunuza uzun cevap: Practical Common Lisp Tutorial
0
erhanbaris
mesela karsilastirmam c ile olabilir.
birde lisp ile yazilmis programlardan ornekte verebilirseniz cok makbule gecer :))

aslinda benim bunlari sorma amacim benim gibi diger kullanicilarinda akillarindaki sorularin azda olsa giderilmesi...
0
FZ
Diğer kullanıcıların bir kısmının benzer soruları Google'a soracaklarını ve mesela http://www.cliki.net/Application, http://common-lisp.net/, http://www.cliki.net/index ve http://planet.lisp.org/ gibi adresleri bulabileceklerini tahmin ediyorum.

C ile kıyaslamaya gelince, hangi açıdan kıyaslanması gerektiğini belirtirseniz belki bir kıyaslama yapılması mümkün olabilir.
0
erhanbaris
ben o bakimdan biraz tembelim galiba :)) hazir bilen varken sormak daha kolay geldi :)
neyse o zaman soyle sorayim.
lisp ile ayni c deki gibi bellek yonetimi yapabilirmiyiz. pointer kavrami varmi ?

isletim sistemleri arasinda tasinmasi mumkunmu. yani yazilan bir lisp kodunu ufak degisikliklerle her sistemde kullanma sansimiz varmi?
buyuk capli projelerde kullanilabilirmi?(yada su anda kullaniliyormu?)
aslinda karsilastirma ile benim aklima ilk bunun gibi sorular geliyor.
neyse baska soru yok :)
oburlerini ben arastiricam artik :)
tesekkurler
0
FZ
lisp ile ayni c deki gibi bellek yonetimi yapabilirmiyiz. pointer kavrami varmi ?

Yok.

isletim sistemleri arasinda tasinmasi mumkunmu. yani yazilan bir lisp kodunu ufak degisikliklerle her sistemde kullanma sansimiz varmi?

Evet.

buyuk capli projelerde kullanilabilirmi?(yada su anda kullaniliyormu?)

Evet.

aslinda karsilastirma ile benim aklima ilk bunun gibi sorular geliyor. neyse baska soru yok :) oburlerini ben arastiricam artik :)

Takıldığınız bir yer olursa Usenet'teki comp.lang.lisp alanında (şimdiki gençler burayı Google Groups olarak da bilir) yahut irc.freenode.net IRC sunucusundaki #lisp kanalında sorabilirsiniz.
0
thorin
Merhabalar arkadaşlar.
Çok uzunca bir cevap yazmıştım ama ne yazık ki yollayamadan dikkatsizlik eseri kaybettim. Sadece şunu eklemek istiyorum ; CLtL1 uyumlu olan ancak GCC ile mükemmel bir performans yakalayan GCL'nin bu araştırmada ele alınmamasına bozuldum. Maxima gibi kocaman bir sistemin asıl yapıtaşı olan GCL'dir. Benim kaybettiğim yorumum yeni başlayanlar için CL'de derlenme ile ilgili merak ettiklerinize değiniyordu ama artık bir comp.lang.lisp 'e bir göz atarsınız. Yeni başlayanlar Emacs+Slime+CMUCL(SBCL) veya Emacs+Ilisp+GCL öneriyorum. Ama dediğim gibi GCL'nin ANSI uyumluluğunda bir sıkıntı var ve şu an aktif geliştiricilerinden ses çıkmıyor (hatta gcl-dev listesinde Gentoo Lisp grubunun GCL'den desteğini çekeceğini bile yazdılar). Bu kadar kaliteli açık kaynak kodlu ve özgür implementasyonlar var ancak en aktif şu anda SBCL görünüyor. Umarım CMUCL ve GCL sessizliğe gömülmez. Çok yaşa Common Lisp!
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Common Lisp ve Bir Optimizasyon Tekniği: Memoization

FZ

"Memoization" tabiri bilgisayar bilimlerinde ilk kez Donald Michie'nin 1968 yılında Nature dergisinde yayımlanan Memo functions and machine learning (Memo fonksiyonları ve makina öğrenimi) makalesi ile gündeme gelmiştir.

Memoization tekniği bir fonksiyonu hesaplarken önceden hesaplanmış değerleri hesaplamadan kullanmak, dolayısı ile işlemi hızlandırmak olarak tarif edilebilir. Sözcük olarak "memorization"ı yani "ezberleme" eylemini çağrıştırmakla birlikte daha genel bir anlamı kapsamaktadır.

Programlama dilinden bağımsız olmakla birlikte, bu yazıda "memoization" tekniğinin Common Lisp'te nasıl kullanılacağına bakacağız. Bunun için Peter Norvig'in PAIP kitabı ana eksenimizi oluşturacak.

Kor Bilişimden Common Lisp Tabanlı JavaScript Üreteci

aycanirican

Web uygulamaları konusunda araştırma ve geliştirme yapan Kor Bilişim, Core Server ile beraber kullanabileceğiniz tamamen yeni ve özgün bir JavaScript üreteci geliştirdi.

Lisp ile TILSIMLI ve Renkli Programlama: Lisperati

FZ

Tüm zamanların en renkli Common Lisp programlama kılavuzlarından Lisperati artık anadilimizde.

Söz konusu belge İstanbul Bilgi Üniversitesi Bilgisayar Bilimleri Bölümü öğrencisi Seda Çelebican tarafından Türk diline çevrildi. Belgenin Türk kültürüne uyarlanmasında ve genel editörlük işlemlerinde İstanbul Bilgi Üniversitesi eMBA Yazılım Geliştirme ekibinden Emre Sevinç emek harcadı. Bu süreçte çok titiz eleştirileri, geri beslemeleri ile bize yardımcı olan Bilkent Bilgisayar Mühendisliği bölümü öğrencilerinden Hayrettin Gürkök'e ve Lisp konusunda yardımcı olan Bülent Murtezaoğlu'na teşekkürü bir borç biliriz. Belgedeki hatalardan çevirmen ve editör sorumludur. Orjinal belgenin yazarı Dr. Conrad Barski hiçbir maddi hatadan ötürü sorumlu tutulamaz. Belgeyle ilgili tartışma ve her türlü soru için bu haberin altına yorum yazabilir, iletişim kurabilirsiniz.

Lisperati belgesindeki kodları denemek için hiçbir şey kurmanıza gerek yok. Belgede anlatıldığı gibi uzaktaki bir telnet servisine kolayca bağlanıp kodları hemen derleyebilirsiniz ancak bu konularla daha ciddi ilgileniyor ve kendi Lisp ortamınızı kurmak istiyorsanız daha önce FM'de yayınlanan Common Lisp Geliştirme Ortamı Kurulumu kılavuzundan faydalanabilirsiniz.

Güncelleme (2/5/2005): Kılavuzu PDF olarak hazırlayıp Ayhan Barış'a çok teşekkür ederiz.

newLISP

bk

Bu kadar Lispçinin gözünden kaçmış olabilir mi bilemiyorum ama ben bulamadım: newLISP for BSDs, GNU/LINUX, MacOS X, Solaris, Win32.

newLISP, yapay zekâ ve istatistik gerektiren alanlarda web uygulamaları ve diğer türden yazılımlar için geliştirilmiş genel amaçlı bir betik dilidir. FAQ belgesi ve Common Lisp ile Scheme'den farklılıkları daha detaylı bilgi vermektedir.

PL/scheme: PostgreSQL için Scheme

FZ

cs-lisp e-posta listesinde Volkan Yazıcı tarafından geliştirilen PL/scheme projesinin duyurusu bugün yapıldı.