1.7.2 基于命令的语言系统
基于命令的语言通常就会像LOGO语言一样,非常具体,它们全部由接受一个到两个参数的针对具体程序的命令组成。例如,一个为虚拟的RPG游戏设计的基于命令的脚本系统会允许脚本调用一些针对该游戏的功能函数,从而完成某些常见任务,例如在游戏世界中移动游戏玩家的位置、获得物品、和其他的人物进行对话等。为了说明脚本的具体形式,请注意下面的这一段代码:
MovePlayer 10, 20
PlayerTalk "Something is hidden in these bushes..."
PlayAnim SEARCH_BUSHES
PlayerTalk "It's the red sword!"
GetItem RED_SWORD
就像你会看到的那样,形成这个虚拟语言的命令都是非常明确的,它们都针对于非常具体的某一种RPG游戏,就像本章的例子一样。因此,如果想将这种语言应用到像文字处理器那样另外一种类型的程序中将是不大可行的。此时,或许你会希望将命令集变换成另外一种更加合适的形式。例如:
MoveCursor 2, 2
SetFont "Times New Roman", 24, BLACK
PrintText "Newsletter"
LineBreak
SetFontSize 12
PrintDate
LineBreak
你会再一次发现这些语言后面的关键特性是多么明确。就像你会看到的那样,两种语言都是专门针对它们的主应用程序而设计的,很少甚至没有什么灵活性。尽管它们缺少了像变量、表达式、分支结构、循环体等这样常见的语言结构,从而一定程度上限制了它们的灵活性,但是它们仍然可以很快捷地将线性任务转换成为常见的宏(macro)。像Photoshop和Microsoft Word这样的程序允许用户用macro来记录它们的行为,这些行为也可以在以后重新实现。本质上,这些程序使用的是相同的方式来存储宏:用一种程序特定的、基于命令的语言记录每一步动作。从很多方面上看,你可以认为HTML是一种基于命令的脚本,而albeit是一种形式更复杂的脚本。






