Lisp ile TILSIMLI ve Renkli Programlama: Lisperati

0
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.

Görüşler

0
demolish
http://www.tldp.org/HOWTO/DOS-Win-to-Linux-HOWTO-11.html#ss11.7
In particular, using bash under DOS/Win is a whiff of fresh air.

zannederim yukarida bahsedilen etkiyi, diger programlama dilleri ile ugrasmak durumunda olup, lisp e bir sans verenlerde hissedecektir.

FM deki yogun propaganda sonucu bende, "yahu bu kadar cok sisirilen yeni bir balon mu, yoksa bir efsane mi" diyerek asagidaki kitabi okumaya basladim. kitap gayet hafif anlatimli ve hazmi kolay.*

http://www-2.cs.cmu.edu/~dst/LispBook/

* daha kitabi yeni yariladim, diger yarisida ilk yarisi gibimidir bilemiyorum.
0
bm
O kitap iyi kitap, tarziniza uyuyorsa iyi bir giris olur. (Touretzky enteresan adamdir ayrica, sayfasinda ilginc seyler bulabilirsiniz).

Kitaba soyle bir baktim, basildiginda belki makul olan ama simdi kafa karistirabilecek birsey gordum. 'Special function' diyor 'special form' yerine. 2005'te kimse special function demiyor, oturmus bir terminoloji var:

http://www.lispworks.com/documentation/HyperSpec/Body/26_glo_s.htm#special_form

Biz de tercume yaparken 'ozel form' diyoruz (en azindan benim bakabildigim yerler oyle olmali). Gorebildigim kadariyla kalani bugun de gecerli ve iyi. Kolay gelsin. Lisp calisan biri olarak Turkce dokuman projesi ile ilgili bir arzunuz varsa kutfen yazin.
0
demolish
gördüğüm kadarıyla lisp hakkında yığınla kaliteli yayın internette açık vaziyette. bunları türkçeye kazandırmak çok güzel olur fakat buna gücümüz yetermi bilemiyorum. çeviri çok zor ve zahmetli bir iş. kaldıki çeviri kitap ve belgeleri okuyarak anlamaya çalışmak, tabletlerle beslenip hayatta kalmaya benziyor. yani çevirileri okuyarak ihtiyacımızı karşılayabiliriz fakat bu pek doğal bir çözüm olmuyor. Paul Graham, David S. Touretzky, Peter Seibel gibi adamların ana dili türkçe olsaydı yazacakları kitaplar hazırda bulunan kitaplarından çok daha farklı olacaklardı diye düşünüyorum. bu sadece dil farkı değil, kültür farkıda çok önemli. mesela adam kitabın bir yerinde hoş bir espiri yapmış fakat türkçesinde aynı hoşluk yakalanamıyor. aynı şey türkçe belgeleri başka dillere çevirilirkende yaşanabilir. özetle, benim için çeviriden ziyade yerli Paul Graham, David S. Touretzky, Peter Seibel lerin yazdıkları daha faydalı olur. tabii yazarkende yabancı kaynaklarla köprüleri atmamaya dikkat etmek gerek, yani dipnotta ben böyle dedim ama yabancı kaynaklarda buna bu şekilde rastlarsınız diye belirtilmeli. kimbilir belki ufak tefek yazılanlar birgün derlenip biraraya getirilerek hacimli bir kitap haline gelebilir.
0
bm
bunları türkçeye kazandırmak çok güzel olur fakat buna gücümüz yetermi bilemiyorum. çeviri çok zor ve zahmetli bir iş

Isi iyi yapmak kolay degil elbette, ama maksada hizmet edecek kadarini yapmaya (hevesli sayisi arttigi goz onune alinirsa) gucumuz yeter o kadar atla deve degil. Ortaya cikan dokumanlar sifira yakin maliyet ve gonullu emekle cikti. Kimse oturdugu yerden bile kalkmadi bu is icin,

kaldıki çeviri kitap ve belgeleri okuyarak anlamaya çalışmak, tabletlerle beslenip hayatta kalmaya benziyor.

