2008-08-18 27 views
6

我正在尋找將腳本功能添加到現有的代碼庫,並且正在權衡各種軟件包的優缺點。 Lua可能是最明顯的選擇,但我想知道人們是否有基於他們的經驗的其他建議。在現有代碼庫中支持哪種腳本語言?

腳本將在某些事件發生時觸發,並可能會在一段時間內保持常駐狀態。例如,在啓動時,腳本可以定義該程序作爲多個按鈕呈現給用戶的幾個選項。選擇其中一個按鈕後,程序將通知腳本進一步發生事件。

這些是唯一真正的要求;

  1. 必須是一個跨平臺的庫,從源代碼編譯
  2. 腳本必須能夠調用註冊代碼端功能
  3. 代碼必須能夠調用腳本端功能
  4. 被使用在C/C++代碼庫中。

回答

3

  • 的Python。恕我直言,這是一個不錯的選擇。我們有一個非常大的代碼庫,有很多用戶,他們非常喜歡它。
  • 紅寶石。有一些非常好的應用程序,例如Google Sketchup使用它。我寫了一個Sketchup插件,並認爲它非常好。
  • Tcl。這是老派可嵌入的腳本語言的選擇,但它現在沒有太大的動力。不過質量很高,他們在哈勃太空望遠鏡上使用它!
  • Lua。我只用它做了寶貝,但是IIRC只有浮點數字類型,所以請確保這對您將要使用的數據沒有問題。

我們很幸運能夠生活在腳本的黃金時代,所以如果您選擇任何流行的選擇都很難作出不好的選擇。

1

我玩了一下Spidermonkey。看起來至少在你的情況下值得一看。我也聽說過關於Lua的好消息。使用JavaScript腳本語言的一個重要論點是,很多開發人員已經知道它,並且從開始就可能會更加舒適,而Lua很可能會有一些學習曲線。

我並不完全正面,但我認爲spidermonkey你的4個要求。

1

我已經爲此目的廣泛使用了Python,並且從未後悔過它。根據我自己的經驗

1

Lua擁有最直接的C API來綁定到我曾經使用過的代碼庫中。事實上,我通常手動快速地爲它綁定。然而,如果沒有其他發電機,例如swig,您通常不會考慮這樣做。此外,它通常比替代品更快,重量更輕,coroutines是其他語言提供的非常有用的功能。

1

AngelScript

,您可以調用標準C函數和C++的方法,無需代理功能。應用程序只需註冊腳本應該能夠使用的功能,對象和方法,而不必使用代碼進行更多操作。腳本引擎也可以使用應用程序在內部使用的相同功能,這樣就不需要複製功能。

對於編劇的腳本語言遵循C/C++(有微小的變化)的廣爲人知的語法,但無需擔心指針和內存泄漏。

0

已經有一些很好的建議,但我只是想提一下Perl也可以被調用/可以調用C/C++。

0

你可能會使用任何現代的腳本/字節碼語言。

如果你願意忍受一個新產品的成長的煩惱,你可以使用Parrot VM。它支持許多(如果不是全部)本頁上列出的語言。不幸的是,它還沒有完成,但這並沒有阻止一些人在生產環境中使用它。

1

原始問題描述Tcl爲「T」。

的Tcl從一開始就設計成一個嵌入式腳本語言。它已經發展成爲一流的動態語言,但仍被全世界用作嵌入式語言。它可以在BSD許可下使用,因此它可以隨意獲得。它也編譯幾乎所有的現代平臺,還有許多不太現代的平臺。它不僅適用於桌面系統,還有可用於移動平臺的變體。

Tcl的擅長的「膠水」的語言,在這裏你可以用C寫性能密集型功能,同時還從腳本語言的優勢中獲益的應用程序的性能較差關鍵部分。

Tcl的還帶有一個第一類的GUI工具包(TK),其可以說是可用的最簡單的跨平臺的GUI工具包中的一個。它還與SQLite和其他數據庫非常好地接口,並且在一段時間內已經內置了對unicode的支持。

如果您的客戶可以使用腳本界面(而不是簡單地讓自己的工程師在腳本級別工作),Tcl非常容易學習,因爲總共只有12條規則管理整個語言(從tcl 8.6開始)。實際上,Tcl作爲發明特定於域的語言的一種方式,通常被用作最終用戶腳本解決方案。

0

我想大多數人可能提的腳本語言,他們是最熟悉的。從我的角度來看,Tcl專門設計用於與C接口,因此您的問題域是針對該語言量身定製的。不過,我相信Python,Perl或Lua都可以。您應該選擇您當前團隊最熟悉的語言,因爲這會縮短學習時間。