我正在尋找一種方法來編寫和維護某個算法(實際上是我的代碼的一個圖形渲染子模塊),只有一次。我需要C++,PHP和Javascript中的算法。理論上我可以用C++編寫它,並將其包裝到PHP擴展中;但是它本身有很多問題,並沒有解決Javascript鏈接。元編程到幾種輸出語言
我在找什麼,我認爲是一種從語言(無論哪一個)轉換成三個(或兩個,如果源語言是三種語言之一)輸出語言的工具目標。我發現MetaL(http://www.meta-language.net/)似乎做我想做的,但也看起來死了(自2007年以來沒有更新),只針對我需要的三種語言之一。它需要非常靈活,並允許我更新結果 - 例如,我在C++和PHP渲染中使用Cairo,在Javascript端使用HTML Canvas。所以我需要爲API定製特定的效果。
或者,我會解決一個PHP解析器和詞法分析器,它會給我一個帶足夠信息的AST,以便爲C++和Javascript編寫生成器作爲替代後端。
任何想法?謝謝。
你的問題讓我想起了舊的引用:_有些人在遇到問題時想「我知道,我會用正則表達式。「現在,他們有兩個問題。我明白你的意願來集中維護,但聽起來像你正在採取一個有點煩人但合理的問題,並把它變成一個非常複雜的問題。 (我正在考慮自動構建,翻譯引擎問題以及您即將進入的調試問題) 想想那些在您移動之後必須維護此解決方案的可憐傢伙。 – NightDweller 2011-04-18 13:07:11
如果你最多隻談論幾千行代碼,你最好仔細設計API並簡單地重新編碼它們。在語言中發現的所有奇怪事物(例如,C++:類,多重繼承,命名空間,單獨聲明/定義,宏,模板,重載等)的自動代碼生成是一項艱鉅的任務,不是值得幾千行的努力。如果你想產生100K SLOC,那麼這將是非常值得的,或者你用任意方式編寫代碼片段。但3個固定算法的副本?不要以爲它值得麻煩。 – 2011-04-19 04:02:09
我可以將自己限制在一個語言的小部分中來編寫它。我顯然不需要將C++的所有細微差別翻譯成多種語言。渲染是90%'計算像素,矩形或圓的位置,計算它的顏色,調用繪製API函數'。它不一定是通用的。無論如何,它看起來像haXe會做我所需要的。 – Roel 2011-04-21 16:26:55