Benim arzum yabanci dildeki dokumanlari anlamasi icin hatiri sayilir derecede gayret etmesi gerekecek seviyedeki insanlara bu dokumanlarda bu gayrete degecek bilgiler oldugu, ne bilgisayar bilimlari alaninin ne programlamanin memlekette populer gozuken seylerden ibaret olmadigini hissettirmek. Ondan sonra yuruyen yurur, ama kaybin ve mahrumiyetin ne derece buyuk oldugunu anlamadan yurume karari vermek ve istegi hissetmek cok zor. Lisp bu konuda iyi bir arac, ama gayet tabi baska araclar da var ve farkli guruplar belki amaclarini soyledigim gibi gormeseler de ayni ise yarayacak dokumanlar uretiyorlar. Bu alanda bilgiye ulasmak bakimindan bu topraklarda dogmus olmak eskisi kadar buyuk talihsizlik degil artik. Bunun bu hale gelmesi cok cok yeni, meyvasini vermesi biraz zaman alacak.

yani çevirileri okuyarak ihtiyacımızı karşılayabiliriz fakat bu pek doğal bir çözüm olmuyor.

Dogal cozum, zaten tarif itibariyle bir avuc gonullunun digerleri icin birsey yapmasiyla ortusmuyor. Sayi arttikca cozum dogallassacaktir tabi, bunlar zaman meselesi. Memnun edici ara sonuc, kavramlara hakim insanlarin hyperpec'in 'glossary' kismini anlam kaybi veya cakismasi olmadan zorlama uydurmalara basvurmadan cevirebilecek duzeye gelmesi olabilir mesela.

(Kalan dediklerinize katiliyorum, diyecek birseyim yok. Tavsiyeniz bence yerinde. tesekkurler)

0
demolish
"Memnun edici ara sonuc, kavramlara hakim insanlarin hyperpec'in 'glossary' kismini anlam kaybi veya cakismasi olmadan zorlama uydurmalara basvurmadan cevirebilecek duzeye gelmesi olabilir mesela."

bence bu memnun edici ara sonuçtan çok daha fazlası olur. yani "fazlamesai.net/fmsozluk.php" bağlantısı altında yayınlanacak ve herkes tarafından kabul görecek bir bilişim sözlüğü bu memlekete yapılmış en büyük hizmetlerden biri olur.
0
FZ
Orjinal yazılar önemli buna hak veriyorum ama orjinal yazıları yazan insanların da önce bir başkasının eserlerini okuyarak feyz aldıklarını da hatırlamak lazım gelir diye düşünüyorum.

Gücümüz neye yeter? Valla aslında, düşündüğümüzden daha fazlasına ;-) Bu işlerin de bir ekonomisi var, çok küçücücük çabalarla somut şeyler üretildiğini, bunların maddi manevi karşılığının verildiğini gördük, bu küçük çevreyi 10 katına 50 katına çıkarmak atla deve değil, organizasyon meselesi. Yavaş yavaş bazı şeyler, fikirler, vs. oluşmaya başladı. Her şey gönüllü yapılmak, yaptırılmak durumunda da değil. Farklı modeller de söz konusu.

Ne kadar yararı olur sorusuna cevaben: Zararı olmadığı sürece ben buna devam edeceğim, akmasa damlar mantığı.
0
FZ
zannederim yukarida bahsedilen etkiyi, diger programlama dilleri ile ugrasmak durumunda olup, lisp'e bir sans verenlerde hissedecektir.

Bu etkiyi hissetmiş pek çok profesyonel programcı var:

http://alu.cliki.net/RtL%20Highlight%20Film

FM deki yogun propaganda sonucu bende, "yahu bu kadar cok sisirilen yeni bir balon mu, yoksa bir efsane mi"

FM bu konuda tek başına değil, dünyada da bir hareketlenme var, ABD'de Common Lisp ile ilgili bu yıl birkaç kitap birden çıkıyor filan.

diyerek asagidaki kitabi okumaya basladim. kitap gayet hafif anlatimli ve hazmi kolay.*

http://www-2.cs.cmu.edu/~dst/LispBook/


Touretzky ile ilgili daha detaylı yorum yazabilecekler elbet vardır ancak benim tavsiyem Common Lisp'i gerçekten somut iş güç yapmak için kullanmak isteyenler var ise lütfen hala tamamı Internet'te kamuya açık iken Seibel'in Practical Lisp Programming kitabını bilgisayarlarına indirsinler:

http://www.gigamonkeys.com/book/

Kitap bir iki ay içinde basılacak ve satışlar başlayacak, o zaman Internet'ten kaldırılabilir.

Lisp ile pratik iş güç yapmak derken kast ettiğim

- Bir birim test çatısı kurmak
- Spam e-posta süzgeci yazmak
- MP3 ID3 parser yazmak
- MP3 veritabanı ve browser'ı yazmak
- Shoutcast server yazmak
- SQL tarzı bir mini-dil yazmak

