"julius sirait" <[EMAIL PROTECTED]> writes:
> 1. python bisa jalan di virtual machine ruby? maksudnya YARV? belum ada python implementation targetting YARV bytecode. > 2. ruby jalan di virtual machine python? belum ada ruby implementation targetting python VM bytecode. > virtual machine ruby yang default "kalau gak salah", traverse > abstract syntax tree. Maaf, de-tour sedikit dulu untuk comment kalimat di atas. Dalam context email ini, arti "virtual machine" ada dua: 1. Application Virtual Machine 2. Execution Environment (bagaimana terjemahkan ini?) Definisi #1 adalah definisi yang lebih sering dipakai dan dijelaskan di "Virtual Machine" entry di Wikipedia dan yang saya pakai untuk mengerti pertanyaan nomer satu anda. Definisi #2 dipakai oleh kalangan formal language analysis, dan tidak populer di luar kalangan tersebut. Penjelasan singkat execution environment: semua bahasa mempunyai spesifikasi. Ada yang specnya formal: C, Common Lisp, Scheme, Java; ada yang specnya di-define sebagai: apa saja yang official implementation does, seperti: ruby, perl. Spec ini merinci hukum2x di dunia di mana code2x akan dijalankan. Contoh: di dunia ruby, ada hukum yang bilang bahwa value yang di bind ke sebuah instance variable tidak akan berubah sampai bindingnya explicitly dirubah atau instancenya sudah tidak bisa diakses lagi (bisa di garbage collect). Atau kalau method call tanpa explicit receiver, bagaimana cara derive receivernya? Atau kalau method call dengan banyak argument, apakah ada order di mana argument2x itu di-evaluate? Execution environment menerapkan hukum2x di spec selagi menjalankan code. Jadinya codeya bisa buat berbagai macam asumsi seperti tidak mesti bolak2x bind the same value to the an instance variable karena takut akan berobah tiba2x tanpa alasan jelas. Analoginya, kita di dunia nyata bisa bergantung pada hukum2x alam seperti buah apel di bumi selalu jatuh ke bawah. Hukum2x seperti ini, biarpun trivial sekali, itu penting dan kita mungkin tidak bisa berfungsi kalau hukum alam berubah2x terus menerus. Seperti term "hacker" ada dua definisi: 1. orang yang tukang jebolin computer, 2. orang yang jago sekali di komputer. Definisi #1 yang lebih sering dipakai, dan semakin dikit orang yang tahu definisi #2. Biarpun definisi #2 jarang dipakai, saya bawa2x dia bukan karena mau bikin komplex pertanyaan Julius, tapi karena saya tidak jelas apa yang julius maksud dengan "virtual machine ruby". Di dalam sense definisi #1, tidak ada "virtual machine ruby yang default". Paling dekat adalah YARV. Tapi di kalimat berikutnya: > baru di yarv yang interpret bytecode yah? menunjukan bahwa YARV bukan yang dimaksud dengan "virtual machine ruby yang default". Jadinya definisi #2 kah yang dimaksud? Tapi interpreter, bukan execution environment, yang traverse syntax tree. Execution environment itu hal abstract. Interpreter sebuah bahasa implements execution environment buat bahasa itu. > baru di yarv yang interpret bytecode yah? YARV implementasi dari ruby virtual machine (def #2) dengan teknik virtual machine (def #1). Singkatnya, ya, YARV interprets byttecode. > Jadi kalau mau jalan kan python di virtual machine ruby default, > kudu terjemahkan ke abstract syntax tree nya ruby. Kalau maksudnya mau jalankan python di ruby1.8, harus bikin python compiler yang targetnya ruby code. Di ruby1.8, kamu gak bisa modifikasi AST secara langsung. > bisa di check site ini: http://www.parrotcode.org/faq/ > > kalau inline beda lagi pertanyaannya. > python dan ruby dicampur2, trus jalan di virtual machine mana? Gak ngerti. Tentunya di parrot virtual machine, bukan? > tapi yang lebih menarik itu, pertanyaannya: kenapa pake jruby? apakah > karna performance? atau apa? Karena Java library. Pilihan scheme favourite saya adalah SISC karena dia diimplement dengan java jadinya saya bisa ada akses ke library java yang begitu variasi. JRuby juga menggunakan JVM threading yang kemungkinan besar memakai native threading di OS anda. Jadinya bisa take advantage of multiple CPUs. YS.

