Языки программирования. Практический сравнительный анализ


Языки программирования. Практический сравнительный анализ - стр. 269


 

4.21.2.3. Принцип ремонта на месте

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

В согласии с этим принципом исключение трактуется как относительно редкое, но в целом естественное для выполняемого конструкта событие. При его обработке следует направить усилия на скорейшее возобновление прерванного процесса. Эти усилия можно наглядно представить себе как "ремонт" процесса в том месте, где возникло исключение. Естественная модель поведения - прервать исполняемый процесс, вызвать "ремонтную бригаду" на место происшествия, после окончания ремонта продолжить прерванный процесс. Обратите внимание на три составных поведения - прервать, вызвать (это значит, понять, кого вызвать - ремонтная бригада подбирается динамически) и продолжить.

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

Описанное отношение к сущности исключения можно назвать принципом ремонта на месте.

Однако, где гарантии, что "отремонтированный" процесс сможет нормально работать? Если, скажем, исключение связано с окончанием файла или нарушением ограничений, то довольно бессмысленно продолжать работу прерванного процесса. В ПЛ/1 в таких случаях в реакции на исключение (после ремонта) применяют передачу управления туда, откуда признано разумным продолжать работу.

По многим причинам это далеко не лучшее решение. Одна из основных в том, что динамическая структура программы оказывается слабо связанной с ее статической структурой. Чтобы разобраться в программе, приходится "прокручивать" каждый оператор. Короче говоря, решение с передачей управления в общем случае затрудняет чтение и отладку программ.


- Начало -  - Назад -  - Вперед -