gibi şeyler. Bu arada belirteyim ki kitabın yazarı Seibel sadece Lisp konusunda değil mesela Java gibi bir dil konusunda da gayet bilgili, Weblogic'te çalışmış deneyimli bir yazılımcı, dolayısı ile yaptığı kıyaslamalar gayet anlamlı, fanatizmden, balondan filan uzak.

Bu arada Barski'nin Lisp ile TILSIMlı programlama kılavuzu pek ilgi çekmedi herhalde, ya da insanlar yorum yazmaya tenezzül etmedi.
0
bm
Bu arada Barski'nin Lisp ile TILSIMlı programlama kılavuzu pek ilgi çekmedi herhalde, ya da insanlar yorum yazmaya tenezzül etmedi.

Ama bakin birileri merak edip birseyler yapmaya baslamis. Insanlar "bize lispten bahsedin" demiyorlardi ki yeni bir lispli yazi cikti diye derhal gidip okusunlar? Cogunlukla "java mi? php mi? c# mi?" yok "windows mu? linux mu?" tipi eksenlerde tartisma olan, bilgilendirme cabalarinin da o konularda oldugu bir ortama hepsinden eski ve hicbiriyle alakasi olmayan bir kulturden gelen bir dil ve tarzin varligini haber vermek istedik. Haber yerine gitmis goruldugu gibi.

Yurt disindaki posta listelerine bile buralarla ilgili link verdigimizde olusan trafikle burada en cok okunan yazilarin aldigi trafik karsilastirilirsa henuz okuyucu sayisinin bol bol yorum yaratacak miktara varmadigini dusunmemiz makul. Az sayida insana istemedikleri birseyi anlattigimiz zaman derhal klavyeye sarilip konusmalarini beklememeliyiz. (Boyle bir 'heyecanlandirma' marifetimiz olsa zaten hayatimizi o marifeti kullanarak kazanmamiz daha akilci olurdu).
0
FZ
Meraklısına:

http://www.ileriseviye.org/Makale/lisperati-tr/code.htm

adresinde oyunun kaynak kodu, renklendirilmiş, dinamik parantez eşlemeli ve Lisp komutlarının açıklaması HyperSpec'e linkli şekilde var. Bu HTML çıktısı yine bir Lisp programı ile üretildi. İstatistiklere baktığımda 24 saat içinde 150yi aşkın hit alan Lisperati ana sayfasına kıyasla devamında yer alan kaynak kod sayfasının sadece 20 kere ziyaret edildiği görülüyor ;-)

(Kaç kişinin Franz Lisp telnet sunucusuna eriştiğini ise bilemiyoruz tabii ya da kaç kişinin kendi Lisp ortamında deneme yaptığını).
0
Nightwalker
Öncelikle ellerinize sağlık. Emeği geçen herkesi tebrik ederim. Lisp konusunda daha önce ingilizce bir kaç öğretici belgeye bakıp korkmamın ardından bu belge çok iyi oldu. Henüz tamamını okumamış olmama rağmen tarz çok güzel ve eğlenceli.

Bu arada en sonda yer alan şu kımı tam olarak anlayamadım.

"Öncelikle şunu belirtelim, Lisp kodu çoğunlukla derlenmiş olarak yorumlanır, çoğunlukla aynı programın içinde... Bu yüzdendir ki Lisp ortamları genelde derleyici olarak değil gerçekleştirme ortamı olarak kullanılır, uygulamaya dahil edilir.

(Aslında yorumlanan Lisp kodu bile önce byte koduna derlenir ama bu başka bir hikaye..)"


Burda analtılmak isteneni biraz daha açaıklayabilir misiniz ?
0
bm
Derlenmis dillerde alisilagelen sekil asagi yukari su: once bir program metni yazariz, bir veya bircok dosya olur, sonra bir derleyiciye o dosyalari veririz, onlari yutar makinenin anlayabilecegi ve linkerin birklestirebilecegi hale cevirir, linker bunlari alir atifta bulunulan sisteme ait alt programlara baglantilandirir, isletim sisteminin calistirabilecegi sekle konmus bir program haline getirir. (eksik var biliyorum ama onemli degil). Yani programlama tarzi derleyicinin her derleme eyleminde sifir bilgiyle baslayip bir takim derlenecek veya evvelce derlenmis parcalari kullanarak orataya birsey cikartmasina dayali.

