2009-02-10 36 views
1

對於初學者,我應該讓你們知道我在做什麼。我正在處理的項目有一個要求,即需要構建自定義腳本系統。這將被正在使用該應用程序的非程序員使用,並應儘可能接近自然語言。例如,如果用戶需要運行自定義模擬並繪製輸出,則他們將編寫的代碼需要看起來像實時腳本語言+ MS DLR?

變量input1是10; 變量input2是20;

變量值1是AVERAGE(input1,input2);

variable condition1 is true; if condition1 then PLOT(value1);

可能沒有多大意義,但它只是一個例子。 AVERAGE和PLOT是我們想要定義的函數,他們不應該被允許改變它們,或者甚至不能看到它們是如何工作的。 DLR可以這樣做嗎?如果不是我們有什麼其他選擇(從ANTRL開始定義語法,然後繼續?)?在將來,這可能需要運行XBAP和WPF,所以這也是我們需要考慮的事情,但在dlr & xbap上沒有看到太多東西。謝謝,希望這一切都有道理。


Lua不是一種選擇,因爲它與他們已經習慣的不同。

Ralf,它將變爲反應性的,說實話,結果應該返回給用戶的時間範圍可能是1/100秒,一直到2周或一個月(非常複雜的數學函數)。

基本上他們已經有一個系統,他們購買了一些他們需要的東西,並且包含了一個自定義腳本語言,它可以完成我上面提到的,他們不想學習一個新的,他們基本上只是想要我們複製它並添加功能。我想我會從ANTRL開始並從那裏出發。

+0

任何需要超過幾秒鐘的事情都不應該使用本土語言來完成。如果你正在討論一個搗鼓的時間,那麼在掛鐘時間裏,用更快的語言訓練用戶可能會更快,然後讓他們使用更慢的語言。 – BCS 2009-02-10 23:57:25

回答

0

首先我認爲定義你自己的語言是而不是的路要走。

  • 主要是因爲最大的生產率的提高,你可以得到程序員非程序員的開發工具。你們(和我們其他人中的99.9%)不會寫出像他們所說的那樣好的工具。
  • 語言設計是
  • 語言支持和文件,也很難

我會建議尋找一個預構建的解決方案。如果你能找到一種可以鎖定某些功能的語言,那將是一個很好的起點。 MatLab將是我想到的第一個。

最後,溝自然語言部分,BASIC,COBOL和YA-TDWTF-Lang所有嘗試和失敗。


全面披露:我爲正在開發一種通用領域特定語言「系統」的公司工作。它針對的是數據輸入/輸出文本輸出應用程序,因此它不是合適的,它尚未測試。結果是我有點知識和偏見。

0

你試圖實現什麼樣的實時要求?模擬是一個硬實時模擬(某種硬件在環仿真==>截止時間小於1/1000秒)? 或者你是否希望腳本系統對用戶輸入==「反應」應該足夠了。

我不是MS DLR專家,但據我所知,它不支持硬實時系統。你可能想看看實時規範的Java(RTSJ)

3

Lua

它的體積小,速度快,易於嵌入,移植,可擴展和樂趣!

1

Lua是軟實時系統(如電腦遊戲)的最佳選擇。 有關詳細基準,請參閱http://shootout.alioth.debian.org/

但是,上次我查了一下,Lua使用了一個標記掃描垃圾回收器,這可能導致實時系統中的截止時間違規和非確定性抖動。

+0

它是一個增量GC,並且您可以在每個週期輕鬆調用它,這使得它可以執行非常小的步驟。像任何事情一樣,先測試一下。 – Javier 2009-02-11 15:34:51

1

我相信你可以在理論上使用DLR,但我不確定是否支持XBAP(部分信任?)方案。

如果您託管DLR,您將很快能夠利用IronRuby或IronPython腳本。在創建自己的語言實現時,你會想看看這些實現。如果您將問題發佈到IronPython mailing list,我相信您會在XBAP方案中得到更好的答覆,並且其中一些開發人員創建了ToyScript