2009-10-03 139 views
16

是否有C++(如perl)的腳本語言,可用於快速開發並使用一些可轉換爲C/C++程序的工具以獲得更高的部署性能?C/C++的腳本語言?

編輯:
基於一些評論,讓我澄清這個問題。我應該能夠將腳本轉換爲C/C++程序或二進制文件,而無需修改腳本。

+0

@rjoshi的解釋,也許你需要澄清。我認爲@Mike的反義詞是你想在C++應用程序中託管一種腳本語言。我已經使用VBScript引擎完成了Windows,所以也許這是我的經驗,因爲我的偏見。 – kenny 2009-10-03 14:59:37

+0

我想在腳本語言中爲開發做一個快速原型,並且應該能夠部署高性能,所以我想知道一些可以將腳本轉換爲C/C++程序進行部署。 – rjoshi 2009-10-03 15:18:51

+0

@rjoshi:請不要評論你自己的問題。請更新您的問題。評論你自己的問題是愚蠢的 - 你擁有這個問題。你可以修復它以澄清事情。 – 2009-10-03 15:21:32

回答

25

對於C/C++解釋器,你可以使用C/C++作爲腳本語言


注:到目前爲止,我已經試過只CINT。我已添加cconsUnderC以使列表更加完整。

+0

這些鏈接非常非常有趣,感謝與我們分享!我認爲實際上並沒有創建C++腳本的可能:) – MaciekTalaska 2009-10-03 15:50:13

+0

還有一個:** SCC **:http://volnitsky.com/project/scc/ – 2012-07-24 08:25:40

+0

什麼是「C/C++」?這些解釋器是否支持C或C++或兩者? – 2013-07-23 18:40:16

2

許多項目將例如C++和Python--例如參見 boost.python

我更喜歡R並使用R到C++的Rcpp接口。

無論是哪種情況,您都可以使用腳本語言進行原型設計,並且可以方便地向C++「粘合」以提高性能。

9

你可能會嘗試Lua經常與遊戲行業的C++一起使用。它有一個小的內存足跡,已經相當成熟,有一個很棒的圖書館......只是試試看。

hm ...我不明白你想達到什麼目的:你想找到一種腳本語言,它會以某種方式神奇地轉換成C++源代碼嗎?或者你真正想要的只是一個從腳本創建可執行文件的選項?如果後者 - 那麼你可以嘗試py2Exe

+0

「小腳印」是一個相對術語...... Lau需要的內存超過了我希望使用它的一些系統。 – NoMoreZealots 2010-03-30 11:15:12

+0

對於每一個內存字節都很有價值的嵌入式開發(和類似的),使用自帶虛擬機的任何語言都可能不是最好的解決方案(我認爲)。您還沒有指定要使用腳本語言,在什麼樣的平臺上,有什麼限制......這很難猜出;) 如果您想比較各種語言的性能:http ://shootout.alioth.debian.org/ – MaciekTalaska 2010-04-04 05:40:38

1

對於Python,我有時會發現psyco有用。不知道perl是否有任何等價物。

在爲任務選擇語言時,我覺得選擇最適合這項工作的語言會更有用。如果作業要求的性能比腳本語言在正常情況下可以提供的性能更高,那麼通常切換要比向後彎曲以嘗試使代碼快速更好。

+0

我同意你的評論,但問題在於你正在做快速原型,並且直到產品成功並且性能成爲瓶頸時纔會知道性能要求。 – rjoshi 2009-10-03 15:16:00

0

問題可以解釋不同的方式...

如果你已經用C++編寫你的應用程序的一部分,需要添加的模塊或腳本,要在C++代碼添加最終爲改善性能,您可以使用Qt這是一個穩固,非常完整的多平臺框架。

它包括對scripts(ECMAScript,Javascript的標準化版本)的支持,如果需要,您可以從中訪問C++對象。它還提供對插件的支持。

有了這種方法,你甚至可以繼續在三個步驟,

  • 首先做的Javascript一些測試,
  • 然後用C應用程序的基本代碼++且仍然可以使用腳本的一部分(例如,如果您需要嘗試不同的算法),最後在C++中移植所有關鍵部分或至少關鍵部分。

另一種選擇是在代碼中嵌入一個Python解釋器,雖然這可能需要更多的工作。

2

pawn

棋子是一個簡單的,無類型,32位擴展用類似C的語法的語言。典型的「源代碼」程序被編譯爲二進制文件以獲得最佳執行速度。典型編譯器輸出隨後在抽象機器上運行的P代碼(或字節代碼)。執行速度,穩定性,簡單性和小佔用空間是語言和抽象機器的基本設計標準。

這種語言與c語法非常相似,所以任何已經完成C++,c,c#,java的任何人都可以讀取它,並且它的簡單性讓所有編碼者都無法讀取它。這種語言目前用於所有地方,其他地方使用halflife 1halflife2服務器。

+0

/我喜歡我的棋子,AMX傢伙用這種語言做了一些INSANE的事情。 – 2009-12-30 14:11:47

0

我不確定我是否理解你的問題,但是如果你希望實現自己的腳本語言,它可以與你的C++代碼接口,你可以看看boost :: spirit。你只需要告訴它你的語法,並且你的腳本語言可以做你在C++中告訴它的任何東西。您可以使用C++運算符指定您的語法,使其非常簡單直觀。

這就是我目前用於我最近的需求,它看起來會做的工作就好了。在指定語法時,您可以完全訪問您的C++對象,並且您的用戶可以使用一種非常簡單的語言來學習(與CINT相比,語言本身就是C++)。

編譯時間現在有點慢,但如果你不需要實現一個非常複雜的語言,它應該是可管理的(我不希望看到類似C++的編譯時間)。此外,文檔對於最新版本有點缺乏(最新的版本有點難以找到),但使用相對簡單,所以根據您的需要可能值得一試。

2

有一個新的包Chaiscript是專爲C++。這是相對較新的,並不完全穩定。

4

任何有興趣的腳本語言,(主要是)非常相似,C++,可能想看看angelscript(ZLIB):

的AngelCode腳本庫,或AngelScript因爲它也被稱爲是一個非常靈活的跨平臺腳​​本庫,旨在允許應用程序通過外部腳本擴展其功能。它從一開始就被設計成易於使用的組件,既適用於應用程序員,也適用於腳本編寫者。

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

對於腳本編寫者來說,腳本語言遵循C/C++的廣爲人知的語法(只有很小的改動),但不需要擔心指針和內存泄漏。與大多數腳本語言相反,AngelScript使用通用C/C++數據類型與主機應用程序進行更高效的通信。

欲瞭解更多信息,請訪問:http://www.angelcode.com/angelscript/sdk/docs/manual/index.html

+0

很酷的東西! :-D – ASBai 2014-01-04 19:27:27