We have seen in Chapter 6 that not all tasks can be implemented by a single CNN template; the XOR function is a typical example.
There are many tasks which are solved by applying several templates, or by applying one template several times. If we consider a template as an instruction with well-defined input and output, we can define a CNN subroutine or function (as in C-like languages) when applying several templates. We can build up processes and complete programs from functions and other instructions.
We define a subroutine by specifying the following items:
the input/output parameters,
the global task,
the informal description of the algorithm,
the CNN implementation.
In this chapter the CNN implementation is given by three equivalent ways:
the hardware schematics, supposing each CNN template (placed in the CNN Software Library) is implemented by a separate device containing discrete hard-wired cells and additional local (cell by cell) and global devices.
a flow diagram of the CNN algorithm, and
a list of consecutive instructions, henceforth called a program, written in a simple vocabulary involving the CNN analog and logic operations, henceforth called an analogic CNN language, or simply “α” language.
An Alpha Compiler is supposed to exist to translate the code into executable programs on CNN chips. We will describe this process later in Chapter 9.
Indeed, we follow the theory and practice of digital computers.