Lisp (kullandiysaniz Smalltalk) vs. diller boyle degildir, derleyiciyle tumlesik bir 'gelistirme sistemi' olarak dusunulurler, ve bu tumlesme mesela C dili icin yapilan IDE'lerde oldugu gibi alrka planda apayri bir programi sifirdan cagirip dururken onyuzde bir tumlesme gostermek gibi degildir. Icinde derleyici olan 'sistemi' bir kere calistirirsiniz, onunla muhabbet ede ede kucuk parcalari eklersiniz, sistem sizin isinizi goren bir sistem haline gelir ve sonucta ortaya cikarttiginiz program sistemi de icerir (kullanilmayan parcalari silkeleyip atmak mumkun tabi ama soyut olarak durum boyle). Bu saka da degil, benim su anda kullandigim derleyici 12 gun evvel calistirdigim derleyici mesela. Eger makinelerini kapatmak zorunda kalmazlarsa bircok lispci de boyle calisir (kaldi ki 'dump etmek' de mumkun).

Bu iki paragraf 'uygulamaya dahil edilme' ve 'ayni programin icinde' kismini aciklamaya calisti. Simdi 'derlenmis olarak yorumlanir' kismini soyleyeyim. Bu benim tercumeyi kontrol ederken gozumden kacmis! Haklisiniz, iyi bir ifade degil ne dedigi de acik degil. Benim gunahim bu, ozur dilerim. Tam URL'i verirseniz bunu Barski mi boyle yazmis, biz mi 'ne diyoruz yahu' demeden cevirmisiz bakip duzeltiriz.

