"Мюррэй Хилл, Бьярн Страустрап. Язык С++" - читать интересную книгу автора

который настолько "близок к машине", что всеми основными машинными
аспектами можно легко и просто оперировать достаточно очевидным для
программиста образом. С таким умыслом первоначально задумывался C.
Второй цели идеально отвечает язык, который настолько "близок к
решаемой задаче", чтобы концепции ее решения можно было выражать
прямо и коротко. С таким умыслом предварительно задумывались
средства, добавленные к C для создания C++.
Связь между языком, на котором мы думаем/программируем, и
задачами и решениями, которые мы можем представлять в своем
воображении, очень близка. По этой причине ограничивать свойства
языка только целями исключения ошибок программиста в лучшем случае
опасно. Как и в случае с естественными языками, есть огромная
польза быть по крайней мере двуязычным. Язык предоставляет
программисту набор концептуальных инструментов; если они не
отвечают задаче, то их просто игнорируют. Например, серьезные
ограничения концепции указателя заставляют программиста применять
вектора и целую арифметику, чтобы реализовать структуры, указатели
и т.п. Хорошее проектирование и отсутствие ошибок не может
гарантироваться чисто за счет языковых средств.
Система типов должна быть особенно полезна в нетривиальных
задачах. Действительно, концепция классов в C++ показала себя
мощным концептуальным средством.

- стр 16 -

Размышления о программировании на C++

В идеальном случае подход к разработке программы делится на три
части: вначале получить ясное понимание задачи, потом выделить
ключевые идеи, входящие в ее решение, и наконец выразить решение в
виде программы. Однако подробности задачи и идеи решения часто
становятся ясны только в результате попытки выразить их в виде
программы - именно в этом случае имеет значение выбор языка
программирования.
В большинстве разработок имеются понятия, которые трудно
представить в программе в виде одного из основных типов или как
функцию без ассоциированных с ней статических данных. Если имеется
подобное понятие, опишите класс, представляющий его в программе.
Класс - это тип; это значит, что он задает поведение объектов его
класса: как они создаются, как может осуществляться работа с ними,
и как они уничтожаются. Класс также задает способ представления
объектов; но на ранних стадиях разработки программы это не является
(не должно являться) главной заботой. Ключом к написанию хорошей
программы является разработка таких классов, чтобы каждый из них
представлял одно основное понятие. Обычно это означает, что
программист должен сосредоточиться на вопросах: Как создаются
объекты этого класса? Могут ли эти объекты копироваться и/или
уничтожаться? Какие действия можно производить над этими объектами?
Если на такие вопросы нет удовлетворительных ответов, то во-первых,
скорее всего, понятие не было "ясно", и может быть неплохо еще