AngelScript 是當(dāng)作一個(gè)引擎而構(gòu)建的,當(dāng)應(yīng)用程序需要注冊(cè)函數(shù)、屬性(properties)和任意數(shù)據(jù)類型的時(shí)候,這個(gè)腳本可能會(huì)派上用場(chǎng)(原文: AngelScript is structured around an engine where the application should register the functions, properties, and even types, that the scripts will be able to use.)。本腳本庫(kù)依賴于應(yīng)用程序,它會(huì)被編譯到應(yīng)用程序的一個(gè)或多個(gè)模塊之中(原文: The scripts are then compiled into modules, where the application may have one or more modules, depending on the need of the application.)。應(yīng)用程序也可以通過(guò)各式各樣的接口來(lái)使用configuration集合的每一個(gè)模塊(原文:The application can also expose a different interface to each module through the use of configuration groups)。當(dāng)應(yīng)用程序需要一個(gè)多類型的腳本時(shí),例如圖形用戶界面,人工智能控制等等本腳本庫(kù)就顯得特別有用了(原文: This is especially useful when the application works with multiple types of scripts, e.g. GUI, AI control, etc.)。
腳本的函數(shù)、全局變量和類,每個(gè)模塊都有它自己的作用域范圍(原文: Each module has it's own scope of script functions, global variables, and classes)。即使各個(gè)模塊可能組建于同一個(gè)腳本源碼,它們之間通常也不會(huì)共享(原文: These are normally not shared between modules, even though multiple modules may be built from the same source scripts)。不過(guò)模塊可以通過(guò)綁定函數(shù)來(lái)相互配合相互影響(原文: However modules may interact with each others through function binding.)。
作為一個(gè)腳本,被編譯成 字節(jié)碼 AngelScript同樣也提供了一個(gè)虛擬機(jī)來(lái)作為執(zhí)行這些字節(jié)碼的腳本環(huán)境,AngelScript同樣也提供了一個(gè)虛擬機(jī)來(lái)解析腳本的上下文,來(lái)將腳本編譯成字節(jié)碼并執(zhí)行。(原文:As the scripts are compiled into bytecode AngelScript also provides a virtual machine, also known as a script context, for executing the bytecode)。盡管大多數(shù)應(yīng)用程序可能僅需要一個(gè)腳本環(huán)境,但是應(yīng)用程序可以在同一時(shí)間獲取許多腳本上下文(原文:The application can have any number of script context at the same time, though most applications will probably only need one.)。
這個(gè)環(huán)境支持可執(zhí)行體的掛起和恢復(fù),因此,這個(gè)應(yīng)用程序可以很容易的執(zhí)行就好像同時(shí)執(zhí)行腳本和普通程序一樣(原文:The contexts support suspending the execution and then resuming it, so the application can easily implement features such as concurrent scripts and co-routines.)。腳本環(huán)境為了獲取運(yùn)行時(shí)信息業(yè)提供了一個(gè)接口,這對(duì)調(diào)試腳本非常有用(原文:The script context also provides an interface for extracting run-time information, useful for debugging scripts.)。
AngelScript的腳本語(yǔ)言是在眾所周知的C + +語(yǔ)法之上增加像Java, C#和D等更現(xiàn)代語(yǔ)言的語(yǔ)法(原文:The script language is based on the well known syntax of C++ and more modern languages such as Java, C#, and D.)。任何人只要了解一些別的語(yǔ)言,或者其他有著類似語(yǔ)法的腳本語(yǔ)言,像Javascript和ActionScript,再用AngelScript會(huì)有一種一見(jiàn)如故的感覺(jué)(Anyone with some knowledge of those languages, or other script languages with similar syntax, such as Javascript and ActionScript, should feel right at home with AngelScript.)。
跟許多的腳本語(yǔ)言相反,AngelScript是一個(gè)強(qiáng)類型的語(yǔ)言,它允許更快更穩(wěn)定的執(zhí)行代碼與宿主應(yīng)用程序之間的交互會(huì)減少有類型值所需要的運(yùn)行時(shí)間(原文:Contrary to most script languages, AngelScript is a strongly typed language, which permits faster execution of the code and smoother interaction with the host application as there will be less need for runtime evaluation of the true type of values.)。
AngelScript的內(nèi)存管理是基于一個(gè)用于檢測(cè)和釋放的循環(huán)引用對(duì)象來(lái)增加垃圾回收的引用計(jì)數(shù)(原文:The memory management in AngelScript is based on reference counting with an incremental garbage collector for detecting and freeing objects with circular references)。這就提供了一個(gè)可控環(huán)境,除非應(yīng)用程序凍結(jié)垃圾回收機(jī)制來(lái)申請(qǐng)內(nèi)存(原文:This provides for a controlled environment without application freezes as the garbage collector steps in to free up memory.)。
--------- besterChen
譯于2010年2月26日星期五