Бьерн Страуструп.
Язык программирования С++
307
правил статических типов, механизм связывания на этапе выполнения. Шаблоны типа позволяют
создавать параметризованные типы. Особые ситуации позволяют сделать регулярной реакцию на
ошибки. Все эти средства С++ можно использовать без дополнительных накладных расходов в
сравнении с программой на С. Таковы главнейшие средства С++, которые должен представлять и
учитывать разработчик. Кроме того, существенно повлиять на принятие решений на стадии
проектирования может наличие доступных больших библиотек следующего назначения: для работы с
матрицами, для связи с базами данных, для поддержки параллельного программирования, графические
библиотеки и т.д.
Страх перед новизной, непригодный здесь опыт работы на других языках, в других системах или
областях приложения, бедные средства проектирования - все это приводит к неоптимальному
использованию С++. Следует отметить три момента, когда разработчику не удается извлечь выгоду из
возможностей С++ и учесть ограничения языка:
[1] Игнорирование классов и составление проекта таким образом, что программистам приходится
ограничиваться только С.
[2] Игнорирование производных классов и виртуальных функций, использование только
подмножества абстрактных данных.
[3] Игнорирование статического контроля типов и составление проекта таким образом, что
программисты вынуждены применять динамические проверки типов. Обычно указанные
моменты возникают у разработчиков, связанных с:
[1] C,
или традиционной системой CASE или методами структурного проектирования;
[2] Адой или методами проектирования с помощью абстракции данных;
[3] языками, близкими Smalltalk или Lisp. каждом случае следует решить: неправильно выбран язык
реализации (считая, что метод проектирования выбран верно), или разработчику не удалось
приспособиться и оценить язык (считая, что язык реализации выбран верно).
Следует сказать, что нет ничего необычного или позорного в таком расхождении. Просто это
расхождение, которое приведет к неоптимальному проекту, возложит дополнительную работу на
программистов, а в случае, когда структура понятий проекта значительно беднее структуры языка С++,
то и на самих разработчиков.
Отметим, что необязательно все программы должны структурироваться опираясь на понятия классов и
(или) иерархий классов, и необязательно всякая программа должна использовать все средства,
предоставляемые С++. Как раз наоборот, для успеха проекта необходимо, чтобы людям не навязывали
использование языковых средств, с которыми они только познакомились. Цель последующего
изложения не в том, чтобы навязать догматичное использование классов, иерархий и строго
типизированных интерфейсов, а в том, чтобы показать возможности их использования всюду, где
позволяет область приложения, ограничения С++ и опыт исполнителей. В $$12.1.4 будут рассмотрены
подходы к различному использованию С++ в проекте под заголовком "Проект-гибрид".
Достарыңызбен бөлісу: