Программист очень много времени работает… с текстами программ. Получается, что он как профессиональный писатель, должен хорошо представлять структуру текстов программ и их смысловую направленность, улучшая производительность кода и читаемость текста программ по мере своего профессионального совершенствования.
Я стараюсь сделать так, чтобы при небольшом изменении постановки задачи пришлось вносить изменения в минимум кусков программного кода. Как этого можно добиться? Избегая тупого копирования текста программного кода. Процедурное кодирование, на мой взгляд, гораздо более эффективно, особенно если в программный код приходится часто вносить изменения. Процедурное кодирование позволяет за минимальное время выстроить или изменить архитектуру программного решения.
Мне очень часто приходится в тексте программ «причесывать» код, и на «пустом месте» создавать процедуры и функции, если есть кусок кода, который используется минимум дважды.
Бухгалтер, как известно, работает с данными (числами и статьями затрат). Программист… тоже работает с данными, только его данные — это тексты программного кода и тестовые образцы входящих данных, на которых программный код должен выдать заведомо известный результат.
Сплошь и рядом мне приходится пользоваться полнотекстовым поиском, чтобы найти во всей программе один кусок кода или имя переменной, например, чтобы заменить его на другой кусок. Я делаю замену имен переменных, если вижу, что новое имя переменной позволит сделать текст программного кода более читаемым, то есть — более понятным для того, кто первый раз читает этот текст.
Нельзя не вспомнить в этой связи нормальные алгоритмы Маркова и его теорему о том, что любая машина Тьюринга может быть запрограммирована с помощью алгоритмов Маркова.