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