Существуют две конкурирующие точки зрения на языки программирования. Первая утверждает, что следует защищать программиста от возможных проблем, исключая из языка такие особенности, которые могут их вызвать в первую очередь. Хотя это звучит обнадеживающе, но в результате приводит к тому, что мощные элементы языка, способные в некоторых ситуациях создавать проблемы, ограничиваются, выхолащиваются или целиком удаляются из него. Два примера таких элементов — указатели и явное распределение памяти. Указатели считаются рискованным средством, потому что они часто некорректно используются начинающими программистами и могут (в некоторых случаях) применяться для пробивания бреши в барьерах системы безопасности. Явное распределение памяти (например, с помощью операций new и delete) опасно, потому что программист может необдуманно выделять большие блоки памяти или забыть освободить память, когда она ему больше не нужна, в результате чего происходит утечка памяти (memory leak). Хотя обе функциональные возможности сопряжены с риском, они предоставляют программисту оперативный контроль (detailed control) и возможность создавать высокоэффективный код. К счастью, С++ не относится к числу сторонников описываемого подхода. Вторая точка зрения — та, которой придерживается С++, утверждает, что программист — хозяин ситуации. Это значит, что он управляет и контролирует. Язык не должен мешать вам создавать плохие программы. Скорее, первостепенная задача языка — предоставить специалисту быструю, ненавязчивую рабочую среду. Если вы хороший программист, ваша работа продемонстрирует это. Если вы программируете плохо, это тоже найдет отражение в вашей работе. По сути, С++ дает вам мощное рабочее орудие и уступает дорогу. У программиста на С++ никогда не возникает необходимости "бороться" с языком. Очевидно, что большинство программистов предпочитают философию С++.
|