Анализ процесса программирования

Для отыскания правильного критерия высокого уровня языка проанализируем процесс программирования.

Программирование — это, прежде всего отражение в памяти и программах информационной системы объектов, понятий и явлений, существующих за ее пределами. Чем более адекватно позволяет информационная система выполнить это отображение, тем выше уровень программирования.

При этом должна учитываться адекватность отображения не только в процессе разработки программы, но и в процессе отладки и исправления ошибок. Всякому объекту при программировании соответствует определенная информация, занимающая некоторый объем памяти. Изображения различных объектов могут иметь совпадающие представления в памяти. Если не принять специальных мер, то это может привести к значительным осложнениям в процессе отладки программ. Действительно, если программа написана для работы с определенными объектами, то она, как правило, содержит достаточный контроль на тот случай, когда поданные на обработку объекты имеют не очень правильные параметры. В этом случае программисту, попытавшемуся обрабатывать такие объекты, выдается диагностическое сообщение с вполне адекватной терминологией (например, «данный треугольник непрямоугольный» — если процедура предусматривает на входе прямоугольный треугольник, и т.д.).

Однако если на вход какой-либо процедуры ошибочно подается совсем не тот объект, то даже при наличии хорошего контроля диагностические сообщения будут непонятными. Более того, ошибка может быть обнаружена значительно позже, чем она была допущена.

Все это — результат отсутствия взаимно однозначного соответствия между объектом и его отображением в информационной системе. В качестве примера можно привести отображение треугольников и параллелепипедов, которые характеризуются тремя числами. Отсутствие достаточного контроля приводит к необходимости отлаживать уже отлаженные процедуры. Допустим, что имеется хорошо отлаженная процедура работы с треугольниками, на вход которой программист по ошибке подает описание параллелепипеда. В результате процедура обработки треугольника может «поломаться» где-то внутри и выдать диагностическое сообщение в терминах треугольника. Чтобы найти ошибку, программисту придется разбираться в давно отлаженной, может быть, другим программистом процедуре. Этот эффект, по существу, соответствует понижению уровня программирования. Описанная ситуация заставляет программиста, работающего на более высоких уровнях и допустившего ошибку на своем уровне, для ее отыскания разбираться с процедурами более низкого уровня, не содержащих каких-либо ошибок.