精華區beta Programming 關於我們 聯絡資訊
※ 引述《taiwancat.bbs@ptt.cc (月季)》之銘言: > 不得不推一下pike! > 沒想到還有別人在接觸pike! > pike真的很好學 他是從LPC演變過來的 > 玩過mud的人學一定倍感親切! > pike程式碼簡單易懂 > 在他的一個範例裡 > 94行就寫出一個multi-thread的http server! > 他的推廣度一直不及python....我覺得很可惜 > 有興趣可以玩玩看!很好用的 聽到它是 LPC 演變過來的讓我很有興趣, 稍微看了一下,mixed 跟 mapping 還是存在, 不過我有幾個比較好奇的地方, 沒辦法馬上從它的 doc 看出來, 想請教一下。 1. Pike 是不是跟 LPC 一樣有一個常駐的 VM, 所有的 objects 會像是 processes 一樣常駐於 VM 內部? 是否每個程式檔被編譯載入後即是一個物件? 2. call_other operator 是否還存在於 Pike 中? 譬如寫 x->foo(a, b, c); 可以呼叫物件 x 中的 foo() 函式, 若 foo() 有三個參數 a、b、c,我寫 x->foo(a, b);, 是不是 c 可以自動被視為 undefined value? 3. 是否還有任意物件之間互相 shadow 的功能? 譬如 a 物件內部定義有 foo() 函式, 現在我臨時造出 b 物件(由跟 a 完全不相干的程式檔產生), 裡面也有一個 foo() 函式, 然後我讓 b 物件 shadow a 物件, 往後任何 a->foo() 這種呼叫均等同於 b->foo()? (LPC 時代沒有 class 的概念,所以都用物件這個名詞) 另外是不是也有 nomask 這種保留字可以防止 shadow? 4. 是否還有 this_object()、function owner 和 bind 的觀念? (1) 譬如目前程式是在物件 a 中執行,this_object() 會傳回 a。 (2) 由物件 a 中擷取出來的 function pointer,其 owner 為 a。 (3) 若物件 a 中定義有 foo() 這個函式,以 (: foo :) 獲得其指標, 是否能利用 f = bind((: foo :), b); 使 f 的 owner 被 bind 為 b? 此後執行 (*f)(a, b, c); 形同在 b 中執行 foo() 函式? (同時 f 指向的 foo() 函式中所有 this_object() 呼叫均傳回 b) 5. 是否還存在 virtual object 的用法? 以往 LPC 必須使用實際存在的程式檔產生物件, 但是 LPC 的 VM 有一個機制能在找不到該檔案時呼叫一個 master applies, 由該 master applies 依據檔名等資訊 clone 出適當的物件傳回, 而該物件會在之後視為由該不存在的程式檔所產生的。 6. 是不是還有 save_object() 這種函式, 可以將所有 nosave/non-static global variable 以 text form 存入檔案, 之後直接用 restore_object() 讀出以恢復物件狀態? 不好意思問這麼多問題, 因為這些都是目前我還會使用 LPC 的理由, 但是他們官方網頁沒有跟 LPC 的比較表。 我問的東西可能跟 LPC4 有差距, 因為我熟悉的是 LPC3 時代 branch 出去的 MudOS LPC。 -- Name: Tseng, Ling-hua E-mail Address: uranus@it.muds.net School: National Chung Cheng University Department: Computer Science and Information Engineering Researching: Porting GCC and Implementing VLIW instruction scheduler in GCC Homepage: https://it.muds.net/~uranus -- ╔═══╗ ┼────────────────────────╮ 狂狷 Origin:[ 狂 狷 年 少 ] whshs.cs.nccu.edu.tw ╰─╮ 年少 ┼╮ < IP:140.119.164.16 > ╰─╮ ╚╦═╦╝ From:218-171-138-13.dynamic.hinet.net ─╨─╨─ KGBBS 遨翔"BBS"的狂狷不馴;屬於年少的輕狂色彩 -- -- * Modify: tinlans 05/08/07 3:58:31 <218-171-138-13.dynamic.hinet.net>