Thread overview
lazy de gidici olabilir
December 06, 2009

D.ershane'ye biraz erken başladığımı düşünmeye başladım. :) Yine de bu gelişmeleri canlı olarak izlemek zevkli...

Şimdi de 'lazy''yi atıp atmamayı tartışıyorlar:

http://www.digitalmars.com/webnews/newsgroups.php?art_group=digitalmars.D&article_id=103055

Orada tehlikelerinden de bahsediyorlar. Örneğin 'foo''nun parametresinin tembel olduğunu unutan birisi onu şöyle çağırabilir:

   foo(birinci_adım());
   ikinci_adım();

Çağıran unuttuğu için, işlemin birinci adımı işletilmeden ikincisine geçilebilir.

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 07, 2009

Ben de lazy'yi nedense çok sevemedim diyorum demek ki bu yüzden sevememişim :-)

Şaka bir yana lazy'nin yaptığını biz kendimiz nasıl işleve yaptıracağız ? Sanki bana atmanında gereksiz gibi geliyor. İsteyen istediği gibi kullanır. Sistem programlama dilinde dilin sınırlarını birazda yazılımcının eline vermez mi ?

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]

December 07, 2009

Bir Haskell tanıtımını dinlemiştim. O dilde tembel değerlendirmeler bazı durumlarda çok yarar sağlar.

Örneğin elimizde çok uzun bir veri olsun (dinlediğim örnekteki program DNA zinciri üzerineydi). Bu verinin herhangi bir kıstasa göre ilk değerini istiyor olalım. Veriyi önce sıralamak gerekir.

"Hevesli" dillerde (örneğin C++) önce 'sırala(veri)' işlevi çağrılır ve sıralanan verinin ilk elemanı kullanılır. Geri kalanının sıralanması işi tamamen boşa gitmiştir.

Sıralama işlevinin qsort'ta olduğu gibi özyinelemeli olduğunu düşünürsek, bütün sıralama şu işlemlerden geçer:

  • büyükleri ilk yarıya, küçükleri son yarıya at (sırasız olarak)
  • bu işlemi 1 adet eleman kalana kadar alt yarılarda tekrarla

Sonunda bütün elemanlar sıralanmış olurlar. Ama eğer amacımız ilk eleman ise, hiçbir adımda sağ yarının hesaplanması gerekmez. Dizinin sağ tarafı sırasız da olsa, yalnızca ilk yarıları sıralamak en büyük olanı başa getirir.

İşte Haskell işlemleri hevesli bir şekilde hemen işletmek yerine, değer gerçekten kullanıldığında işletir. Dizinin ilki dışındaki elemanına dokunulmayınca da gereksiz sıralama işlemleri yürütülmez.

İşte tembel değerlendirmeler o gibi durumlarda işe yarayabilirler. :)

Alıntı (canalpay):

>

Şaka bir yana lazy'nin yaptığını biz kendimiz nasıl işleve yaptıracağız ? Sanki bana atmanında gereksiz gibi geliyor. İsteyen istediği gibi kullanır. Sistem programlama dilinde dilin sınırlarını birazda yazılımcının eline vermez mi ?

Haklısın: Dilin güvenliliği ve verdiği serbestlik güzel bir şekilde dengelenmeli...

Ayrıca hatırlatmak için, lazy'nin güzel bir örneği işlemler hakkında bir kenara bilgi yazarken ("loglarken") görülür. Walter Bright'ın makalesini şurada çevirmiştim:

http://ddili.org/makale/tembel_hesap.html

Ali

--
[ Bu gönderi, http://ddili.org/forum'dan dönüştürülmüştür. ]