Главная » Просмотр файлов » Б. Страуструп - Язык программирования С++

Б. Страуструп - Язык программирования С++ (1119446), страница 9

Файл №1119446 Б. Страуструп - Язык программирования С++ (Б. Страуструп - Язык программирования С++) 9 страницаБ. Страуструп - Язык программирования С++ (1119446) страница 92019-05-09СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 9)

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

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

Это вызвано увеличениемразмеров программ со времени появления С. Небольшую программу (скажем, не более 1000 строк)можно заставить из упрямства работать, нарушая все правила хорошего стиля программирования.Однако, действуя так, человек уже не сможет справиться с большой программой.

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

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

В С++ есть такой же хороший набор средств для создания большихпрограмм, как во многих языках. Но когда программа становится еще больше, проблемы по еесозданию и сопровождению перемещаются из области языка в более глобальную область программныхсредств и управления проектом. Этим вопросам посвящены главы 11 и 12.В этой книге основное внимание уделяется методам создания универсальных средств, полезных типов,библиотек и т.д.

Эти методы можно успешно применять как для маленьких, так и для большихпрограмм. Более того, поскольку все нетривиальные программы состоят из нескольких в значительнойстепени независимых друг от друга частей, методы программирования отдельных частей пригодятсякак системным, так и прикладным программистам.Может возникнуть подозрение, что запись программы с использованием подробной системы типов,увеличит размер текста. Для программы на С++ это не так: программа на С++, в которой описаны типыформальных параметров функций, определены классы и т.п., обычно бывает даже короче своегоэквивалента на С, где эти средства не используются. Когда в программе на С++ используютсябиблиотеки, она также оказывается короче своего эквивалента на С, если, конечно, он существует.Философские замечанияЯзык программирования решает две взаимосвязанные задачи: позволяет программисту записатьподлежащие выполнению действия и формирует понятия, которыми программист оперирует,размышляя о своей задаче.

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

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

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

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

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

Характеристики

Список файлов книги

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6384
Авторов
на СтудИзбе
308
Средний доход
с одного платного файла
Обучение Подробнее