Genelde 'Common Lisp yorumlanarak mi yoksa derlenerek mi kullaniliyor'un cevabi, 'ikisi de mumkun, ikisini de yapan sistemler var, kisini ayni anda ve birbirinin icinde yapanlar da var, ama uygulamayi tamamen makine diline derlenmis olarak ortaya cikartmanin mumkun oldugu sistemler su anda cogunlukta.' Common Lisp standardi, ne gercel manada derleyici olmasini ne de yorumlayici olmasini gerektiriyor, stnadartta atifta bulunulan yorumlayici once derleyip sonra yorumlayan bir sistem olabildigi gibi (mesela FZ'nin bahsettigi sbcl boyledir), makine koduna derlemeden yorumlayan bir sistem de olabilir (mesela telnet edebildiginiz Franz/Allegro CL boyledir). Ayni sekilde bahsedilen derleyici de hicbirsey yapmiyor olabilir (ama derleme esnasinda olmasi sart kosulan bir takim kurallari uygulamasi lazim tabi), yahut makine dilinin biraz ustunde bir byte-coda'a derliyor olabilir. (Mesela sbcl ve allegro derleyicileri dogrudan mimarinin makine diline, clisp ise kendi byte-code'una derler).

0
Nightwalker
Icinde derleyici olan 'sistemi' bir kere calistirirsiniz, onunla muhabbet ede ede kucuk parcalari eklersiniz, sistem sizin isinizi goren bir sistem haline gelir ve sonucta ortaya cikarttiginiz program sistemi de icerir.


Evet şimdi anladım. Ve anlattıklarınız tek kelimeyle çok heyecan verici. Sanki bir Asimov romanı okuyor gibiyim.

Ancak ben başka bir konuyu da tartışmaya açmak istiyorum.

Lisp neden popüler olamadı ? Bir programla dilini popüler olması için mutlaka arkasında büyük şirketlerin desteği gerekmiyor bana göre. (bkz python)

Bu durumda lisp te eksik kalan yanı neydi ?
0
bm
Bu soruya kesin cevap verecek kadar o tarihe hakim degilim, ozellikle burada 'yok yaa, ben de o devri biliyorum uydurma' diyecek insanlar az oldugu icin de kendi gorusumu soylerken de ozellikle sadece bir gorus oldugunun ustune basmam lazim, ama soyleyeyim:

(1) Lisp bir zamanlar populerdi. 80'lerin sonuna kadar, muhasabe stok bankacilik vs.[1] ile ilgili pazar haric, CAD, planlama, YZ arastirmasi, dil arastirmasi vs. alanlarda hemen akla gelen ve bazi yerlerde (MIT, Xerox Parc'in bazi bolumleri) kullanilmamasi akla dahi getirilmeyen bir dildi.

(2) Eksik oldugu alanlar ev mikrobilgisyarlari (oyuncak lispler vardi tabi), PC'ler (yine oyuncak lispler) ve yeni buyumeye baslayan unixle gelen bilimsel is istayonlariydi. Bu uc sektor aldi yurudu sonra. Lisp buyuk makinelerde (MIT/ITS altinda MacLisp) yahut o zaman simdi bile zor bulacaginiz ozelliklere sahip 'Lisp Makinelerinde' [4] calisiyordu.

(3) Bunun uzerine klasik devlete pompalattirilmis bir ekonomik balonun (YZ arastirmalari) patlamasinda bir suclu olarak Lisp'in gosterilmesi bindi. Para kurudu, bazi insanlar Lisp'ten veba gibi korkmaya basladilar ve Lisp makineleri (bir olcude Symbolicsin kotu idare edilmesi yuzunden[2]) kayboldu.

(4) Common Lisp (ve direkt atalari) kucuk bir dil degil, derleyicinin kalitesine bagli olarak da C ile ulasilabilecek hizlara yaklasmadigi olabiliyor (ama gecmesi de mumkun onu ayrica anlatirim). Lisp makinelerini kullananlar Sun vs. workstationlara fiyat avantaji yuzunden gecik yaptiklarinda ne o 4-8Mb hafizalar ne, NFS uzerinden swap yapmak ne o zamanki Lisp makinesi CPUlarindan o amac icin yavas kalan 680xx islemcileri Lispi performans acisindan cekici kilmadi. Insanlar minicik vi'yi acip cc calistirmayi, editiru dahi makineyi swap rejimine sokabilen Lisp ortamlari ile ugrasmaya tercih ettiler. [5]

(5) 90'larin ortasinda hersey degismeye besladi. Hafiza yeterince ucuzladi, PCler hizlandi, insanlar ofislerinde veya arastirma laboratuarlarinda uc bes sene evvel muazzam paralara bulabildiklari bilgisayar gucunu kredi kartlarina sigan paralarla alabilmeye basladilar. Asagi yukari orta halli bir ogrencinin (batida) satin alabilecegi PC'lerin unixi kaldiracak hale gelmeleriyle es zamanli olarak Linux ortaya cikti. Unix Lispleri (once AKCL (simdi GCL) sonra clisp cmucl vs.) insanlarin ev makinelerinde calisabilmeye basladi. Performansin eksik kaldigi durumlarin popularite baglaminda yarattigi problem kayboldu cunku insanlar perl, java, python gibi o zamanlar oldukca yavas olan dillere alisik ve/veya asik hale gelmislerdi zaten.

(6) Ve ok yine yukari bakmaya basladi. Bilimsel bir degeri olmayan ama en azindan artis oldugunu gorebileceginiz bir yer: http://alu.cliki.net/The%20RtLS%20by%20Switch%20Year

[1] http://www.bizrules.com/us/page/art_amexaa.htm

[2] http://en.wikipedia.org/wiki/Symbolics#Endgame

[3] neydi acaba? Herneyse, YZ sirketlerinin bir analizi:
http://www.sts.tu-harburg.de/~r.f.moeller/symbolics-info/ai-business.pdf

[4] http://www.andromeda.com/people/ddyer/lisp/

[5] 'Ancak yeteri kadar iyi' seylerin alternatiflerinin ustune cikmasi durumu var orada. Unix ve C'yi o donemin insanlari 'berbat ama tamamen ise yaramaz degil' seklinde taimlarlar. Ingilizce biliyorsaniz R. Gabriel bu konuda bir dizi eglenceli 'Worse is Better' bildirisi yazmistir http://www.dreamsongs.com/WorseIsBetter.html

Dedigim gibi, sadece bir gorus (burada aksam ne yesem derken (yani acken) aklima gelenler) bu yazdigim. Daha ciddi ve farkli cevap vermek mumkun, eger dil biliyorsaniz Google'da bir suru dokuman ve konusma var.
0
FZ
Bir anekdot:

Sene 2005, 4 yıldır Delphi, SQL, vs. kullanan (ve bir sürü ticari iş güç yapan) bir arkadaş ile 5 yıldır ASP, VBScript, JScript, SQL, T-SQL (ve bir miktar PHP, MySQL, Perl, vs.) kullanan (ve yine ticari bir sürü iş güç yapmış) iki arkadaş konuşmaktadır. Konu "şu OO programlama mevzularına baksak mı, bak sen Delphi'yi hala dümdüz bir dil gibi kullandığını oturup hiç de öyle class diagram filan yapmadığını söylüyorsun" gibisinden bir şeydir. Lisp heveslisi ASP'ci, Delphi'ci arkadaşına bir kitap [1] gösterir. 1988 yılında yazılmış bir kitap, kitapta şöyle bir laf vardır:

"Object oriented programming in Common Lisp has a long history"

Arkadaşlar birbirine bakar. Delphi'ci sorar:

- Kaç yılında yazıldı demiştin?

ASP'ci cevap verir:

- 1988

Ortalığı bir sessizlik kaplar ve Delphi'ci yine söze girer:

- Long history diyor olm, nasıl yani? Sene 1988. Yaklaşık 20 sene önce filan. Nesneye yönelik programlama, o dönemlerde, ticari olarak filan... Nasıl yani?

ASP'ci bakar ve:

- Valla bilmiyorum artık, öyle diyorsa öyledir herhalde, zaten bu Lisp camiasındaki adamlar biraz garip, herhangi bir yeniliğe (!) bakıp da şaşırdıklarını görmedim. Ya çok ukalalar, ya da bildikleri bir şey var. "O zaten bizde vardı, kısmen diğerlerinin de farkına varıp uygulaması iyi olmuş afferim onlara ve de günaydın" deyip duruyorlar. Biraz sinir bozucu öyle değil mi?

İki arkadaş sanki yukarıdan sakallı, kalın çerçeveli gözlüklü birilerinin onları izlediği gibi garip bir hisse kapılıp ürperirler [2]. Konuyu değiştirip sohbete dalar, o geceyi unuturlar. Hem zaten "generic fonksiyonlar"ın merkezde olduğu bir paradigmanın hakim olduğu OO programlama tarzı yeterince korkutucu, gizemli, gariptir. İnsanlar nokta operatörü ile gak.setGuk(gik.getGagak()) yazmaya alışmışlardır ve parantezlerin de bir haddi hududu vardır. Herkes haddini bilmelidir. Hem OO'suz da Delphi olabilmektedir, "yeterince iyi"dir. Programlar çalışmaktadır. İnsanlar mesai yapmaktadır. Çok fazla şikayetçi olan yoktur.

Kitap:

1- Object-Oriented Programming in Common Lisp: A Programmer's Guide to CLOS - Sonya A. Keene

http://www.amazon.com/exec/obidos/tg/detail/-/0201175894/


2- http://www.cafepress.com/cp/browse/Ne-25_pv-lispmeister.13896875_p-3_N-3530_bt-2
0
bm
Belki Keene daha o kitabi yazmadan Symbolics ekranlari buradan ulasabileceginiz filimlerdeki gibiydi:

http://lemonodor.com/archives/000441.html

Bunlarin birinde OO programlama ornegi de var ama simdi hangisi bilemiyorum. CLIM (Common Lisp Interface Manager) + CLOS (Common Lisp Object System) bir araya gelince nasil nesneleriniz otomatik olarak yapilabilecek isleri bilip kendilerini belli ediyorlar filan diye anlatiyor ve kodu gosteriyor olmasi
lazim. (Bu arada bu kismen McCLIM icin yazilmis listener'da
var, apt-get install cl-mcclim olsa gerek)

0
bm
Buldum o ifadeyi. Barski:

"First of all, Lisp code is often interpreted as well as compiled, often right within the same program..."

Tercumeyi tercumeye yatkin olanlara birakip, az once yazdigimin bunu acikladigini soyleyeyim. Yani kodu 'yorumlanma' veya 'derleme' seklinde kullanmak mumkun, ikisini ayni anda kullanmak da mumkun. Size bir ornek vereyim:

CL-USER> (defun kup (x) (* x x x))
KUP kup'u tanimladik
CL-USER> (kup 3)
27 kup'u islettik, bu soyut olarak kupun yorumlanmasi demek, sistem arkamizdan derlemis de olabilir tabi
CL-USER> (defun altinci-kuvvet (x) (* (kup x) (kup x)))
ALTINCI-KUVVET kup'u kullanan bir fonksyon tanimlayalim
CL-USER> (altinci-kuvvet 3)
729 yasasin oldu galiba
CL-USER> (compile 'kup) soyut anlamda kupu 'derle' dedik
KUP compile geriye 3 deger dondurdu merak eden icin specimiz [www.lispworks.com] var.
NIL
NIL
CL-USER> (altinci-kuvvet 3) altinci kuvvet hala yorumlaniyor ama kullandigi kup derlenmis!
729

(sistem lispworks (Linux) ama standart fonksyonlar kullandimiz icin cevaplar ayni olacaktir, bu arada diger sistemler baska detaylari bilgi icin verebilirler)
0
eoy
aslında sayın bm'nin bahsettiği şekilde programlamayı geçen yılki LKD şenliklerinde Chris Stephenson göstermişti sanki (yanlış hatırlamıyorsam). Lisp ile ilgili sunumda (sanırım scheme kullanıyordu) yaptıkları, yukarıdaki kodda olan şeylerdi diye hatırlıyorum. ama o "yorumlama ve derlenme şeklinde kullanılabilir" şeklinde açıklama yapmış mıydı hatırlamıyorum(o zamanlar şimdikinden daha az alakalıydım programlamayla), ama lisp ilginç gelmişti ve eğlenceli de bir sunumdu. ayrıca sunumun başında Mor Kitap'ı da göstermişti.

bu arada; sayın FZ ve bm, lisp konusundaki çabalarınızın boşa gittiğini sanmıyorum. yorum yazılmasa da benim gibiler (bilgisayardan okumaktan hoşlanmayanlar(en azından şimdilik)) gidip üniversite kütüphanelerini karıştırmışlardır.

0
bm
Ne guzel. Kolay gelsin.

CS'in bundan bahsetmemesi normal. Genelde bu devirde insanlar bu "yorumlayici mi derleyici mi" tipi sorularla ilgilenmiyorlar. Tercume lisp kaynaklarinda bu var cunku Lisp konusunda gercek disi 'yorumlandigi icin yavas' diye bir yaygin gorus vardi (TR'de bazi hocalar da hala bunu soyluyorlarmis duyduguma gore). Bu gorusun dayanagi Lisp ailesine mensup bir suru dil olmasi ve lispimsi diller icin yorumlayici yazmanin kolayligi ve zamaninda bir suru lispimsi dil olmasi[3] (ama derleyici de zor degil aslinda). Ana aile agacina mensup lispler icin (Lisp 1.5, franz lisp, maclisp, interlisp, zetalisp vs. ve sonunda standart Common Lisp) 60larin basindan beri [1] ustelik kendi dilinde yazilmis kendi-kendini derleyebilen derleyiciler yazilmistir [2]. Bu yanlis gorusun yayginligina kizan lispciler de hep bu derleyici isinden manasiz yerlerde bahsedip kafa karistiriyorlar iste (Barski kac yasinda bilmiyorum, belki o bu aliskanligi bilmeden edindi!).

[1] ftp://publications.ai.mit.edu/ai-publications/pdf/AIM-039.pdf

[2] Symbolics'in C Fortran filan icin olan derleyicileri de Lisple yazilmisti gayet tabi. Simdiki lisplerden SBCL bir derece daha ileri gidip hem kendi kendisini derliyor hem de herhangi bir standart uyumlu Common Lisp tarafinda derlenebilen bir derleyici olma amacini guduyor. Pratikte sistemin cekirdek ve libc'sine baglanmasi gerektigi icin SBCL dahi bir miktar C'li tutkal kullaniyor elbette. Lisp makineleri bastan asagi lisp olduklari icin onlarin boyle problemleri yoktu.

[3] Daha yakin zamanlarda yazilanlardan mesela sawfish pencere idarecisi boyle kendi yorumlanan lispini kullaniyor.
0
FZ
Chris Hoca'nın verdiği epey eğlenceli ve "a-aaa" nidalarına yol açan Scheme seminerleri yakında efsane olacak herhalde ;-)

Common Lisp değil, Scheme. Yine Lisp ailesinden bir dil. Scheme ile de pek çok şey öğrenmek mümkün ama Lisp, Scheme'e kıyasla çok daha büyük bir dil. Mor Kitap pek çok bakımdan önemli bir kitap ama Lisp ile pratik iş güç yapmak isteyenlere ısrarla ve inatla Seibel'in kitabını tavsiye ediyorum:

http://www.gigamonkeys.com/book/

Üniversite kütüphanelerine gelince, ilk aklıma gelenler arasında İTÜ ve Bilgi'nin kütüphaneleri iyi görünüyor Lisp konusunda (Bilgi'ninki biraz daha iyi):

