Сколько плюсов у C++?

AvaLANche

Xakep, номер #058, стр. 058-090-1

(avalanche@real.xakep.ru)

Обзор возможностей языка

Уже долгое время не прекращаются споры, что лучше: Delphi или C/C++/Visual C++. Причем в большинстве случаев сравниваются две принципиально разные вещи. Ведь до седьмой версии имя Delphi носила лишь среда разработки, а язык ее компилятора был Object Pascal (в Delphi7 борландовцы решили устранить такое упущение, и теперь и язык называется Дельфи). То же самое и с Visual C++: эта IDE "накручена" на Microsoft C/C++ Compiler (cl.exe). Поэтому корректным было бы сопоставление Delphi и Visual Studio или объектного паскаля и C++. Почему именно "си-плюс-плюс", а не C? Да потому что C - процедурно-ориентированный язык "среднего уровня", а Object Pascal - высокоуровневый, с поддержкой ООП и абстракций, т.е. это совсем разные вещи. Такая путаница в понятиях заставляет многих думать, что и C, и C++ - почти одно и то же, а ведь это совсем разные языки. Не будем погружаться в дебри Си: тут все довольно понятно, посмотрим лучше, что за зверь C++.

Что такое C++?

С этим вопросом лучше обратиться к его создателю - Бьерну Страуструпу. Думаю, он бы ответил примерно так: С++ - это язык, который лучше, чем C поддерживает абстракцию данных, объектно-ориентированное (ООП) и обобщенное программирование. В том, что все это означает, мы и будем разбираться.

Прежде всего замечу, что C++ разрабатывался с нуля с целью добавления новых средств к стандартному C. Теперь, надеюсь, понятно, почему он лучше? :) В то же время, тяжелого и убогого уродца создатели делать не хотели, поэтому они руководствовались очевидными принципами: эстетика (все должно быть понятно и элегантно), минимализм (поддержка какого-либо средства не должна вызывать дополнительных расходов в не использующих его программах) и т.п.

Важно и само понятие поддержки стиля программирования. Можно говорить, что язык поддерживают какой-то стиль, когда использование этого стиля в нем удобно, просто и эффективно. При написании объектно-ориентированной программы на C (такое тоже возможно) непередаваемые ощущения заработанного геморроя обеспечены. Поэтому C лишь предоставляет возможность использовать стиль ООП, но не поддерживает его.

Процедуры и функции

Рассмотрим непосредственно различные техники программирования и их реализации в С++. Начнем, конечно, с процедурной, поскольку она является прародителем всех остальных.

Основной принцип процедурного программирования гласит: "Реши, какие понадобятся процедуры, и используй наилучшие алгоритмы". Поддержка языком этой техники означает возможность передачи функции аргумента и возможности возврата функциями значений. Залог успеха при написании программы - подобрать оптимальные алгоритмы обработки данных и, чтобы не запутаться в них, разбить код на процедуры и функции.

Здесь C++ очень похож на C. Те же инструкции ветвления и циклы, такое же объявление переменных (правда, возможное в любом месте программы), указателей и массивов, множество встроенных типов и т.д. Хотя нововведений тоже немало: ссылки (&), операторы ввода-вывода (>> И <<), операторы для работы с памятью (new и delete), встроенный тип bool и т.д. Стоит упомянуть и обработку исключений. Вот пример функции, которая реализует вежливое, но настойчивое приглашение пользователю выйти :) ("//" - открывает комментарий до конца строки).

Содержание  Вперед на стр. 058-090-2
ttfb: 3.5710334777832 ms