2 Pal
Но, у каждой абстракции есть дыры. Исключение реально помогает жить, если им не злоупотреблять. И если использовать только автоматические переменные. Либо скрывая динамическую память в автоматических переменных. Опять таки это тоже возможно, но мы уже получили вариант, при котором exception работает тогда и только тогда, если программист выполняет определенные требования по дисциплине программирования. А он их часто выполняет в реальной жизни?
Кроме того есть варианты, когда скобки создать/удалить не работают и требуется именно динамическая переменная. Простейший пример - очередь, в которую пихает созданные им объекты один поток, а вытаскивает и удаляет - другой. И как их очищать через исключение?
Следовательно исключение не решает проблему, а решает ее в большинстве относительно простых и распространенных случаев, а не всегда и только при определенной дисциплине программирования. Т.е. мы вводим новую концепцию для удобства а не для расширения функциональности. С моей точки зрения - это путь приятный, но порочный.
И очевидно единственным обоснованием введения такой фичи должно быть математическое доказательство, что лучше сделать принципиально невозможно. Плюс глубокая внутренняя убежденность в правильности.
Второго в С++ обычно хватает, в отличие от первого.
PS
Дейкстра писал, что создание микропроцессора отбросило программирование на 25 лет назад. Мало кто был согласен с этой мыслью тогда, еще меньше сейчас. Вряд ли это высказывание сегодня актуально, но тем не менее достаточно написать пару рабочих программ на ассемблере PDP или VAX 25-летней давности а потом пересесть на ассемблер современного Intel чтобы понять, что он не был совсем уж не прав. Мне это почему-то напоминает ситуацию с ООП.
Социальные закладки