19.11.1996 Мнения C большим удовольствием прочитал статью С. Короткого “Работа над ошибками” (см. выше). Позволю себе сделать несколько примечаний. Когда я писал о причинах появления ошибок в программах, то прежде всего имел в виду логические ошибки, которые не имеют никакого отношения к невнимательности программиста, а связаны исключительно с физической невозможностью держать в голове все нюансы функционирования программы. Это касается прежде всего крупных проектов в миллионы строк, создаваемых группами программистов. К сожалению, с увеличением размера проекта его сложность возрастает не линейно, а экспоненциально. При этом обычно “вылазят” ошибки, вызванные побочными эффектами, не предусмотренными на стадии проектирования. Но наибольшую трудность вызывают задачи, требующие моделирования действий человека-эксперта. Как известно, труднее всего поддается кодированию то, что для нас с вами тривиально. В таких ситуациях приходится реализовывать очень сложные логические операции с учетом множества взаимосвязанных ограничений. Программирование подобных операций занимает сотни тысяч строчек кода и обычно не поддается полноценному тестированию. К сожалению, разбивка кода на небольшие кусочки текста приводит к появлению десятков тысяч небольших процедур, в которых запутаться можно еще быстрее, а композиция их отнюдь не упрощает структуру программы. По сути, возникает свой “язык программирования” с операторами-процедурами, выполняющими некие операции над абстрактными внутрипрограммными типами ...
читать далее.