- Templates and Data Types: we need to have programmable
data sizes (32-bit floats, 16-bit integers), generic containers
(linked lists, diagonal matrices), and generic classes
(Fourier Transform must operate on all types of signals).
- Data-Driven Programming: specific operations depend
on the type of data in a file (recognition on a feature stream
vs. an audio stream).
- Centralized Memory Management: efficient, block-oriented
memory management is essential.
- Virtual Interfaces: implementations must be
algorithm neutral and extensible (by novices).