23 Tem 2006 tarihinde [EMAIL PROTECTED] dedi ki:

> ---- Alphan Bayazit <[EMAIL PROTECTED]> demiş ki: 
>> Parrot assembly ile diğer dillerin vmlerini nasıl karşılaştırdınız
>> anlamadım.
>
> Ben Parrot Assembly'sini değil, normal bir programlama dilinden
> çevrildikten sonra oluşan bytecode'ların VM'ler tarafından
> çalıştırılmasını karşılaştırmak istemiştim. Şöyle ki,
>
> 1. Python betiğini Parrot'ın Python derleyicisi ile ilk önce Parrot
> bytecode'una (.pbc) çeviriyorsunuz.  2. Ardından Python'un kendi
> derleyicisi ile bir tane de Python bytecode'u (.pyc) için örnek
> oluşturuyorsunuz.  Not: Bytecode'ların oluşturulması esnasında
> herhangi bir optimizasyon seçeneği kullanılmıyor.  3. Sonra her bir
> bytecode'u kendi VM'i içinde çalıştırıyorsunuz.
>
> Ama velhasıl kelam, şu an için düzgün çalışan bir Parrot için Python
> derleyicisi bulamadım.

parrot'ın çıktığı günleri görebilirsek bol bol bulabiliriz sanıyorum

> Bunun dışında dediğiniz gibi, elbette kodu direk Parrot Assembly'si
> ile yazsaydık dediğiniz gibi C-Assembly karşılaştırması olurdu.
>
>> Muhtemelen daha hızlıdır ama derleme zamanını göreceli olarak ortadan
>> kaldırsanız bile derleyicilerin verimsizliğini hesaba katmanız
>> gerekir.
>
> Hiçbir Python2Parrot derleyicisinin Python'un kendi derleyicisi kadar
> verimli olamayacağı aşikar. Ama bu haldeyken bile bence VM'ler
> arasındaki teknoloji farkları performansa yansıyabilir. (Demek
> istediğim o ki, bence, eğer yukarıdaki 3 adımdan oluşan test
> gerçekleştirilebilseydi beklendiğinden epey farklı sonuçlar
> alınabilirdi.)

Alınsa iyi olur. Betik dillerin elele kol kola mutlu mesut çalışması çok
hoşuma gidecek olsa da şu andaki parrot felsefesi sun'ın yaptığı gibi
mümkün olduğunca çok "baytkod" şeklinde görünüyor. Felsefik olarak hoş
ama pratik olarak oldukça riskli bir bakış açısı. java'nın bütün
kütüphanelerinin java'da yazılmış olması taşınabilirlikten çok hantallık
getiriyor :) 

>
>> Aslında konu dışı ama kartezyen çarpmayla uğraşmak istemeyenler
>> alternatif olarak 0'dan 2^n-1'e kadar saydırıp 1 olan bitlere
>> karşılık gelen elemanları alabilir.
>
> Sanırım bu konuda Bülent Bey sizden biraz evvel davranmış. Yine de çok
> teşekkürler. 

evet ya öyle olmuş :) en azından okunaksız ruby örneği vermiş oldum

>
>> (Başka bir algoritma, başka bir dil (ruby))
>>
>> def komb (d)
>> (1...(2**d.size)).map do |i|  
>> d.values_at *(0...d.size).map {|j| (i[j]==1) ? j : nil}.compact
>> end
>> end
>>
>> ...
>> ocaml (biraz hileli):
>>
>> let rec comb = function [] -> [[]] 
>> | hd::tl -> let c=comb tl in (List.map (fun x -> hd::x) c) @ c
>>
>> ...  sml kodu da birazcık daha "güzel"dir ama işte ruhumuzu hıza
>> satıyoruz.
>
> Açıkcası onu da görmeyi çok isterdim.

fun comb [] = [[]] 
  | comb (hd::tl) = let 
        val c = comb tl in map (fn x=>hd::x) c @ c end 


İyi çalışmalar,

-- 
Üçüncüsü nasıl olacak bilemem ama dördüncü dünya savaşı taş ve
sopalarla olacaktır. (Nükleer silaha destek vermiş bir dahi)
http://www.bayazit.net/alphan/

_______________________________________________
cs-lisp mailing list
[email protected]
http://church.cs.bilgi.edu.tr/lcg
http://cs.bilgi.edu.tr/mailman/listinfo/cs-lisp

Cevap