Файл: Руководство по стилю программирования и конструированию по.pdf
ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 30.11.2023
Просмотров: 758
Скачиваний: 2
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
СОДЕРЖАНИЕ
834
ЧАСТЬ VII Мастерство программирования
Г Л А В А 3 5
Где искать дополнительную
информацию
Содержание
쐽
35.1. Информация о конструировании ПО
쐽
35.2. Не связанные с конструированием темы
쐽
35.3. Периодические издания
쐽
35.4. Список литературы для разработчика ПО
쐽
35.5. Профессиональные ассоциации
Связанные темы
쐽
Web-ресурсы:
www.cc2e.com
Если вы так далеко продвинулись в чтении этой книги, то уже знаете, как много написано о практике эффективной разработки ПО. Доступной информации гораздо больше, чем можно представить. Все ошибки, которые вы делаете сейчас, люди уже сделали до вас. И если вы не хотите стать мальчиком для битья, то предпочтете читать их книги, чтобы не повторять их ошибки и не изобретать велосипед.
Поскольку в этой книге упоминаются сотни других книг и статей по разработке
ПО, трудно сказать, с чего начать чтение. Библиотека программиста включает в себя несколько видов информации. Основу составляют книги, объясняющие фун- даментальные концепции эффективного программирования. В других более под- робно рассматриваются технические, управленческие, интеллектуальные проблемы программирования. Подробные справочники по языкам, операционным системам,
средам разработки и аппаратному обеспечению содержат информацию, полез- ную для конкретных проектов.
Обычно книги последней категории представляют интерес в рамках одного проекта; в большей или меньшей степени они являются временными и здесь не обсуждаются. Что ка- сается других категорий, полезно иметь библиотечку, в которой основные виды деятельности по разработке ПО обсуждаются более глубоко: книги по выработке требований, конструированию, проектированию, управлению, тестированию и т. д.
В следующих разделах подробно описываются ресурсы по конструированию, а http://cc2e.com/3560
http://cc2e.com/3581
ГЛАВА 35 Где искать дополнительную информацию
835
затем предлагается обзор материалов, относящихся к других вопросам разработ- ки ПО. В разделе 35.4 все ресурсы систематизированы и дан список литературы для разработчика ПО.
35.1. Информация о конструировании ПО
Сначала я писал эту книгу, потому что не мог найти публи- каций, в которых бы всесторонне обсуждались вопросы конструирования ПО. За годы, прошедшие с момента пер- вого издания, появилось несколько хороших книг.
Книга «Pragmatic Programmer» (Hunt and Thomas, 2000) заостряет внимание на деятельности, непосредственно связанной с кодированием, включая тестирова- ние, отладку, использование утверждений и т. д. Не вдаваясь в детали кода, она знакомит с многочисленными правилами создания хорошей программы
В книге Джона Бентли «Programming Pearls», 2-е изд. (Bentley, 2000) обсуждаются искусство и наука проектирования ПО. Книга состоит из отлично написанных очерков, в которых глубокое понимание приемов эффективного конструирова- ния сочетается с увлеченностью этой темой. В каждой своей программе я использую что-нибудь полезное из очерков Бентли.
Работа Кента Бека «Extreme Programming Explained: Embrace
Change» (Beck, 2000) определяет подход к разработке ПО,
опирающийся на конструирование. Как разъясняется в раз- деле 3.1, утверждения автора относительно экономики эк- стремального программирования не подтверждаются резуль- татами исследований, но многие из его рекомендаций полезны при конструиро- вании независимо от того, что применяется: экстремальное программирование или другой подход.
В более специализированном труде Стива Мэгуаера «Writing Solid Code — Microsoft’s
Techniques for Developing Bug-Free C Software» (Maguire, 1993) рассматривается практика конструирования ПО в масштабных коммерческих приложениях. Кни- га главным образом отражает опыт автора, приобретенный при работе над при- ложениями Microsoft Office. В ней также обсуждаются технические приемы про- граммирования на языке C. Автор в целом не затрагивает вопросы объектно-ори- ентированного программирования, но большинство рассматриваемых тем пред- ставляет интерес в любой среде.
Брайан Керниган и Роб Пайк написали другую узкоспециализированную книгу —
«The Practice of Programming» (Kernighan and Pike, 1999), в которой уделяют вни- мание будничным, но жизненно необходимым моментам в работе программис- та, практическим аспектам программирования, сокращая разрыв между академи- ческими знаниями в информатике и практическими навыками. В книге, предпо- лагающей знание языков C/C++, обсуждается стиль программирования, проекти- рование, отладка и тестирование.
http://cc2e.com/3588
Перекрестная ссылка Об эконо- мике экстремального и быст- рого программирования см.
cc2e.com/3545.
836
ЧАСТЬ VII Мастерство программирования
Книга Сузан Ламмерс «Programmers at Work» (Lammers, 1986)
не переиздавалась, но ее стоит найти. Она содержит интер- вью с высококвалифицированными программистами, в ко- торых раскрываются их личности, профессиональные привычки и философия программирования. Среди тех, кто дает интервью, такие светила, как Билл Гейтс
(основатель Microsoft), Джон Уорнок (основатель Adobe), Энди Херцфельд (веду- щий разработчик ОС Macintosh), Батлер Лэмпсон (старший инженер компании
DEC, теперь работающий в Microsoft), Уэйн Рэтлифф (изобретатель dBase), Дан
Бриклин (изобретатель VisiCalc), и дюжина других.
35.2. Не связанные с конструированием темы
Помимо основной литературы, рассмотренной в предыдущем разделе, здесь пред- ставлены книги, не имеющие прямого отношения к теме конструирования ПО.
Обзорный материал
Ряд книг позволяет взглянуть на процесс разработки ПО с разных сторон.
Роберт Л. Гласс в работе «Facts and Fallacies of Software Engi- neering» (Glass, 2003) предлагает интересную трактовку традиционных представ- лений о возможном и невозможном в разработке ПО. Книга содержит много ука- зателей на дополнительные ресурсы.
В книге «Professional Sofware Development» (2004) я рассматриваю практику раз- работки ПО в ее современном виде и размышляю о том, какой она должна быть в идеале.
Книга «The Swebok: Guide to the Software Engineering Body of Knowledge» (Abran,
2001) разделяет на составляющие прикладную отрасль знаний, которая занима- ется оптимизацией и повышением эффективности разработки ПО, и погружает в детали конструирования ПО. Именно этот труд показывает, что в нашей облас- ти значительно больше достижений, чем можно представить.
Книга Джеральда Вейнберга «The Psychology of Computer Programming» (Weinberg,
1998) наполнена замечательными анекдотами о программировании. Она несколько устарела, так как написана во времена, когда программирование считалось един- ственным аспектом создания ПО. Совет, прозвучавший при первом обсуждении этой книги в «ACM Computing Reviews», актуален и сегодня:
«Каждый руководитель программистов должен иметь собственный экземпляр этой книги. Он должен читать ее, хранить у сердца, следовать ее наставлениям, а затем оставлять на своем столе, чтобы подчиненные могли ее украсть. Взамен украден- ным экземплярам следует подбрасывать новые, пока все не успокоятся». (Weiss, 1972).
Если вы не смогли найти «The Psychology of Computer Programming», ищите «The
Mythical Man-Month» (Brooks, 1995) или «PeopleWare» (DeMarco and Lister, 1999).
Обе книги убеждают в том, что программирование — прежде всего результат че- ловеческой деятельности и лишь во вторую очередь — нечто связанное с компь- ютерами.
http://cc2e.com/3549
http://cc2e.com/3595
1 ... 96 97 98 99 100 101 102 103 104
ГЛАВА 35 Где искать дополнительную информацию
837
И, наконец, превосходный обзор проблем разработки ПО сделан в «Software Crea- tivity» (Glass, 1995). Эту книгу следовало бы считать прорывом в отношении к программированию как к творчеству. Такую же роль сыграла книга «PeopleWare»
в вопросах коллективной разработки. Гласс сопоставляет творчество и дисцип- лину, теорию и практику, эвристику и методологию, процесс и результат, а также многие другие противоположные и в то же время взаимосвязанные понятия из области ПО. Спустя годы после обсуждения этой книги со своими коллегами я понял, в чем ее противоречие. Дело в том, что Гласс — редактор, а не автор очер- ков, вошедших в книгу, и поэтому у некоторых читателей возникает ощущение незавершенности. Тем не менее я до сих пор требую от каждого разработчика моей компании прочесть ее. Книга не переиздается, ее трудно найти, но затраченные на поиск усилия не окажутся напрасными.
Общие вопросы разработки ПО
Каждый практикующий программист должен иметь руководства высокого уров- ня по вопросам разработки ПО. Такие книги скорее очерчивают общую картину методологии, а не отдельные, характерные детали этой картины. Они знакомят с эффективными методиками разработки и предлагают сжатые описания специаль- ных технических приемов. Сокращенные описания недостаточно подробны, чтобы обучаться этим приемам, но, с другой стороны, для этого понадобилась бы кни- га, содержащая несколько тысяч страниц. И все же полученная информация по- зволяет выбрать необходимые для дальнейшей работы технологии и научиться применять их в комплексе.
Роджер С. Прэссман в книге «Software Engineering: A Practitioner’s Approach», 6-е изд. (Pressman, 2004) дает стройное толкование таким терминам, как требования,
проектирование, качественная проверка данных и управление. На 900 страницах этой книги уделено мало внимания практике программирования, но это не явля- ется существенным недостатком, особенно если у вас есть книга по конструиро- ванию, подобная той, что вы читаете сейчас.
Шестое издание книги Иэна Соммервилла «Software Engineering» (Sommerville, 2000)
сопоставимо с книгой Прэссмана и также содержит прекрасный обзор процесса разработки ПО.
Другие аннотированные библиографии
Хорошие библиографии по вычислительной технике — ред- кость. Далее рассматриваются те, что заслуживают внимания.
«ACM Computing Reviews» — специализированное издание
Ассоциации по вычислительной технике (ACM), представляющие собой обзор книг,
охватывающих все аспекты знаний о компьютерах и программировании. Разветв- ленная схема размещении материалов в этом издании позволяет без труда найти книги по интересующим темам. Для получения информации об этой публикации и о членстве в ACM пишите по адресу: ACM, PO Box 12114, Church Street Station, New
York, NY 10257.
Информация компании Construx Software о технологиях обу- чения и повышения профессионального уровня содержит- http://cc2e.com/3502
http://cc2e.com/3509
838
ЧАСТЬ VII Мастерство программирования ся на сайте
www.construx.com/ladder/. Здесь представлены списки источников, ре- комендованные для разработчиков, тестировщиков и руководителей в области ПО.
35.3. Периодические издания
Журналы для начинающих программистов
Журналы этого уровня часто продаются в газетных киосках.
«Software Development»,
www.sdmagazine.com. Этот журнал освещает общие вопросы программирования, а не пробле- мы использования конкретных сред. Статьи довольно хо- рошо написаны; журнал содержит обзор новых продуктов.
«Dr. Dobb’s Journal»,
www.ddj.com. Этот журнал ориентиро- ван на активных программистов. Его статьи тяготеют к де- тализации материала и содержат огромное количество кода.
Если не удается найти эти журналы в киоске, издатели могут прислать вам поощ- рительный экземпляр, а большинство статей доступно в сети.
Журналы для продвинутых программистов
Как правило, в киосках этих изданий не найти. Вам нужно обратиться в крупную университетскую библиотеку или подписаться на них.
«IEEE Software»,
www.computer.org/software/. В этом журнале,
выходящем раз в два месяца, обсуждаются вопросы кон- струирования и проектирования ПО, выработки требований и управления, а также другие темы передовых технологий создания ПО. Его цель
— «создать организацию, объединяющую ведущих специалистов в области ПО».
В 1993 году я писал, что это «самый полезный журнал, на который может подпи- саться программист». Позже мне довелось занимать в нем пост главного редакто- ра, и я по-прежнему убежден, что это лучшее периодическое издание, предназна- ченное для серьезной практической деятельности.
«IEEE Computer»,
www.computer.org/computer/. Этот ежемесяч- ный журнал является лидером публикаций компьютерной ассоциации IEEE (Института инженеров по электротехни- ке и электронике). Он охватывает широкий круг вопросов по вычислительной технике, использует жесткие критерии при отборе статей, обеспечивая высокое качество публикуемых материалов. Так как интересы издания довольно обшир- ны, в нем вы, пожалуй, найдете меньше полезных статей, чем в «IEEE Software».
«Communications of the ACM»,
www.acm.org/cacm/. Это одно из старейших и наиболее уважаемых компьютерных изда- ний имеет огромные полномочия, позволяющие расширять границы такого предмета, как компьютерология, который сегодня включает в себя значительно больше терминов и определений, чем несколько лет назад. Как и в случае с «IEEE Computer», диапазон вопросов издания довольно широк, и темы многих статей, возможно, не отвечают вашим интересам. Журнал отличает дух академизма, что имеет как хорошую, так и плохую стороны. К плохой следует http://cc2e.com/3516
http://cc2e.com/3523
http://cc2e.com/3530
http://cc2e.com/3537
http://cc2e.com/3544