РЕЦЕНЗИИ

Бобровский С. Программная инженерия. Технологии Пентагона на службе российских программистов. СПб.: Питер, 2003. - 222 с.

Эта сравнительно небольшая по объему книга состоит из четырех практически не связанных между собой глав. В соответствии с моими предпочтениями я читал их почти по футбольной схеме: 4-2-3-1.

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

В 80-х годах прошлого века считалось, что системный программист должен знать не менее 6-8 языков программирования и каждый раз использовать язык, наиболее адекватный решаемой задаче. Мне за свою программистскую жизнь пришлось выучить порядка двух десятков языков, не считая их различных диалектов. (Но это только звучит так красиво: из них восемь - ассемблеры разных машин и микропроцессоров - учатся легко и быстро, а потом пару месяцев идет процес привыкания, когда перестаешь думать, как написать, а размышляешь уже над тем, что писать. Другая группа - процедурные языки: Фортран, Бейсик, Паскаль, PL/1, PL/M, Ada, PostScript, HPL и Си, на которые при их изучении тратится время только на то, чтобы вникнуть во всякие прибамбасы и особенности. По-настоящему трудными для освоения оказались GPSS, Prolog и mu-MATH. (На последний из них я потратил полгода, поскольку функциональное программирование предполагает совершенно другой способ мышления.) Сейчас от программиста требуются несколько другие качества, и на вопрос, кого считать хорошим программистом, автор попытался дать ответ в первой главе.

Не совсем могу согласиться с утверждением, что на машинном языке невозможно разрабатывать мало-мальски большие проекты. Как-то году в 1983-м (!) директор института, где я тогда работал, получил телеграмму от В. Н. Челомея, у которого, очевидно, горела сдача очередной ракеты: "Прошу откомандировать в наше распоряжение 200 программистов, умеющих писать в машинных кодах". Очень жалею, что не забрал и не сохранил этот исторический документ. (Понятно, что в те годы у нас уже не было ни одного такого человека.) В тексте второй главы иногда встречаются терминологические неточности - например, термином "символический ассемблер" обозначен перемещающий ассемблер.

С некоторыми утверждениями автора можно поспорить, однако опыт моей работы над проектом виртуального компьютерного музея (www.computer-museum.ru) показывает, что писать об истории развития ПО значительно сложнее, чем об истории того или иного "железа". Менее очевидно авторство, множество разработок делалось параллельно, а о многих мало что известно. Так, один из лучших в мире по степени оптимизации компилятор языка Фортран был разработан в Москве в ИТМиВТ для машины БЭСМ-6, но об этом уже начинают забывать. В СССР, в Киеве, был сделан и свой язык Пролог, правда, к общеизвестному Prolog’у он никакого отношения не имел, а первоначально предназначался для обработки телеметрии на космическом корабле "Буран".

Мне показалось, что автор иногда приукрашивает достоинства некоторых ЯВУ, в частности PL/1. Предпочтения в выборе языка у программистов часто чисто вкусовые, основанные на собственном внутреннем эстетическом восприятии логической красоты конструкций языка и их взаимоувязанности. Тот же PL/1 (а мне приходилось на нем писать и читать его пару лет студентам), из-за своей аморфности и ошибок IBM’овского компилятора, использовавшегося на ЕС ЭВМ, не вызывает у меня никаких теплых чувств.

Третья глава посвящена методикам разработки ПО и управления программистскими проектами. Эта глава центральная в книге. Она разбита на два раздела: в одном рассматриваются вопросы, связанные с управлением проектами и планированием деятельности групп разработчиков, а в другом даны обзоры распространенных методик. Наиболее интересна малоизвестная в России методика Scrum.

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

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

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

Версия для печати