Бьерн Страуструп.
Язык программирования С++
23
"хороших" программ для множества задач. Если этот термин имеет какой-то смысл, то он должен
подразумевать: такой язык программирования, который предоставляет хорошие возможности для
объектно-ориентированного стиля программирования.
Здесь следует указать на важные различия. Говорят, что язык поддерживает
некоторый стиль
программирования, если в нем есть такие возможности, которые делают программирование в этом
стиле удобным (достаточно простым, надежным и эффективным). Язык не поддерживает некоторый
стиль программирования, если требуются большие
усилия или даже искусство, чтобы написать
программу в этом стиле. Однако это не означает, что язык запрещает писать программы в этом стиле.
Действительно, можно писать структурные программы на Фортране и объектно-ориентированные
программы на С, но это будет пустой тратой сил, поскольку данные языки не поддерживают указанных
стилей программирования.
Поддержка языком определенной парадигмы (стиля) программирования явно проявляется в конкретных
языковых конструкциях, рассчитанных на нее. Но она может проявляться в более тонкой, скрытой
форме, когда отклонение от парадигмы диагностируется на стадии
трансляции или выполнения
программы. Самый очевидный пример - это контроль типов. Кроме того, языковая поддержка
парадигмы может дополняться проверкой на однозначность и динамическим контролем. Поддержка
может предоставляться и помимо самого языка,
например, стандартными библиотеками или средой
программирования.
Нельзя сказать, что один язык лучше другого только потому, что в нем
есть возможности, которые в
другом отсутствуют. Часто бывает как раз наоборот. Здесь более важно не то, какими возможностями
обладает язык, а то, насколько имеющиеся в нем возможности поддерживают
избранный стиль
программирования для определенного круга задач. Поэтому можно сформулировать следующие
требования к языку:
[1] Все конструкции языка должны естественно и элегантно определяться в нем.
[2] Для решения определенной задачи должна быть возможность использовать сочетания
конструкций, чтобы избежать необходимости вводить для этой цели новую конструкцию.
[3] Должно быть минимальное число неочевидных конструкций специального назначения.
[4] Конструкция должна допускать такую реализацию, чтобы в не использующей ее программе не
возникло дополнительных расходов.
[5] Пользователю достаточно знать только то множество конструкций, которое непосредственно
используется в его программе.
Первое требование апеллирует к логике и эстетическому вкусу. Два
следующих выражают принцип
минимальности. Два последних можно иначе сформулировать так: "то, чего вы не знаете, не сможет
нанести вам вреда".
С учетом ограничений, указанных в этих правилах, язык С++ проектировался для поддержки абстракции
данных и объектно-ориентированного программирования в добавление к традиционному стилю С.
Впрочем, это не значит, что язык требует какого-то одного стиля программирования от всех
пользователей.
Теперь перейдем к конкретным стилям программирования и посмотрим каковы основные конструкции
языка, их поддерживающие. Мы не собираемся давать полное описание этих конструкций.
Достарыңызбен бөлісу: