>>>>> "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
cs-lisp@cs.bilgi.edu.tr
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap