... programming, the art of a constructive design ...
N. Wirth,http://www.inr.ac.ru/~info21/texts/2002 ... hus/en.htm

Способность приложить ... знания к конструированию больших систем - это прежде всего дело инженерного мастерства и практики. Овладевая таким мастерством, программист должен постоянно бороться с запутанностью, отказываться доверять тем методам, которые не до конца понятны, и никогда не прекращать поиск более простых, более элегантных решений. В этой деятельности никакое современное средство из арсенала программного обеспечения не может заменить способности программиста рассуждать точно и конструктивно.
Н. Вирт. Структуры данных и алгоритмы. // "Современный компьютер", М: Мир, 1984.

Соответствующие системы обозначений стали называться языками. Этот термин, однако, вводит в заблуждение, поскольку процесс программирования только на первый взгляд похож на сочинительство. Мне кажется, лучше представлять программирование как деятельность по конструированию новой машины с помощью существующей универсальной машины. ... Если смотреть на программирование как на проектирование машины, то необходимость в точных формулировках становится ещё более очевидной.
Н. Вирт. Структуры данных и алгоритмы. // "Современный компьютер", М: Мир, 1984.

Сама статья (спасибо Драконографу):