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

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

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

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

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

Ябы считал веру в "единственный правильный способ" детской болезнью, если бы этой болезньюслишком часто не заболевали и опытные программисты. Напомним еще раз: только по той причине, чтоприем успешно использовался в течение года для одного проекта, не следует, что он без всякихизменений окажется столь же полезен для другого человека или другой задачи. Всегда важно не иметьпредубеждений.Убеждение в том, что нет единственно верного решения, пронизывает весь проект языка С++, и, восновном, по этой причине в первом издании книги не было раздела, посвященного проектированию: яне хотел, чтобы его рассматривали как "манифест" моих личных симпатий. По этой же причине здесь,как и в главах 12 и 13, нет четко определенного взгляда на процесс развития программногообеспечения, скорее здесь просто дается обсуждение определенного круга, часто возникающих,вопросов и предлагаются некоторые решения, оказавшиеся полезными в определенных условиях.За этим введением следует краткое обсуждение целей и средств развития программного обеспечения в$$11.2, а дальше глава распадается на две основных части:-$$11.3 содержит описание процесса развития программного обеспечения.-$$11.4 содержит некоторые практические рекомендации по организации этого процесса.Взаимосвязь между проектированием и языком программирования обсуждается в главе 12, а глава 13посвящена вопросам проектирования библиотек для С++.284Бьерн Страуструп.Язык программирования С++Очевидно, большая часть рассуждений относится к программным проектам большого объема.Читатели, которые не участвуют в таких разработках, могут сидеть спокойно и радоваться, что все этиужасы их миновали, или же они могут выбрать вопросы, касающиеся только их интересов.

Нет нижнейграницы размера программы, начиная с которой имеет смысл заняться проектированием прежде, чемначать писать программу. Однако все-таки есть нижняя граница, начиная с которой можно использоватькакие-либо методы проектирования. Вопросы, связанные с размером, обсуждаются в $$11.4.2.Труднее всего в программных проектах бороться с их сложностью. Есть только один общий способборьбы со сложностью: разделяй и властвуй.

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

Это основной, внутренне присущий проектированию, принцип борьбы сосложностью и подход к управлению людьми,занятыми в проекте.В обоих случаях выделение частей и определение интерфейса между частями - это то место, гдетребуется максимум опыта и чутья. Такое выделение не является чисто механическим процессом,обычно оно требует проницательности, которая может появиться только в результате доскональногопонимания системы на различных уровнях абстракции (см. $$11.3.3, $$12.2.1 и $$13.3). Близорукийвзгляд на программу или на процесс разработки программного обеспечения часто приводит кдефектной системе.

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

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

Реферат по этой тематике можно найти в[2]. В этой книге используется достаточно общая и традиционная терминология. Самые "интересные"термины, как: проектирование, прототип, программист - имеют в литературе несколько определений,часто противоречащих друг другу, поэтому предостерегаем вас от того, чтобы, исходя из принятых ввашем окружении определений терминов, вы не вынесли из книги то, на что автор совершенно нерассчитывал.11.2 Цели и средстваЦель программирования - создать продукт, удовлетворяющий пользователя. Важнейшим средствомдля достижении этой цели является создание программы с ясной внутренней структурой и воспитаниеколлектива программистов и разработчиков, имеющих достаточный опыт и мотивацию, чтобы быстро иэффективно реагировать на все изменения.Почему это так? Ведь внутрення структура программы и процесс, с помощью которого она получена, видеале никак не касаются конечного пользователя.

Более того, если конечный пользователь почему-тоинтересуется тем, как написана программа, то что-то с этой программой не так. Почему, несмотря наэто, так важны структура программы и люди, ее создавшие? В конце концов конечный пользовательничего об этом не должен знать.Ясная внутренняя структура программы облегчает:-тестирование,-переносимость,-сопровождение,-расширение,285Бьерн Страуструп.-реорганизацию и-понимание.Язык программирования С++Главное здесь в том, что любая удачная большая программа имеет долгую жизнь, в течение которойнад ней работают поколения программистов и разработчиков, она переносится на новую машину,приспосабливается к непредусмотренным требованиям и несколько раз перестраивается.

Во все времяжизни необходимо в приемлемое время и с допустимым числом ошибок выдавать версии программы.Не планировать все это - все равно, что запланировать неудачу.Отметим, что, хотя в идеальном случае случае пользователи не должны знать внутреннюю структурусистемы, на практике они обычно хотят ее знать.

Например, пользователь может желать познакомитьсяв деталях с разработкой системы с целью научиться контролировать возможности и надежностьсистемы на случай переделок и расширений. Если рассматриваемый программный продукт есть неполная система, а набор библиотек для получения программных систем, то пользователь захочетузнать побольше "деталей", чтобы они служили источником идей и помогали лучше использоватьбиблиотеку.Нужно уметь очень точно определить объем проектирования программы. Недостаточный объемприводит к бесконечному срезанию острых углов ("побыстрее передадим систему, а ошибку устраним вследующей версии"). Избыточный объем приводит к усложненному описанию системы, в которомсущественное теряется в формальностях, в результате чего при реорганизации программы получениеработающей версии затягивается ("новая структура намного лучше старой, пользователь согласенждать ради нее").

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

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

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

Слишком жесткая структураможет мешать росту и затруднять совершенствование. Здесь подвергается проверке талант и опытменеджера. Для отдельного работника аналогичная проблема сводится к определению, где нужно286Бьерн Страуструп.Язык программирования С++проявить смекалку, а где действовать по рецептам.Можно рекомендовать планировать не на период до выдачи следующей версии системы, а на болеедолгий срок. Строить планы только до выпуска очередной версии - значит планировать неудачу.

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

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

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