C++ - [2]

Шрифт
Интервал

В Главе 8 представлены классы ostream и istream, предоставляемые стандартной библиотекой для осуществления ввода-ввода. Эта глава имеет двоякую цель: в ней представлены полезные средства, что одновременно является реальным примером использования С++.

И, наконец, в книгу включено справочное руководство по С++.

Ссылки на различные части этой книги даются в форме #2.3.4 (Глава 2 подраздел 3.4). Глава с – это справочное руководство например #с.8.5.5.

Замечания по Реализации

Во время написания этой книги все реализации С++ использовали версии единственного интерфейсного компилятора*. Он используется на многих архитектурах, включая действующие версии системы операционной системы UNIX на AT amp;T 3B, DEC VAX, IBM 370 и Motorolla 68000. Фрагменты программ, которые приводятся в этой книге, взяты непосредственно из исходных файлов, которые компилировались на 3B в UNIX System V версии 2 [15], VAX11/750 под 8-ой Редакцией UNIX [16] и CCI Power 6/32 под BSD4.2 UNIX [17]. Язык, описанный в этой книге, – это «чистый С++», но имеющиеся на текущий момент компиляторы реализуют большое число «анахронизмов» (описанных в #с.15.3), которые должны способствовать переходу от C к С++.

– * С++ можно купить в AT amp;T, Software Sales and Marketing, PO Box 25000, Greensboro, NC 27420, USA (телефон 800-828-UNIX) или в ваших местных организациях, осуществляющих продажу Системы UNIX. (прим. автора)

Упражнения

Упражнения находятся в конце глав. Все упражнения главным образом типа напишите-программу. Для решения всегда пишите такую программу, которая будет компилироваться и работать по меньшей мере на нескольких тестовых случаях. Упражнения различаются в основном по сложности, поэтому они помечены оценкой степени сложности. Шкала экспоненциальная, так что если на упражнение (*1) вам потребовалось пять минут, то на упражнение (*2) вам может потребоваться час, а на (*3) – день. Время, которое требуется на то, чтобы написать и оттестировать программу, зависит больше от опыта читателя, нежели от самого упражнения. Упражнение (*1) может отнять день, если для того, чтобы запустить ее, читателю сначала придется знакомиться с новой вычислительной системой. С другой стороны, тот, у кого под рукой окажется нужный набор программ, может сделать упражнение (*5) за час. В качестве источника упражнений к Главам 2-4 можно использовать любую книгу по C. У Ахо и др. [1] приведено большое количество общих структур данных и алгоритмов в терминах абстрактных типов данных. Эту книгу также может служить источником упражнений к Главам 5-7. Однако языку, который в этой книге использовался, недостает как функций членов, так и производных классов. Поэтому определяемые пользователем типы часто можно выражать в С++ более элегантно.

Замечания по Проекту Языка

Существенным критерием при разработке языка была простота. Там, где возникал выбор между упрощением руководства по языку и другой документации и упрощением компилятора, выбиралось первое. Огромное значение также предавалось совместимости с C, это помешало удалить синтаксис C.


В С++ нет типов данных высокого уровня и нет первичных операций высокого уровня. В нем нет, например, матричного типа с операцией обращения или типа строка с операцией конкатенации. Если пользователю понадобятся подобные типы, их можно определить в самом языке. По сути дела, основное, чем занимается программирование на С++ – это определение универсальных и специально-прикладных типов. Хорошо разработанный тип, определяемый пользователем, отличается от встроенного типа только способом определения, но не способом использования.

Исключались те черты, которые могли бы повлечь дополнительные расходы памяти или времени выполнения. Например, мыли о том, чтобы сделать необходимым хранение в каждом объекте «хозяйственной» информации, были отвергнуты. Если пользователь описывает структуру, состоящую из двух 16-битовых величин, то структура поместится в 32-битовый регистр.

С++ проектировался для использования в довольно традиционной среде компиляции и выполнения, среде программирования на C в системе UNIX. Средства обработки особых ситуаций и параллельного программирования, требующие нетривиальной загрузки и поддержки в процессе выполнения, не были включены в С++. Вследствие этого реализация С++ очень легко переносима. Однако есть полные основания использовать С++ в среде, где имеется гораздо более существенная поддержка. Такие средства, как динамическая загрузка, пошаговая трансляция и база данных определений типов могут с пользой применяться без воздействия на язык.

Типы и средства сокрытия данных в С++ опираются на проводимый во время компиляции анализ программ с целью предотвращения случайного искажения данных. Они не обеспечивают секретности или защиты от умышленного нарушения правил. Однако эти средства можно использовать без ограничений, что не приводит к дополнительным расходам времени на выполнение или пространства памяти.

Исторические Замечания

Безусловно, С++ восходит главным образом к C [7]. C сохранен как подмножество, поэтому сделанного в C акцента на средствах низкого уровня достаточно, чтобы справляться с самыми насущными задачами системного программирования. C, в свою очередь, многим обязан своему предшественнику BCPL [9]. На самом деле, комментарии // (заново) введены в С++ из BCPL. Если вы знаете BCPL, то вы заметите, что в С++ по-прежнему нет VALOF блока. Еще одним источником вдохновения послужил язык Simula67 [2,3], из него была позаимствована концепция класса (вместе с производными классами и функциями членами). Это было сделано, чтобы способствовать модульности через использование виртуальных функций. Возможности С++ по перегрузке операций и свобода в расположении описаний везде, где может встречаться оператор, похожи на Алгол68 [14].


Еще от автора Мюррей Хилл
Справочное руководство по C++

В книге рассказывается история главного героя, который сталкивается с различными проблемами и препятствиями на протяжении всего своего путешествия. По пути он встречает множество второстепенных персонажей, которые играют важные роли в истории. Благодаря опыту главного героя книга исследует такие темы, как любовь, потеря, надежда и стойкость. По мере того, как главный герой преодолевает свои трудности, он усваивает ценные уроки жизни и растет как личность.


Рекомендуем почитать
Pro Git

Разработчику часто требуется много сторонних инструментов, чтобы создавать и поддерживать проект. Система Git — один из таких инструментов и используется для контроля промежуточных версий вашего приложения, позволяя вам исправлять ошибки, откатывать к старой версии, разрабатывать проект в команде и сливать его потом. В книге вы узнаете об основах работы с Git: установка, ключевые команды, gitHub и многое другое.В книге рассматриваются следующие темы:основы Git;ветвление в Git;Git на сервере;распределённый Git;GitHub;инструменты Git;настройка Git;Git и другие системы контроля версий.


Java 7

Рассмотрено все необходимое для разработки, компиляции, отладки и запуска приложений Java. Изложены практические приемы использования как традиционных, так и новейших конструкций объектно-ориентированного языка Java, графической библиотеки классов Swing, расширенной библиотеки Java 2D, работа со звуком, печать, способы русификации программ. Приведено полное описание нововведений Java SE 7: двоичная запись чисел, строковые варианты разветвлений, "ромбовидный оператор", NIO2, новые средства многопоточности и др.


Язык программирования C++. Пятое издание

Лучшее руководство по программированию и справочник по языку, полностью пересмотренное и обновленное под стандарт С++11!Вы держите в руках новое издание популярного и исчерпывающего бестселлера по языку программирования С++, которое было полностью пересмотрено и обновлено под стандарт С++11. Оно поможет вам быстро изучить язык и использовать его весьма эффективными и передовыми способами. В соответствии с самыми передовыми и современными методиками изложения материала авторы демонстрируют использование базового языка и его стандартной библиотеки для разработки эффективного, читабельного и мощного кода.С самого начала этой книги читатель знакомится со стандартной библиотекой С++, ее самыми популярными функциями и средствами, что позволяет сразу же приступить к написанию полезных программ, еще не овладев всеми нюансами языка.


19 смертных грехов, угрожающих безопасности программ

Эта книга необходима всем разработчикам программного обеспечения, независимо от платформы, языка или вида приложений. В ней рассмотрены 19 грехов, угрожающих безопасности программ, и показано, как от них избавиться. Рассмотрены уязвимости на языках C/C++, C#, Java, Visual Basic, Visual Basic.NET, Perl, Python в операционных системах Windows, Unix, Linux, Mac OS, Novell Netware. Авторы издания, Майкл Ховард и Дэвид Лебланк, обучают программистов, как писать безопасный код в компании Microsoft. На различных примерах продемонстрированы как сами ошибки, так и способы их исправления и защиты от них.


Фундаментальные алгоритмы и структуры данных в Delphi

Книга "Фундаментальные алгоритмы и структуры данных в Delphi" представляет собой уникальное учебное и справочное пособие по наиболее распространенным алгоритмам манипулирования данными, которые зарекомендовали себя как надежные и проверенные многими поколениями программистов. По данным журнала "Delphi Informant" за 2002 год, эта книга была признана сообществом разработчиков прикладных приложений на Delphi как «самая лучшая книга по практическому применению всех версий Delphi».В книге подробно рассматриваются базовые понятия алгоритмов и основополагающие структуры данных, алгоритмы сортировки, поиска, хеширования, синтаксического разбора, сжатия данных, а также многие другие темы, тесно связанные с прикладным программированием.


Вторая жизнь старых компьютеров

Сейчас во многих школах, институтах и других учебных заведениях можно встретить компьютеры старого парка, уже отслужившие свое как морально, так и физически. На таких компьютерах можно изучать разве что Dos, что далеко от реалий сегодняшнего дня. К тому же у большинства, как правило, жесткий диск уже в нерабочем состоянии. Но и выбросить жалко, а новых никто не дает. Различные спонсоры, меценаты, бывает, подарят компьютер (один) и радуются, как дети. Спасибо, конечно, большое, но проблемы, как вы понимаете, этот компьютер в общем не решает, даже наоборот, усугубляет, работать на старых уже как-то не хочется, теперь просто есть с чем сравнивать.