  Although algorithm is one of the central subjects, there have been little
common understandings of what an algorithm is. For example, Gurevich view
algorithms as abstract state machines, while others view algorithms as
recursors. We promote a third view: it is a combination to these two disparate
views. This approach -- based on computability logic -- describes an algorithm
as $A(I,O)$ where $I$ is a set of input services and $O$ an output service. It
leads to the following modern definition: {\it An algorithm $A$ is a (tree of)
sequence of legal moves for providing $O$ using $I$. } In the above, $A$ is
written in an imperative language/abstract state machine and $I,O$ are written
in recursors/logical specifications.
