>>>>> "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