Temel Bileşenlerin Kurulumu
Common Lisp programlarını düzenlemek için kullanabileceğiniz en güçlü editör Emacs'tır. GNU/Linux üzerinde en yaygın kullanılan Emacs olan GNU Emacs'ın bilgisayarınızda kurulu olup olmadığını test etmekle işe başlayalım. Komut satırında aşağıdaki komutu verdiğinizde:$ emacs --version
Şuna benzer bir çıktı alıyorsanız sisteminizde GNU Emacs yüklü demektir:
GNU Emacs 21.3.1 Copyright (C) 2002 Free Software Foundation, Inc. GNU Emacs comes with ABSOLUTELY NO WARRANTY. You may redistribute copies of Emacs under the terms of the GNU General Public License. For more information about these matters, see the file named COPYING.Tabii son sürüm Emacs kullanıyor olmanız şart değil, dolayısı ile sürüm numarası olarak 20.li bir sayı görürseniz özel bir şey yapmanıza gerek yok. Ancak eğer sisteminizde Emacs kurulu değilse ya da son sürümü istiyorsanız, root yetkilerine sahip olduktan sonra:
Yok eğer XEmacs tercih ediyor ve halihazırda XEmacs kullanıyorsanız benim bir şey dememe gerek yok zaten. Bu belgeyi yazarken Emacs ailesine ilk kez merhaba diyecek olan kişiler göz önünde bulundurulmuştur.
# apt-get install emacs21
(ya da komut satırı yerine Synaptic gibi bir grafik arayüz kullanarak) diyerek Emacs editörünün son sürümünü yükleyebilirsiniz.
Common Lisp (ve başka pek çok dilde) programlarken eliniz ayağınız olacak GNU Emacs editörünü sisteminize kurduktan sonra artık doğrudan Lisp'e yönelik paketlerin kurulumuna geçebiliriz:
# apt-get install cl-clx-sbcl Common Lisp ile X Window sistemi arasında bir tür köprü görevi gören bu paket kurulduktan hemen sonra size iki soru soracaktır. Kısa Lisp site ismi ve uzun Lisp site ismi. Şimdilik bunların bizim için önemi yok. Bunlara sisteminizi ve Lisp'i çağrıştıracak kısa birer isim yazıp geçebilirsiniz. Ardından Lisp'in diğer dillerle iletişim kurmasını sağlayacak olan "Universal Foreign Function Interface" paketini kuralım:
# apt-get install cl-uffi
Şimdi sıra geldi Common Lisp sistemimizin en büyük bileşenini yani Lisp derleyicisini kurmaya. Pek çok farklı Lisp derleyicisi var ve şimdilik bizim tercihimiz Steel Bank Common Lisp:
# apt-get install sbcl
Internet'ten kurulum yaptığınızı varsayarsak yukarıdaki komutun Lisp derleyicisini çekip sisteminize kurması birkaç dakika sürecektir.
Bu işlemden sonra Common Lisp ile karmaşık ve sofistike grafik uygulamalar geliştirmenize olanak sağlayan McCLIM paketini, örneklerini ve belgelerini kuracağız:
# apt-get install cl-mcclim cl-mcclim-doc cl-mcclim-examples Ve temel bileşenler listesinin bu aşamasında metin işleme konularında bize yardımcı olacak RegExp yani Düzenli İfadeler ile ilgili Lisp paketini yükleyelim:
# apt-get install cl-ppcre
Lisp Dokümantasyanu: Hyperspec ve CLTL2
Sağlam bir başvuru kaynağı olmadan, ciddi bir referans olmadan bir dile tamamiyle hakim olmak mümkün değildir. Bu kaynak içinde ne kadar çok çapraz bağlantı taşıyorsa o kadar iyidir. Kaynak ne kadar güzel örnekler sunuyor ve derinlemesine dili tarif ediyor, dolayısı ile tanımlıyorsa sizin işinize o kadar çok yarar.Common Lisp için en önemli iki kaynak Hyperspec ve CLTL2 isimli belgelerdir. "Common Lisp The Language, 2nd edition" Lisp'e dair bulabileceğiniz en detaylı ve hacimli eser olup açık olarak Internet'te kamuya sunulmuştur. Hem Hyperspec referansına hem de CLTL2'ye Internet erişmeniz mümkündür ancak bunların bilgisayarınızda durmasının bir sakıncası yoktur, böylece gereksiz yere bantgenişliğimizden de çalmamış oluruz Lisp çalışırken:
# apt-get install cltl
# apt-get install hyperspec
Bu aşamada Debian kullanıcıları biraz şaşırabilir çünkü Debian paketi gibi görünen cltl ve hyperspec aslında Debian yazılım deposunda değil farklı bir yerde barındırılmaktadır dolayısı ile sisteminiz size bu kaynakları Internet çekmeyi isteyip istemediğinizi sorduğunda şaşırmayın. Evet deyerek devam edin. Birkaç dakika içinde Lisp ile ilgili en önemli iki kaynak bilgisayarınıza uygun şekilde kurulmuş olacaktır.
SLIME: Superior Lisp Interaction Mode for Emacs
Sıra geldi Emacs ile Lisp derleyicimiz/yorumlayıcımız SBCL arasında iletişim kuracak olan SLIME'ı kurmaya. SLIME ile Emacs'ın gücüne güç katmış olacaksınız Lisp programlama bağlamında. Tam teşekküllü bir Common Lisp IDE (Integrated Development Environment) sistemine sahip olmaya bir adım daha yaklaşmak için SLIME'ı resmi web sitesinden tar.gz dosyası olarak çekebileceğiniz gibi eğer son sürüm kullanmayı sevenlerdenseniz SLIME geliştiricilerinin en son sundukları paketi CVS'ten çekebilirsiniz kolayca. Bu arada, artık apt-get ile işimiz kalmadığı için root kullanıcısı olmaktan çıkabilir ve normal kullanıcı olarak devam edebilirsiniz. Tavsiyem kendi ev dizininizde olmanız, yani /home/kullanici-ismi dizini:$ export CVSROOT=:pserver:anonymous@common-lisp.net:/project/slime/cvsroot
komutu ile hangi CVS sunucusuna bağlanacağımızı belirtiyoruz ve ardından:
$ cvs login her şey yolunda gitti ise SLIME CVS sunucusu bize parola soracaktır. Parola: anonymous ancak eğer herhangi bir hata mesajı verirse tekrar deneyin ve ne yazdığınıza dikkat edin. Büyük ihtimalle ikinci denemede (eğer CVS sunucusunda bir sorun ya da yavaşlık yoksa) login işlemi gerçekleşir ve sistem size hiçbir mesaj vermeden sizi tekrar komut satırına döndürür. Artık SLIME'ın son sürümünü CVS üzerinden çekmeye hazırsınız:
$ cvs checkout slime
Kısa süre içinde ekranda dosya ve dizin isimleri kaymaya başlar ve ev dizininize slime dizini oluşturulur, gerekli dosyalar buraya yerleştirilir CVS tarafından. Eğer CVS ile problem yaşarsanız üzülmeyin, yukarıda da belirttiğim gibi her zaman için .tar.gz formatındaki dosyayı çekip açmak sureti ile kullanabilirsiniz.
SLIME'ı çektikten sonra yapmamız gereken küçük bir iki ayarlama kaldı. Eğer daha önce hiç kullanmadıysanız tüm zamanların en güçlü editörlerinden birini kullanmak için iyi bir fırsat! Ev dizininize geçmiştiniz değil mi? Öyleyse:
emacs .emacs yani .emacs isimli kişisel konfigürasyon dosyamızı Emacs editörünü kullanarak düzenleyeceğiz. Emacs karşınıza boş bir .emacs dosyası ile geldiğinde lütfen aşağıdaki satırları yazın:
(setq inferior-lisp-program "/usr/bin/sbcl")
(add-to-list 'load-path "/home/kullanici-ismi/slime")
(require 'slime)
(slime-setup)
kullanıcı-ismi yerine kendi kullanıcı isminizi yani login olurken, sisteme giriş yaparken kullandığınız ismi yazmayı ihmal etmeyin!
Şimdi .emacs dosyası içine bir şey yazdığımıza göre bunu kaydetmekte fayda var. Bunun için C-x C-s tuş kombinasyonunu kullanacaksınız. Yani bir eliniz Ctrl tuşuna basılı iken önce x tuşuna ve eliniz yine Ctrl'yi basılı tutuyorken s tuşuna basacaksınız. Emacs editörün en alt bölümündeki bilgi alanında size .emacs isimli dosyayı kaydettiğini söyleyecek.
Bir programa girmek kadar ondan düzgün şekilde çıkmasını bilmek de önemlidir. Emacs'tan çıkmak için C-x C-c tuş kombinasyonunu kullanmanız yeterli.
Emacs'tan çıktık ve şimdi tekrar girmemiz gerekiyor ancak bu sefer herhangi bir dosyayı düzenlemeyeceksiniz. Sadece Emacs'ı çalıştırmakla yetineceksiniz:
$ emacs Emacs karşımıza gelince artık SLIME'ı devreye sokmaya hazırız demektir:
M-x slime
Yukarıdaki ifadenin anlamı şudur: Emacs söz konusu olduğunda M- ile başlayan ifadeler, söz gelimi M-x ALT tuşu ile aynı anda basılacak tuşları gösterir, yani misal eliniz ALT tuşunda iken x tuşuna basacaksınız ve Emacs'in en alt bölümündeki bilgi satırına dikkat edeceksiniz, M-x yazdığını ve sizden bir şeyler yazmanızı beklediğini göreceksiniz ve şimdi slime yazıp ENTER bastığınızda Emacs içinde bazı dosya isimlerinin akıp gittiğini, arada "... compiling ..." gibi mesajlar verdiğini göreceksiniz. Aklınızda bulunsun eğer C- ya da M- şeklindeki Emacs kombinasyonlarında kafanız karışır yanlışlıkla bir şeylere yol açıp Emacs'i şikayet ederken ya da kafa karıştırıcı bazı şeyler sorarken bulursanız tek yapmanız gereken: C-g yani CTRL ve g tuşlarına basmak, bu içinde bulunduğunuz Emacs komutu durumundan sizi çıkaracaktır, sonra istediğiniz tuş kombinasyonunu tekrar deneyebilirsiniza. Eğer .emacs kişisel konfigürasyon dosyanızı düzenlerken ya da yukarıdaki SBCL paketini kurarken bir hata yapmadıysanız (oluşmadıysa) bir müddet Emacs'ın içinden SLIME dosyalarının, yani birtakım Lisp dosyalarının derlendiğini göreceksiniz. Bir süre işlem bitecek ve SLIME, Emacs ile entegre olarak çalışmaya hazır hale gelecektir.
Şimdi tekrar Emacs'tan çıkalım. Birkaç paragraf yukarı bakarsanız Emacs'tan hangi tuş kombinasyonu ile çıkılacağını hatırlarsınız.
İlk Common Lisp Programımızı Yazmaya Başlıyoruz
Artık ilk Lisp dosyamızı oluşturup ilk Lisp programlama denemelerimizi yapabiliriz. Bunun için komut satırından Emacs'a .lisp uzantılı bir dosyayı düzenlemek istediğimizi söylemek yeterli:emacs ilk.lisp
Şu anda Emacs penceresi size boş bir ilk.lisp dosyasının içini gösteriyor olmalı. Örnek bir Lisp programını yazmadan önce lütfen Emacs'in üst kısmındaki ana menüdeki Options menüsüne gidin (pekala, tamam, şimdi fare kullanabilirsiniz ;-) ve o menüden aşağıdaki menü maddelerini fare ile tıklamak sureti ile işaretleyin sırayla:
Syntax Highlighting
Active Region Highlighting
Paren Match Highlighting
Save Option
Ve tabii slime'ı devreye sokmak için M-x slime yapmayı ihmal etmiyoruz. Merak etmeyin, slime'ın devreye girmesi yukarıdaki gibi uzun sürmeyecek, o bir kereliğine olan bir şeydi, slime artık derlenmiş olduğu için anında karşınıza gelecek. Tabii bu sizi şaşırtabilir çünkü SLIME devreye girdiğinde bir anda Emacs'in görünen kısmını ele geçirecek ve siz de belki "e ama benim ilk.lisp dosyam nereye gitti, ben onu açmıştım az önce onun içine bir şeyler yazıp deneme yapacaktım" diyeceksiniz. Dosyanız bir yere gitmedi, Emacs'taki "buffer"lardan birinde duruyor. Yukarıdaki "Buffer" menüsünü kullanarak ya da daha kolayı C-x b basarak (DİKKAT! CTRL ile aynı anda x basın ve sonra elinizi klavyeden çekip b basın) ve ardından ENTER basarak ilk.lisp dosyanızı düzenlemeye başlayabilirsiniz.
ilk.lisp dosyasının içine şu iki satırı yazın:
(defvar *global-degisken*)
(setf *global-degisken* (+ 1 2))
Dosyayı kaydedin (nasıl yapacağınızı hatırlamak için birkaç paragraf yukarı bakın).
İlk Lisp programınızı derleyip test etmeye hazır mısınız? O halde C-x C-k tuş kombinasyonunu basın sıra ile. Yukarıdaki SLIME menüsüne bakacak olursanız bunun "Load and Compile File" işlemine karşılık geldiğini görürsünüz. Eğer her şey yolunda gitti ise Emacs penceresi ikiye bölünecektir, yukarıda dosyanız, aşağıda ise Lisp REPL (Read Evaluate Print Loop) ortamı. Alttaki bölümde dosyanızın hatasız derlendiğine dair bir mesaj alırsınız ve Lisp sizi
CL-USER>
yazısı ile bekler. Bir nevi Lisp komut satırı gibi düşünebilirsiniz. Programı test etmeniz için tek yapmaniz gereken CL-USER satırında *global-degisken* yazıp ENTER basmak, bir satır aşağıda 3 cevabını alıp tekrar Lisp komut satırına döndüyseniz her şey yolunda demektir. Eğer ikiye bölünmüş pencereler arasında geçiş yapmak isterseniz yani CL-USER'da iken bir üste çıkmak Lisp programınızı düzenlemeye devam etmek ya da Lisp programınızı düzenlerken Lisp komut satırının olduğu diğer pencereye inmek isterseniz pencereler arası geçiş tuş kombinasyonunu kullanabilirsiniz: C-x o
Artık Emacs ile nasıl bir Lisp dosyası oluşturabileceğinizi, SLIME'ı nasıl devreye sokacağınızı ve dosyanızın içine Lisp programları yazdıktan sonra nasıl derleyip test edebileceğinizi biliyorsunuz. Tebrikler!
Aşağıda gördüğünüz FLASH video, ne tür şeylerle karşı karşıya olduğunuza dair kabaca bir fikir vermesi için, deneyimli Lisp programcılarından ve FM üyelerinden BM tarafından hazırlanmıştır. Ackerman fonksiyonu ile oynarken Emacs'ın tuş kombinasyonlarından faydalanıp Lisp'e özgü bazı kıvrak şeyleri nasıl yaptığına (tek harekette imlecin bulunduğu yerden sonra gelen s-ifadesinin [s-expression] silinmesi gibi) dikkat edin. Emacs'ın otomatik parantez tamamlama, hizalama, vs. gibi özellikleri de ilginizi çekebilir. Lisp sözdizimi ile birleştiğinde bu editörün gücünü süreç içinde daha iyi anlayacaksınız. Tabii önemli olan gördüğünüz kodu anlamanızdan ziyade genel bir izlenime sahip olmanız.
Büyük Görüntülemek için tıklayın !
Emacs ile ilgili en temel bilgileri edinmek için yine Emacs'tan faydalanabilirsiniz, C-h t ile Emacs öğreticisi devreye girer ve size Emacs'ı uygulamalı olarak anlatır. Bu güçlü editörün sadece çok çok basit birkaç temel özelliğine ve kullanım şekline değindik şimdiye kadar. Emacs'a alıştıktan sonra editörün içinden çıkmadan Linux komut satırına erişmeniz, CVS ile kaynak kod kontrol depolarına bağlanıp diğer yazılımcılarla ortaklaşa ve kontrollü yazılım geliştirmeniz, e-posta yazıp okumanız, USENET haber gruplarını takip etmeniz, oyun oynamanız, doktora tezinizi yazmanız, müzik dinlemeniz ve bahçedeki bitkileri sulamanız mümkün.
Peki ya Lisp? Bu yazının amacı başlığından da anlaşılabileceği gibi Lisp öğretmek değil, Lisp öğrenmeye başlamanız için gerekli entegre yazılım geliştirme ortamını kurmanız için size yardımcı olmak. Lisp ile ilgili öğretici belgelerle yakında karşınıza çıkacağız, bizi izlemeye devam edin ;-)
2005-01-06
Emre "FZ" Sevinç
fz at ileriseviye.org
Bu kılavuzun orjinal adresi: ileriseviye.org sitesindedir.
*: Daha önce yayınlanmış ve Lisp ile ilgili FM yazıları:
Sıradışılıkla Kazanmak - Bir Common Lisp Başarı Öyküsü
Kent Pitman Lisp ve ötesi ile ilgili soruları yanıtladı - Bölüm 1
http://www.fazlamesai.net/modules.php?name=News&file=article&sid=2330
Mars Kurtarma Görevi Programlama Yarışması
Burada anlatılanları ve çok daha fazlasını görmek, deneyimli bir Lisp programıcısını SLIME'da kıvrak iş yaparken izlemek için lütfen aşağıdaki adreslerde belirtilmiş videoyu çekip izleyin:
http://common-lisp.net/movies/slime.torrent
http://common-lisp.net/movies/slime.mov