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

Cevap