棋弈程序(应该称之为引擎)是高度“可移植的”随着越来越多的棋弈程序遵从如Winboard和UCI协议等各种协议,它们不再被限定于一个软件或界面了。用户现在可以把一个棋弈程序(引擎)从一个他们所购买的软件/界面中“输出”到另一个[软件/界面]。
棋弈引擎所走的棋
首先让我们来定义几条术语。当我们谈论起你所购买的一套常规软件时,比方说 Chessmaster ,你可能以为整个软件包就是完整的一个整体。实际上,我们可以把这套软件分开成彼此很不相同的两个组成部分来看待。第一部分是我所说的用户界面或者图形用户界面(GUI),而另一部分就是棋弈引擎(Chess engine)。【译注:往往分别简称界面和引擎】 关于用户界面,我指的是与用户有交互操作功能的软件部分。这可以是程序中显示棋盘、让用户走动棋子,以及棋局数据库搜索过滤器或实现ICS客户端在线 功能的任何功能部分,等等。用户界面要与棋弈引擎区分开来,棋弈引擎是指实际决定或计算该走哪步棋的程序部分。
灵与肉 通过这样把国际象棋软件分开成两个组成部分,现在你可知,一个棋弈引擎有可能在不止一个界面下都能够良好地运行。 思考一下这种情况:你可以把比如Crafty(著名的免费棋弈引擎)“输入”到Winboard,Fritz, Chess assistant等或者其它任何界面中去,令Crafty运行,这个事实暗示了肯定存在某些方法让Crafty与软件之间建立联络。这也暗示了有两个程 序在工作着,“大脑”或者说是引擎部分命令该走哪步棋,同时用户界面(也称作GUI,即图形用户界面)处理棋步显示的工作以及与用户建立互动交流。 所有工作是同时地、无间隙地进行着的,你看上去就象只有一个程序在运行。不过如果你观察任务管理器里的程序运行情况,你就可以清楚看见有两个程序在工 作着。作个粗略比喻,可认为界面就是“肉体”;而棋弈引擎就是“灵魂”,是它在作决定。上述例子中,Crafty充当灵魂,它在任何一个能忠实地反映由 Crafty所决定全部棋步的“肉体”/界面中都能工作得同样的好。 显然,每当提及一个国际象棋软件包的时候,我们必须小心指明我们是在说它的界面还是引擎,特别是当这两者顶着同一个名字时【译注:比如说起Fritz,必要时必须分清是指Fritz界面还是Fritz引擎,还是指整套Fritz软件。后面还有进一步说明】。不是所有的棋弈引擎都能运行在全部用户界面中的。对于能良好运行在某用户界面(Fritz,Chess assistant, Winboard等)的某棋弈引擎,它们两者必须通过共享一种通用的通讯协议或“语言”来进行交流。
“语言 ” 到目前为止最通行的协议或者说所使用的语言,是Tim Mann所提出的Winboard通讯协议【译注:Tim Mann同时也是Winboard这个工具的主要作者】。现在至少有120种免费的国际象棋棋弈引擎支持这个协议。另一个是Shredder的作者Stefan Meyer-Kahlen和SOS的作者Rudolf Huber所提出的通用国际象棋界面协议(UCI),到写这篇文章的时候,它有大约20种引擎支持。
国际象棋通用界面(UCI) 正得到普及的另一开放性协议是国际象棋通用界面协议(UCI)。第一个支持UCI协议的界面是商业性的Shredder 5,它的作者也是UCI的提出者。最近,其它界面已开始支持它了,包括Chess Assistant 6、 Chess Partner 和 Fritz 7。【译 注:因此自从Fritz 7之后,支持UCI的引擎都能够在Fritz界面下使用--注意又再次提出这两个(甚至该说是三个)概念的区分,一般说的Fritz是指这整套软件; Fritz有它独特的界面和显示、功能选单和操作,这就是Fritz界面;而负责棋步计算的核心,即引擎,在商业上也叫Fritz引擎,但在技术上,它有 别的名字,如Quest。使用过Fritz的人都知道,除了"Fritz"这个引擎外,它还带有别的其它引擎,而且可以添加。这样就很容易理解什么叫引擎、什么叫界面、又什么叫整个(套)会下棋的软件。】
开放与非开放协议 Winboard和UCI都是开放性协议的例子。意思是协议自由公开,任何程序员都可以(如果愿意)设计使他们的程序适应其标准。这与非公开协议相 反,后者的标准不公开,既包括私有的不打算让别的引擎理解的界面;另一方面也指秘密/版权协议,它只被属于同一家公司的引擎、或付了许可费用而有权使用该 协议的作者所写的引擎理解。Chessbase协议可能就是最出名的一个。【译 注:作为国际象棋数据库的那套chessbase工具,知道的人应该比较多;但说起"chessbase",要注意可能指:1)chessbase协议, 正是本段所述;2)chessbase所出版的那些软件的统一界面或典型界面,以Fritz的最典型;3)名字就叫chessbase的那套国际象棋数据库工具;4)chessbase这间公司,或者它的网站;等等】
出处: Aaron的国际象棋引擎FAQ主页 译者: Michael