Понятие «программа» в нашем случае абстрактно и подразумевает, что такие-то результаты получаются из таких-то данных. Очевидно, что абстрактная программа может быть записана разными способами, на разных языках программирования и, возможно, с большим количеством необязательных строк. Бывает сложно увидеть, что две программы, написанные по-разному, на самом деле соответствуют одному и тому же абстрактному алгоритму.