http://library.bilgi.edu.tr/search/...

http://divit.library.itu.edu.tr/...

http://divit.library.itu.edu.tr/...

Boğaziçi'ninki biraz daha zayıf:

http://seyhan.library.boun.edu.tr/search/...

Bu arada bugün Boğaziçi'nin üniversite kitapçısında birkaç Mor Kitap kopyası gördüm, herhalde oradaki derslerden birinde bazı hocalar Scheme filan anlatıyor olmalı çünkü satılmayacak kitabı getirmez o kitapçı.

Bilgi Üniversitesi'nde de Scheme kullanılarak temel programlama derslerinden biri veriliyor MIT'de olduğu gibi.

İnsanları biraz heveslendirebiliyor, bakış açılarını bir nebze genişletebiliyorsak ne mutlu bize.
0
ayhanbaris
merhaba;
faydali bir dokuman olmus.
dokumani pdf e cevirdim...
print edilmesi ve dagitilmasi kolay olur boylece aramızdan bikac lisp ci daha cikabilir :)

dokumani ceviren arkadaşa cok tşk.

2.16mb http://www.abkod.com/lisp_doc.pdf
0
FZ
Teşekkürler, çok güzel olmuş PDF hali de. Hemen yazının kendisine hemen ilgili .pdf linkini veriyorum.
Görüş belirtmek için giriş yapın...

