>>>>> "VY" == Volkan YAZICI <[EMAIL PROTECTED]> writes:
VY> Ne yaptığıma örnek vermem gerekirse, geçen bir projenin
VY> (PostgreSQL intarray contrib modülü) algoritmalarında minor
VY> optimizasyonlarda bulundum. Fakat bunları test etmek için
VY> örnek veri uzayı oluşturmam gerekti. Bunun için elemanları
VY> belirli bir dizinin tüm kombinasyonlarını oluşturup içinden
VY> rastgele dizi alımında bulunacaktım. Ama konu uzadıkça
VY> uzadı. İlkokul permutasyon alma yöntemleri ile geliştirdiğim
VY> algoritmalar, 8 elemanlı diziye gelindiğinde dakikalar
VY> alıyordu. Velhasıl kelam Einstein indisi denen hede hödö bir
VY> yöntem ile permutasyonu hızlıca almayı başardım Scheme
VY> ile. Ama şunu da söyleyeyim ki, Scheme'den önce Bash ve Python
VY> ile de cebelleştim. Onlarda ya istediğimi yapamadım ya da hem
VY> kod yazımı, hem de execution çok uzun sürdü. (İnanır mısınız,
VY> sırf bu test işi, yazdığım yamadan daha çok zamanımı aldı. Bir
VY> ara acaba yamayı göndermesem mi bile dedim.)
Permütasyon dillerin farkli paradigmalarini en güzel gösteren
problemlerden biridir.
Bilgi Universitesi'ndeki Lisp toplantilarindan birini yapmadan önce
Java calismis ögrencilerden birinden bir dizinin tüm permütasyonlarini
üreten bir Java programi yazmasini ve test etmesini istemistim.
Toplanti zamani geldiginde koda baktik, düzgün calisiyordu yaklasik
30 satir kadar filandi, ic ice bazi döngüler iceriyordu, bir bakista
permütasyon kodunu anlamak pek de kolay degildi.
Sonra Common Lisp ile yazilmis örnek bir permütasyon üretme fonksiyonuna
baktik, hatirladigim kadari ile 5-6 satir idi, bir iki yorum satiri
ile birlikte, dogal dilde tarif edilen permütasyon isleminin nerede
ise birebir koda dönüstürülmüs hali gibiydi.
Farkli bir dilden örnek verecek olursak, deklaratif programlamayi
yansitan dillerden biri olan Prolog diliyle ise permütasyonu iki
üc satirda ifade edersiniz.
Lakin su var, imperatif paradigmayla kod yazmaya cok alistiniz mi
Lisp'te yahut Prolog'da o kisacik kodu akil etmekte cok güclük
cekebiliyorsunuz cünkü kafanizda cok güclü bazi düsünme kaliplari
olusuyor, sonra o kisa kodu görünce eksik oldugunu filan zannediyorsunuz
birkac dakika bakinca "evet permütasyonun tanimi tabii ki böyle"
diyorsunuz. Tanimi... nasil yapilacagi nerede?
Güzel soru degil mi? ;-)
VY> gelince bu olaya çok ciddi bir giriş yapacağım; en azından
VY> dağarcığımız oluşsun." zihniyeti ile mesajları okuyordum. Ama
VY> dün yaşadığım çok enteresan bir olayı da anlatmak isterim:
VY> irc.freenode.net'teki #scheme kanalında bir soru sordum, pek
VY> bir cevap gelmedi. Ee ben de hali ile neyse sonra bakarım
VY> deyip, kanaldan çıktım. 30 saniye sonra özelden bir mesaj:
VY> "Sen bir soru sormuşsun, yeni okudum. Olayı şöyle, şöyle
VY> çözebilirsin." Ben de çok sevindim, çok teşekkür ederim falan
VY> dedim. Adamın son mesajı şu oldu: "Bak #scheme kanalında soru
VY> sormaktan çekinme. Gel yine istediğin zaman istediğin soruyu
VY> sor..." Biliyorum çok uç bir örnek oldu, ama olay çok hoşuma
VY> gitti size de aktarmak istedim. Ben herkesten böyle sevecen
VY> bir tavır beklemiyorum fakat Lisp e-posta listelerinin ve
VY> kanallarının da yeni başlayanlara karşı biraz sert davrandığı
VY> aşikar. Yani her iki ortamı şöyle kabaca değerlendirecek
VY> olursam, Scheme tarafındakileri insan kendine daha yakın
VY> buluyor, ama Lisp tarafında olay bu kadar pembe değil.
Enteresan, benim deneyimlerim hic öyle demiyor, #lisp'te bir
soru sordum mu cözümü ve daha fazlasini benim beynime iyice
kazimadan, cakmadan birakmiyorlar, acI cektiriyor (ögret bana
usta tadinda acI cekme ;-). Benzer sey comp.lang.lisp icin de
gecerli "filanca isi kastim kastim yapamadim, buyrun benim
spagetti kodu, nasil yapacagim bunu yahu" dediginizde saat
farki sagolsun mesela sabahin 4'ünde cok saglam cevaplar
geliyor. Cevaptan fazlasini ögrenebiliyorsunuz birkac saat
icinde. Nerede bir üniversite ortami gibi diyebilirim ve Türkiye'deki
bazi üniversiteleri düsündügümde, bir üniversite ortamindan
cok daha saglam ve detayli bilgi veriyor!
VY> ... En basitinden, yukarıdaki adresi ben ilk defa sizden
VY> duyuyorum. Böyle bir arşivin konu ile ilgilenenler için bu
VY> şekilde keşfedilmesi biraz enteresan değil mi?
>> Dogru. O arsivi 90larin basinda Lisp/Yapay Zeka ile
>> ilgilenmis insanlar hatirlarlar ancak. Bir de oradaki cok
>> seyin lisansi tam belli degildir yanlis hatirlamiyorsam.
VY> Bence doğru katagorize edilip merkezi bir yerde toplanmış bir
VY> Lisp portalı "Yeme de yanında yat!" kıvamında olurdu.
http://www.cliki.net/index
http://common-lisp.net/
VY> Kendi fikrimi desteklemem gerekirse, hemen şu şekilde cevap
VY> verirdim: «Popüler dillerin kütüphane dökümantasyonu artık bir
VY> çok BSD ve Linux dağıtımı ile öntanımlı olarak gelirken, Lisp
VY> için ya hede hödö adresine gidip bir döküman indirmeniz
VY> gerekiyor ya da evvelden emacs ve lisp tecrübeniz olup olayı
VY> emacs'in içine entegre etmeniz gerekiyor. Yani ne
VY> dökümantasyon herkesin aklına ilk gelebilecek bir sitede
VY> saklanıyor, ne de işletim sistemi ile tek bir paket altında
VY> çok kolay ulaşılabilecek şekilde geliyor.»
Bu dogru degil.
En popüler GNU/Linux dagitimlarindan biri olan (programci dostu)
Debian GNU/Linux kullaniyorsaniz temel Common Lisp dokümantasyonu
tek komutla sisteme kurulur:
apt-get install hyperspec
yahut
aptitude install hyperspec
Böylece Internet'e bir daha dokümantasyon icin baglanmaniza gerek
kalmaz.
Peki bunu nasil ögreneceksiniz? Cok basit, tek bir kez
sormaniz yeterli, gördügünüz gibi (insanlar analarinin karnindan
PHP ve Python dokümantasyonlarinin adreslerini bilerek dogmuyorlar
degil mi ;-)
--
Emre Sevinc
eMBA Software Developer Actively engaged in:
http:www.bilgi.edu.tr http://ileriseviye.org
http://www.bilgi.edu.tr http://fazlamesai.net
Cognitive Science Student http://cazci.com
http://www.cogsci.boun.edu.tr
_______________________________________________
cs-lisp mailing list
[email protected]
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp