Без заголовка
> Является ли программа на языке программирования описанием самой себя, или ее нужно рассматривать как систему, а описания -- это что-то другое?
В идеале - не является. На практике, бывает что отдельного описания попросту нет.
В общем, есть некая польза в том, чтобы разделять цели и средство. Описание программы это как бы цель, а реализация - как бы средство. Цель можно достигать разными способами, а как нас учит Ф.Брукс если с самого начала архитектуру реализовывать двумя разными имплементациями, то будет круче.
С другой стороны, приходится учитывать, что срок жизни программ иногда невелик, и затраты на отделение описания от самой программы не успевают окупится. Однако, лично я стремлюсь по возможности отделять, и нахожу в этом много косвенных бенефитов.