  According to some algorithmicists, algorithmics traditionally uses algorithm
theory, which stems from mathematics. The growing need for innovative
algorithms has caused increasing gaps between theory and practice. Originally,
this motivated the development of algorithm engineering, which is viewed as
experimental techniques related to software engineering. Currently, algorithm
engineering is a methodology for algorithmic research that combines theory with
implementation and experimentation in order to produce better algorithms with
high practical impact. Still, researchers have questioned whether the notion of
algorithms can be defined in a fully generable way and discussed what kinds of
entities algorithms actually are. They have also struggled to maintain a view
that formulates algorithms mathematically (e.g., Turing machines and
finite-state machines [FSMs]) while adapting a more applied view. Answering the
question of what algorithms have practical applications in software
specifications in particular, this paper proposes a diagrammatical definition
of an algorithm based on a new modeling machine called a thinging machine (TM).
The machine has five actions (e.g., create, process, release, transfer, and
receive) that can form a network of machines. The paper explores the
application of the definition in Turing machines and FSMs. The results point to
the fact that the proposed definition can serve as a middle-ground
representation of algorithms, a definition which is between formal
specification and the commonly used informal definition (e.g., set of
instructions).
