На главную страницу AlgoNet В сотрудничестве с ZDNet
АРХИВ СТАТЕЙ 2003-10-7 на главную / новости от 2003-10-7
AlgoNet.ru
поиск

 

Место для Вашей рекламы!

 

Все новости от 7 октября 2003 г.

Как повысить мастерство программиста?

Бобровский С. Программная инженерия. Технологии Пентагона на службе российских программистов. СПб.: Питер, 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 и др., проводит колоссальную работу по созданию технологического превосходства американских вооруженных сил, и здесь у него можно многому поучиться, скажем, разумному отношению к секретности.

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

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

По существу, такие отделы напрямую противодействуют конкурентной разведке.

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

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

 

← сентябрь 2003 1  2  3  6  7  8  9  10  13 ноябрь 2003 →
Реклама!
 

 

Место для Вашей рекламы!