По сути программист это переводчик, например с языка людей на язык машин. Причём он должен хорошо знать, а если не знает то изучить задачу которую требуется перевести, а так же особенности работы машины которая будет выполнять эту задачу. Так как мозги человека и мозги машины функционируют совершенно по разному, то случаются ошибки... Поэтому после непосредственного написания алгоритма, 90 % работы программиста приходится на выявлении и исправления этих ошибок. Изобретение новых языков программирования это попытка приблизить друг к другу логику человека и машины, причём чем больше будет это приближении тем больше будет ошибаться машина...