Merhaba, forcer'in lisp kodu sizce karisik mi? Sadece farkli: yerel degiskenleri baglama kodundan ve [1:] tarzi bir sintaksi olmamasindan kaynaklaniyor var olan gorsel farklilik (bir de parantezler :)) bence: size karmasiklik hissi veren nedir tam olarak?
Godel teoremi ile ilgili olarak: ben baska bir kitap buldum, teoremin birkac farkli ispatini veriyor. Ama bu pop kitap tarzi birsey degil. Turkcesi var mi bilmiyorum: "Godel's Incompleteness Theorem", Smullyan. Teknik, ama anlasilmaz degil: sadece sirali olarak okuma gerektiriyor. Fakat buyuk bir kitap degil. Bir bos vakit bulabilirsem okuyacagim. Teorem gerekli terimler tanimlandiktan sonra dikte edildiginde karisik degil: sanirim bu kadar soguk dus etkisi yapmasinin sebebi daha cok beklentilere aykiri olmasi (ozel rolativite gibi: kendisi zor degil, ama beklentiler ve zamanin bilimsel "dogmalariyla" celiski icinde --genel rolativite oldukca matematiksel, o farkli). Neyse, benim soyledigim kitapta Tarski'nin de bir ispati var: bu adamin mantikla ilgili bir arastirmasinin cebrik geometri ve oradan da baska bir devasa isim, Hormander, vasitasiyla kismi turev denklemlerinde bir varlik teoreminin ispatinda kullanildigini gormustum (beni aslinda sadece sonuncusu ilgilendiriyordu:)). Tam anlamiyla hayranlik vericiydi :). Saygilar, Nusret --- Volkan YAZICI <[EMAIL PROTECTED]> wrote: > Merhaba, > > Uzun zamandır Parrot (http://www.parrotcode.org/) > ile uÄraÅmak > istiyordum. Dün öÄleden sonra kalan vaktimde > biraz Parrot Assmebly'si > öÄrenip amcalarımın yazdıÄı VM'yi test edeyim > dedim. Ve tek kelime ile > hız açısından dibim düÅtü diyebilirim. > Projenin ana fikrini zaten çok > seviyordum ama beta aÅamasında olmasına raÄmen > bu kadar performans > göstereceÄi aklımın ucundan bile geçmezdi. Ne > PHP, ne Perl, ne de > Python. Åu ana kadar gördüÄüm en hızlı VM > idi. > > Hemen buna sistemi zorlayacak bir algoritma ile > giriÅeyim ve diÄer > VM'ler ile ufak bir baÅarım karÅılaÅtırması > yapayım dedim. Ne yapayım > diye düÅünürken aklıma kombinasyon alan bir > algoritma yazmak geldi. > > Gecenin bir yarısı O() mertebesi en düÅük > derecede nasıl kombinasyon > alabilirim diye kafa yorarken, aklımda bir yandan > da hep rekürsif bir > Åekilde bir önceki adımda hesaplanan deÄerlerin > tasarruf için ileri > adımlarda nasıl kullanılabileceÄi sorusu vardı. > > Velhasıl kelam, aÅaÄıdaki gibi bir yöntem ile > çıkageldim: > > +--------------------------------+ > | +------------------------+| > | | +----------------+|| > | | | +--------+||| > |1 |2 |3 |4 5|||| > | | | | 45|||| > | | | +--------+||| > | | | 34 35 ||| > | | | 345 ||| > | | +----------------+|| > | | 23 24 25 || > | | 245 || > | | 234 235 || > | | 2345 || > | +------------------------+| > | 12 13 14 15 | > | 145 | > | 134 135 | > | 1345 | > | 123 124 125 | > | 1245 | > | 1234 1235 | > | 12345 | > +--------------------------------+ > > Her seferinde, en iç kutuda hesaplanan deÄelerler > üzerine, sıradaki sayı > uygulanıyor. Ve bu Åekilde rekürsif olarak > ilerliyorsunuz. ÃÅenmedim > akÅam akÅam bir de buna basit bir Python kodu > döktüreyim dedim: > > def combinations(lst): > if len(lst) < 2: > return [(lst[0], )] > > curr = (lst[0], ) > combs = combinations(lst[1:]) > lst = [curr] + combs > for comb in combs: > lst.append(curr + comb) > > return lst > > Fakat farklı VM'leri ve dilleri test edeceÄim ya, > bunu Scheme ile > yazmazsam bir yerlerim ÅiÅerdi: > > (define combinations > ; Benim tarafımdan yazılan (belli deÄil mi?) > metod. > (lambda (lst) > (cond > ((< (length lst) 2) lst) > (else > (letrec ((curr (car lst)) > (combs (combinations (cdr lst))) > (iterate > (lambda (comb-lst) > (cond > ((null? comb-lst) '()) > (else > (append (list (append (list > curr) > (car > comb-lst))) > (iterate (cdr > comb-lst)))))))) > (append combs (list curr) (iterate > combs))))))) > > (define (combinations lst) > ; #scheme kanalından forcer'ın kodu. > (if (null? (cdr lst)) > (list lst) > (let ((curr (car lst)) > (combs (combinations (cdr lst)))) > (append (list (list curr)) > combs > (map (lambda (comb) > (cons curr comb)) > combs))))) > > Ama iÅin komik yanı, bunu yazmak için epey bir > kiÅi seferber olduk ve > bir çok baÅarısız denemeden sonra çalıÅır > bir Åeyler elde edilebildi. > (#lisp sakinlerinden de öneriler geldi. Ama > onlarınki de gene böyle > uzayıp giden parantezler silsilesiydi. En temiz > kodu sanırım forcer > yazdı.) > > Åimdi sorum Åu: Bu kadar ufak bir Python kodunun > gerçekten tam olarak > Lisp dialektlerindeki karÅılıÄı bu kadar > karmaÅık mı? Sizin algoritmanın > Lisp/Scheme ile yazımına ya da kendisine > getireceÄiniz öneriler > nelerdir? > > Yemekten sonra tatlı olarak da Åöyle bir Haskell > kodumuz mevcut: > > combinations [] = [[]] > combinations (x:xs) = combinations xs ++ [ x:xs' | > xs' <- combinations xs ] > > > İyi çalıÅmalar. > > P.S. GEB tartıÅmasına çok cevap yazmak istedim > ama zaman bulamadım. Onu > af buyurursanız Åimdi gidermek istiyorum: > Gödel'in tamsızlık > teoreminin insanlar tarafından anlaÅılabilir > bir açıklamasını > Nagel & Newman'ın Türkçeye çevrilmiÅ > Gödel Kanıtlaması kitabından > bulabilirsiniz. Bence GEB olayın hikaye > kısmını biraz fazla > sulandırmıÅ. Bana Hürriyet'in hafta sonu > eklerindeki bilim ile > ilgili sayfalarını anımsattı sık sık. Ama > iddaam Åudur: > Nagel & Newman'ı anlasanız bile nasıl > anladıÄınızı anlayamazsanız, > ya da neyi anladıÄınızı baÅka birine > mümkün deÄil anlatamazsınız. > > _______________________________________________ > cs-lisp mailing list > [email protected] > http://church.cs.bilgi.edu.tr/lcg > http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp > __________________________________________________ Do You Yahoo!? Tired of spam? Yahoo! Mail has the best spam protection around http://mail.yahoo.com _______________________________________________ cs-lisp mailing list [email protected] http://church.cs.bilgi.edu.tr/lcg http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