İlgili Yazılar

Google AI Yarışması Birincisi: Gábor Melis (ve Common Lisp)

FZ

Bir süreliğine dünyanın çeşitli yerlerindeki programcılara uykusuz ve adrenalin dolu geceler geçirten, eğlendirirken öğreten ve sosyal içerikli mesajlar içeren Google AI yani Google Yapay Zeka programlama yarışmasının birincisi Macar programcı Gábor Melis oldu. Melis yarışmayı Common Lisp dilinde geliştirdiği sistem ile kazandı.

Core Kaynak Kod Ağacı Yeri Güncellemesi

eevrim

Merhaba,

Core-serveR Common-Lisp repolarının yeri değişti. Lütfen bağlantılarınızı güncelleyiniz.

Tüm kaynak kod ağacı: http://labs.core.gen.tr/repos/

Core-serveR Kurulum Betiği: http://labs.core.gen.tr/repos/core-server-installer-latest.tar.gz

stumpwm: Lisp ile minimalist pencere yöneticisi

FZ

stumpwm GNU/Linux ve UNIX türevleri için minimalist bir pencere yöneticisi ve başlangıç noktası şöyle tanıtılıyor: "StumpWM, programcılarının C ile yazılmış ratpoison'dan kaynaklanan hayalkırıklıkları sonucunda ortaya çıktı. ratpoison kullanmaya başladıktan kısa bir süre sonra fark ettik ki sisteme lispimsi emacs tarzı özellikler katıp duruyorduk. C-t : ile devreye giren bir REPL, kancalar ve gittikçe büyüyen bir Common Lisp alt kümesi.

