[討論] 編譯問題

看板CSSE (電腦科學及軟體工程)作者 (讀者)時間20年前 (2005/02/21 07:53), 編輯推噓1(101)
留言2則, 1人參與, 最新討論串1/8 (看更多)
其實我一直想發展一個程式語言,源頭可上溯自 14 年前的類似 HTML+XML+PHP 的設計,但後來因為接案子,就搞起 GUI 和 OO 了。 後來常常覺得這又是一次與歷史錯身而過,不過就算當時想做, 大概也是做不出來的,或只能做出一個很醜陋的東西,歷史總是 有著它的規律的。何況從十八歲以來,我從來沒有安定的收入, 再多的想法,總是要受限於軟體專案或事業經營的問題,沒錢就 接案,有錢就創業,失敗又再來,這樣要做出什麼東西,也真是 天方夜譚。 到了四年前,又提出過一次簡化版的規劃,某企業還滿支持的, 給了我一個在中國的軟體團隊支援,可是溝通不良,兩岸的編程 觀念和很多東西都差異很大,最後又失敗了一次,當然,也是跟 我當時還是以經營企業為主有很大關係,那年頭有技術的人總是 被期望著做創業家的,何況那也的確算是我的本行,從十六歲就 開始準備的事情。 這幾天手上的案子大多了結或接近結束,不知道為什麼,又開始 想起這個程式語言的想法。傳言中,一個黑客有所謂的四不朽: 作業系統、程式語言、圖形使用者介面和電腦病毒。當然,能夠 做好其中兩項就算是偉大的黑客了 ─ 我大概是對此有點中毒了。 想了一想,現在實在是沒有做不出來的道理,古代要搞 symbol table 還算是個技術,但現在隨便做都有,如果不拚效能的話, 並沒有什麼不好做的。 不過,技術上還是有一些麻煩的地方,例如我現在想做的東西, 有四個層級混在一起: macro layer, script layer, op-code layer, native-code layer. 另外有 cross language 的特性, 也不是容易的東西。 直接寫執行檔編譯程式大概沒辦法,不過寫 compile to C++ 的 編譯程式則應該可以。 但是,我卻發現要處理 first-order function 還真是不容易, 想像中它可以編譯為 op-code 再執行,但是命名空間的衝突, 卻顯然不是那麼容易處理,如果用字串來找尋函數和變數,那樣 效率就跟 script 相差無幾了,但要怎樣才能不用,這就有一點 讓人感到頭腦發昏了。 用 C++-like 表示法來看就可以知道了: struct A { void f() { ... } void g(void t()) { t(); } }; void f() { ... } void g(void t()) { t(); } void main() { A a; void b() = { f(); } g(b); // 執行 f() a.g(b); // 執行 A::f() 還是 f() ?? } 也就是說,恐怕免不了要製作一套很麻煩的機制,才能有效處理 這樣的問題。 如果像上例,預先知道 b() 的內容,當然還簡單一些,但是還得 考慮到 script 的狀況呢。唉唉。 或者還有什麼好的辦法嗎? -- ※ 編輯: reader 來自: 61.222.173.26 (02/21 10:19)

61.62.49.43 02/21, , 1F
執行的應該是f()吧@@
61.62.49.43 02/21, 1F

61.62.49.43 02/21, , 2F
不是已經將function pointor傳進去了嗎@@?
61.62.49.43 02/21, 2F
文章代碼(AID): #126IBfSS (CSSE)
討論串 (同標題文章)
文章代碼(AID): #126IBfSS (CSSE)