Açık olan şuydu ki ihtiyaç duyduğumuz şey zırt pırt yeniden durdurup başlatmamıza bizi zorlamayan, kolayca hack edilebilir ve özelleştirme imkanı sunan, sıfırdan Lisp ile yazılmış bir pencere yöneticisi idi."

stumpwm ile ilgili eğlenceli bir videoyu burada izleyebilirsiniz.

trendalicious: Trendy del.icio.us, CafeSpot

FZ

trendalicious, bir sosyal "bookmark"lama servisi olan del.icio.us için geliştirilmiş olan ve gerçek zamanlı web sitesi popülaritesini ölçüp yansıtan bir sistem. Son 60 dakika içinde en az iki kişi tarafından yollanmış URLler görüntüleniyor ve bunlar da güncel URL mesajlarının toplam sayısına göre derecelendiriliyorlar.

trendalicious'u yapan Will Glozer, aynı zamanda CafeSpot'un da programcısı. Kendisi ile yapılan bir röportajı buradan okumak mümkün. CafeSpot'un development blog'u da işin perde arkasını yansıtıyor.

Bu güncel, ilginç ve popüler web siteleri hangi platform ve dil ile mi hazırlanmış? Güzel bir soru... ;-) (ve daha güzel bir cevap!)

Kaynak: Planet Lisp, Lemonodor.

Diyelim Ki Elimizde Nesneye Yönelimli Bir Dil Yok - Alice Nesneler Diyarında

FZ

Elinizdeki programlama dilinde nesneye yönelimli (OO - Object Oriented) programlama imkanı olmasa idi ne yapardınız? İki seçenekten biri gelirdi aklınıza herhalde:
  1. OO desteği veren bir dil kullanmaya başlamak.
  2. Elinizdeki dile OO desteği katmak için uğraşmak.
Bu kısa yazıda Peter Norvig'in PAIP (Paradigms of Artificial Intelligence Programming Case Studies in Common Lisp) kitabının 13. bölümündeki birkaç kısa örnekten yola çıkarak "eğer Common Lisp dilinde CLOS (Common Lisp Object System) gibi bir şey olmasaydı bunu nasıl gerçekleştirebilirdik?" sorusunun cevabının ilk bölümüne göz atacağız.