Softpanorama, март 1996; v.8.No.1(80) *** FOREWORD *** Состав. Н.Н.Безруков =================== Copyright 1996, OOO Софтпанорама ======================= ---------------------------------------- # К О Л О Н К А Р Е Д А К Т О Р А # ---------------------------------------- Остановится - оглянуться ! (традиционная колонка первого номера очередного года) Уважаемые коллеги ! Сам факт существования бюллетеня в течении восьми лет позволяет мне как реда- ктору спокойнее смотреть на нынешние изменения в технологии и на рекламные волны которые то и дело прокатываются по миру PC. Проработав в области про- граммирования три десятка лет я наблюдал расцвет и закат нескольких поколе- ний компьюетров дюжин платформ, технологий и языков программирования. Я уже не раз пытался обратить внимание читательской аудитории на важность изуче- ния истории компьютерной технологии и даже пытался одно время публиковать раздел HISTORY в бюллетене. Поскольку как показали анкеты читателей это их не особо интересует, раздел умер. Единственной данью истории осталась эта традиционная колонка первого номера года. Это наверное плохо, поскольку уровень знакомства с историей вообще, и компьютерной историей в частности у программистов временами напоминает аналогичный уровень у спортсменов и безусловно оставляет желать лучшего. В этом плане мы действительно "Иваны, не помнящие родства" :-(. Важность понимания истории совсем не очевидна, когда тебе, скажем, 25 лет, однако "ничто не ново под луной" и по-видимому первый, пионерский этап раз- вития компьютерной технологии в целом и программирования в частности уже позади. Поэтому знание истории уже сейчас может помочь в предсказании буду- щего и дает определенные преимущества в оценке перспектив, хотя темпы раз- вития компьютерной технологии все еще остаются высокими и предсказания ос- нованные на исторических аналогиях в таких быстро меняющихся областях до- вольно ненадежны. В частности понимание того, что компьютеры с Pentium 100, 16M RAM и гигабайт- ным диском через пяток лет будут в положении сегодняшних 386dx40 c 4M и це- ны на них будут соответствующие, наверное, способно снизить нездоровый блеск в глазах при виде P100 и более спокойно работать пока на AMD 486dx33 c 4M :-). Да даже AT286 c 1M и 40M винчестером это на самом деле довольно мощная машина и под DOS на ней многое можно сделать, если не гнаться за ко- сметикой. Я хочу еще раз подчеркнуть, что несмотря на высокие темпы, отно- сительное значение изменений сейчас падает в том смысле, что переход с 8086 на 80286 был значительно важнее перехода с 80486 на Pentium и изменение ем- кости массовых винчестеров с 10 до 20M было важнее, чем с 1G до 2G. Поэтому период гонки за последней версией как программном обеспечении, так и в ап- паратном обеспечении является в какой-то мере пройденным этапом. Мне кажет- ся, что большинство пользователей уже поняли, что гонка за последней версий микропроцессора или программы это, пожалуй, не самое разумное поведение и что на смену P166 придет P180, P200 или что-то еще. Что касается аппаратного обеспечения, то для сопоставления я приведу несколь- ко заметок из январского номера 1995 года. Они объективно свидетельствуют насколько скромнее были наши возможности всего год назад: AMD приступила к массовому выпуску микропроцессоров AMD486dx4/100... Как и в случае с 386 процессорами фирма уже захватила значительную часть рынка за счет более низкой цены и высокого качества своих процессоров. ADM486dx4/100 стоит порядка $350, что примерно на $100 дешевле аналогич- ного микропроцессора фирмы Intel. При этом есть как варианты на 5v, так и вариант на 3.5 вольт. Последний несомненно предпочтительнее. Возможно через некоторое время они вытеснят все остальные типы 486 процессоров как в свое время произошло с 386dx40. # БНН Стоимость MB VL 465dx2/66 упала до $219 и она стала оптимальной по соотношению стоимость/производительность при модернизации и сборке собственных компьютеров с СНГ... При этом MB с ISA практически исчезли, поскольку существенно уступают по производительности motherboard c VL. Покупать такие MB совершенно невы- годно. По отзывам пользователей motherboard с AMD486dx2/66 работают не хуже Intel, а стоят примерно на $50 дешевле. Дефект первых AMD496dx2/66, которые перегревались без вентилятора, сейчас полностью устранен. # БНН Падение цен на винчестеры продолжается. Western Digital 420M теряют лидирующую позицию по соотношению стоимости и емкости среди IDE винчестеров... С появлением дешевых дисков 730M и 810M, а также снижением цен на диски 540M и 1G лидером по стоимости одного мегабайта для винчестеров емкостью до одного гигабайта стали диски 540M. Однако разрыв в ценах пока не яв- ляется существенным. WD 420 в начале января в США можно купить примерно за $190($0.45 за один мегабайт). В то же время диски WD 540M стоят при- мерно $215 (примерно $0.39 за один мегабайт). Гигабайтный винт WD31000A фирмы Western Digital можно купить за $415, т.е. примерно по $0.4 за ме- габайт и они тоже близки к оптимальным по стоимости одного мегабайта и в то же время имеют время доступа 10ms. # БНН Из этой подборки видно, что стоимость мегагерца процессора и мегабайта винче- стера за год упала более чем вдвое. И этот процесс пока продолжается при- мерно теми же темпами. Положение с программным обеспечением еще интереснее. Цены на него тоже пада- ют, но это скорее связано со своего рода кризисом перепроизводства в ком- мерческом программировании, что особенно заметно на доходах американских фирм следующих в фарватере Microsoft и выпустивших новые версии своих про- дуктов для Windows 95. Продажи новых версий падают и тот же Microsoft сей- час буквально упрашивает пользователей попробовать версии его продуктов под Windows 95, рассылая бесплатные CD с версиями работающими в течении опреде- ленного срока (почти как Shareware), вводящего возможность бесплатного пе- рехода с Windows 95 на Windows NT и обратно при условии покупки только од- ной из этих операционных систем и т.д. и т.п. Малый интерес к новым пакетам для Windows 95 да и самому Windows 95, парадоксальное возрастание интереса к DOS (в частности появление специальных, ориентированных исключительно на DOS журналов) достаточно показательны как проявление той же тенденции - па- дение относительного значения изменений. Следуя ей я ввел раздел DOSUTIL в выпуск А бюллетеня. Таким образом популярные утилиты для DOS будут теперь публиковаться в выпуске А. В то же время этот кризис в области продаж коммерческого программного обеспе- чения связан не только с возрастающим насыщением и стабилизацией потреби- тельского рынка, но и по меньшей мере частично с кризисом направления раз- работки программного обеспечения, которое называется fatware, Billyboy architecture или Playboy architecture. Речь идет о направлении, наиболее ярким представителем которого является Microsoft и при котором наряду с ог- ромными усилиями по созданию графического интерфейса ярко выражено стремле- ние внести в продукт как можно больше возможностей и режимов, экстенсивно добавляя фичи как игрушки на рождественскую елку, ценой увеличения потреб- ляемых ресурсов(роста "монстрообразности"). И в то же время не уделяя, или уделяя очень мало внимания архитектуре самого продукта. На уровне внутрен- них структур проталкиваются слабые, ненадежные архитектурные решения, дуб- лирование функций и все чаще сотрудники фирм разрабатывающих той или иной программный продукт становятся яркими противниками использования этого же продукта знакомыми и друзьями. Так в Office 95 почти физически ощущается монстрообразность нынешнего поколения коммерческих пакетов. В какой-то мере нынешний интерес к OS/2 и Linux является одновременно показателем разочаро- вания наиболее грамотной части пользователей в playboy architecture. Мне кажется, что в связи с появлением WWW время Playboy architecture выдаю- щимся памятником которой наверное навсегда останется MS Office прошло. Хотя со времени графической революции мода стала важным фактором в выборе про- граммных продуктов и помпезный фасад в стиле Windows 95 это половина успеха на рынке, сейчас можно констатировать, что пользователи начинают отворачи- ваться от легкомысленного, пренебрежительного отношения к внутреннему пост- роению, архитектуре программных комплектов и операционных систем, когда за ослепительным фасадом с красивыми окошками, иконками и прочей мишурой скры- вается убогая и противоречивая внутренняя конструкция, c множеством случай- ных решений, заплат и подпорок. Что бы не врали пользователям издания кон- тролируемые копорациями Ziff-Davis и IDG им трудно оспаривать тот факт, что Windows 95 имеет прохо продуманную архитектуру в значительной степени ско- пированную с тоже не слишком архитектурно стройной Macintosh System 6 (но она была первой коммерческой графической OS!) с несколькими расширениями, напоминающие специалистам MAC System 7. Все большее число людей понимает, что billyboy architecture ведет к неста- бильности и неоправданным ограничениям. Примером последних является труд- ность переноса пакетов под Windows с одного логического диска на другой, а также трудности инсталяции и деинстляции пакетов под Windows. Неслучайно при работе с Windows 3.xx часто инсталляция нового пакета создает проблемы и Windows приходится "убивать" и переинсталлировать все пакеты. Еще одним характерным признаком Playboy architecture является сознательное пренебре- жение отладкой и выпуск новых версий вместо кропотливого исправлению ошибок в пределах одной версии и доведения ее до приемлемого уровня надежности. Я думаю, что переход к HTML как стандартному представлению документов поможет хотя бы частично восстановить утерянные в настоящее время в fatware принци- пы - соответствие размера программ размеру решаемых задач, использование независимых и взаимодействующих компонент связанных на уровне общего языка. Тем кто хочет большего - единый язык управления заданиями и макроязык, воз- можности использования не только графического интерфейса, но и командной строки и, наконец, обеспечение элементарной безопасности внутри операцион- ной системы и отдельных программных компонент наверное проще перейти на альтернативную операционную систему(OS/2, Linux, FreeBSD), чем ждать чегото подобного от Microsoft, хотя соревнование OLE и OpenDOC обещает быть доста- точно интересным и в плане продвижения OLE Microsoft отступать некуда. Что касается безопасности то тут послужной список Microsoft просто позорен (не- смотря на десятилетнюю историю компьютерных вирусов в MS DOS Microsoft про- явил полную бездарность в устранении причин, облегчающих их написание и распространение в этой среде). Так или иначе многие сейчас сознательно или бессознательно протестуют против нынешнего состояния когда пользователь тонет в монстрообразных и переуслож- ненных пакетах. Когда полугигабайтный винчестер заполняется дюжиной пакетов и файлы приходится швырять с одного раздела на другой, чтобы установить еще одного монстрика. Появляется какое-то чувство "программноненавистничества" и желание прикончить все эти разжиревшие монстрики клавишей F8 и вернуться на две-три версии назад. Чувство неуютности и недовольства быстрым ростом размеров программного обеспечения и негибкостью Windows, которую периодиче- ски приходится убивать и переустанавливать все пакеты, проявляются сейчас массово. Поэтому реакция на это недовольство в той или иной форме возможно будет движущей силой изменений в области программного обеспечения в текущем году. По крайней мере мне бы этого очень хотелось... * * * Поскольку аудитория бюллетеня меняется, по сложившейся традиции в этой колон- ке редактора воспроизводится одна из немногих отечественных статей вызвав- ших, в свое время, резонанс на Западе и представляющая значительный истори- ческий интерес. Это статья покойного академика А.Ершова "Человеческий фак- тор в программировании". Хотя она была опубликована в 1972 г. т.е. на зака- те хрущевской оттепели и, кстати, сначала на английском языке (фактически это выступление на каком-то обеде и я сначала познакомился с ним по тексту в Communications of the ACM и только через много лет увидел перевод), а то- лько потом на русском. История появления этой, безусловно талантливо напи- санной статьи, достаточно загадочна. Например, как ни странно, русский ва- риант уступал английскому оригиналу и был очень похож на некачественный пе- ревод, хотя А.Ершов владел английским далеко не блестяще (может академик после обеда потерял оригинал и публикация шла в обратном переводе с англий- ского ;-). Кроме того, для тех кто знает наш уровень 1972 года, когда в стране были во- обще считанные экземпляры компьютеров(основными были Минск22, Минск-32 и БЭСМ-6), кажется несколько странным, что она была написана человеком, жив- шим, в основном, в стране развитого социализма (правда А.Ершов относился к числу весьма малочисленных в те времена "выездных" академиков, часто выез- жал на зарубежные конференции и даже помнится в течении некоторого времени работал по обмену в одном из американских университетов). Не исключено, что она является пересказом талантливого обобщения тех времен на Западе неизве- стным автором, каким-то образом "внесенного в уши" академику или результа- том "бартера", скажем, ящика армянского коньяка на текст речи для упомяну- того выше обеда :-). Многие положения этой статьи до сих пор звучат удивительно актуально и я ис- кренне рад, что несколько лет назад мне удалось вспомнить о ее существова- нии и с тех под регулярно делать новым читателям бюллетеня этот маленький подарок в первом номере года. Я надеюсь, что старые читателя меня извинят. Поскольку как я уже указывал, статья в Кибернетике представляла собой не слишком качественный перевод с английского (текст этой статьи был опублико- ван в январском номере Софтпанорамы за 1992 г.) в публикуемой ниже версии мной исправлены некоторые шероховатости перевода. 11.03.96 С уважением Н.Безруков Софтпанорама 1992, No.1(25) *** REPRINTS *** Составитель: Н.Н. БЕЗРУКОВ ***************************************************************************** А.Ершов ЧЕЛОВЕЧЕСКИЙ ФАКТОР В ПРОГРАММИРОВАНИИ Должен признаться, что когда я получил приглашение выступить на этом собра- нии(точнее обеде - БНН), моим первым действием было узнать, кто до меня удостаивался аналогичного приглашения. Я нашел в списке предыдущих ораторов трех писателей, двух конгрессменов, одного генерала, но практически ни од- ного представителя нашей программистской профессии. Наверное, это было не случайно: быстрое и экстенсивное развитие нашей области неизбежно увеличи- вало число пограничных столкновений и связанного с ними интереса к внешнему миру. Однако, по-видимому, не менее очевидно и то, что сейчас для нас нужно не столько глядеться в зеркало общественного мнения, сколько самим разо- браться в себе, с тем чтобы справиться с рядом весьма серьезных проблем на- шей профессии. Во всяком случае, я позволил себе именно с этих позиций предложить вашему вниманию некоторые соображения о человеческих факторах в программировании. Мой исходный тезис состоит в том, что сейчас для программистов наступают тру- дные времена. Объем программ возрастает несоизмеримо по отношению к зарпла- те. Романтический ореол непостижимости этого занятия, если он когда-либо и существовал, начинает меркнуть. Так называемые софтверхаусы тают, как вче- рашний снег на солнце. Будучи самой дефицитной профессией каких-нибудь семь лет назад, программирование начинает появляться в книгах агентств по заня- тости. Оспаривается даже само стремление рассматривать программистов как профессионалов особого рода. Главное же это то, что вольная братия програм- мистов постепенно попадает под влияние администраторов и менеджеров, кото- рые стремятся сделать труд программиста планируемым, измеряемым, однородным и обезличенным. Пожалуйста, не подумайте, что я считаю эту тенденцию неправильной. Я сам уже давно выступаю перед программистами в качестве администратора и вношу свой посильный вклад в индустриализацию их труда. С этих позиций должен согласиться, что как профессия программирование еще не достигло своей зрелости. Характерным свидетельством этому в течение по- следних лет была волна мелкого бизнеса, связанного с софтверхаусами. Такой софтверхаус "сооружался" в течение нескольких недель группой толковых про- граммистов, как правило, покинувших большую организацию, в которой они по- лучили начальный опыт. В большинстве случаев мотивом для такой инициативы была жажда наживы, полудетское желание избавиться от излишней опеки, конеч- но, в сочетании с некоторой интересной и полезной идеей в области разработ- ки софтвера. Однако в этом деле жизнеспособными оказались лишь такие колле- ктивы, в которых этот партизанский дух быстро заменялся режимом экономии, иерархией отношений, жесткой дисциплиной, словом, всем тем, что в свое вре- мя вытолкнуло их из "родительского дома". В качестве шутки можно заметить, что вся эта история напоминает сказку о трех поросятах: братья-программисты в конце концов собрались в крепком софтверхаусе, но лишь после того, как первые два были унесены волчьим ветром беспощадной коммерции. Таким образом, подчинение программирования большому бизнеса - это неизбеж- ный факт. Однако я вижу некоторую опасность в превращении программистов просто в высокооплачиваемый отряд наемных тружеников умственного труда. Пе- ред лицом этой тенденции программист должен найти некоторую систему внут- ренних ценностей в своем деле, обладание которой позволит ему легче ассими- лировать индустриальные методы работы, а где надо - преодолевать их. Мой второй тезис состоит в том, что эта система ценностей в программировании объективно существует, однако осознана не до конца, известна на всем и по- этому требует распространения и защиты. Эта система имеет много компонент, пожалуй, самая важная из них - это профессиональный статус программиста (надо сказать, что я говорю о программистах в широком смысле, причисляя к ним и системных аналитиков), но мне сейчас больше хочется сказать об эсте- тической, или об эмоциональной, стороне программирования, причем не только о том, что вознаграждает программиста, когда он выходит со своим продуктом на рынок, но и о том, что составляет его нравственную опору, когда он оста- ется наедине с программой или машиной. Вы, конечно, можете спросить меня, а стоит ли говорить об этом? Ответ будет состоять не только в том, что программирование стало сейчас массовой про- фессией. Мой третий тезис заключается в том, что программирование - это самая трудная из всех массовых профессий. Ее трудность до сих пор еще ни в коей мере не признана обществом, она на порядок выше даже таких экзотических профессий, основанных на гипертрофии врожденных способностей, как цирковые артисты и верхолазы. Трудность профессии программиста в том, что именно программисты непосредст- венно "упираются" в пределы человеческого познания в виде алгоритмически неразрешимых проблем и глубоких тайн работы головного мозга. Ее трудность также в том, что программист должен обладать способностью пер- воклассного математика к абстракции и логическому мышлению в сочетании с эдисоновским талантом сооружать все что угодно из нуля и единицы. Он должен сочетать аккуратность банковского клерка с проницательностью разведчика, фантазию автора детективных романов с трезвой практичностью бизнесмена. А кроме того, программист должен приобщаться к корпоративным интересам, иметь вкус к коллективной работе, понимать цели работ и многое другое. Я знаю, что эти трудности могут быть преодолены только путем большого эмо- ционального напряжения, требующего от программиста особого самосознания и внутренней позитивной установки. Если когда-либо А.Хейли напишет роман "Вы- числительный центр", вы увидите, что это будет самый увлекательный его бестселлер. Мой следующий тезис состоит в том, что понимание или хотя бы ощущение эстети- ческой природы программирования является не только одной из движущих сил программиста, но и необходимо для тех, кто управляет программистами, и в особенности для тех, кто их воспитывает и обучает. Позволю себе перечислить некоторое количество организационных альтернатив, или просто трудных вопро- сов, правильно разрешить которые можно только с полным учетом обсуждаемых факторов: Возможна и нужна ли организация разработки софтвера по принципу конвейера ? Кого и почему труднее найти для реализации софтверного проекта - руководи- теля или исполнителя ? Как сочетать элитарность системного программирования с его массовостью ? Как воспитать программиста - через мировоззрение (университет) или профес- сиональные навыки (технический институт) ? Что такое индивидуальные способности в программировании, специфичны ли они и нужны ли они ? Можно и нужно ли отделять проектирование большой программы от ее изготовле- ния ? Эти вопросы являются только частью общей проблемы. Посмотрим вкратце, как связать поставку этих вопросов с анализом человеческого фактора в програм- мировании. О конвейере. Я лично считаю конвейер поистине дьявольским изобретением. Под- нимая продуктивность на небывалый уровень, но в то же время является самым бесчеловечным видом работы из всех мне известных. Конвейерный метод в про- граммировании может либо убить интеллектуальную компоненту в труде програм- миста, либо вызвать неврозы из-за противоречия меду монотонностью в трудо- способностью работы. Представьте себе человека, обязанного 8 часов в день, 5 дней в неделю, 500 недель в году, решать одни кроссворды, и вы поймете, что такое программист, специализирующийся, например на написании редактиру- ющих программ. Одним словом, раскрепление людей по элементарным операциям в многомодульной системе - далеко не простая задача. О руководителях и исполнителях. Не торопитесь ставить руководителя на первое место, объясняя, что по определению руководителя найти или создать труднее. Давайте подумаем, почему сплошь да рядом руководитель проекта предпочитает начинать с молодыми специалистами, кончившими университет два-три года на- зад, нежели с людьми, чей стаж работы превышает пять лет? Но потому ли, что мы предпочитаем использовать чистый лист и пластичность молодого человека, нежели преодолевать пассивное сопротивление более зрелого и менее ясного для нас 33-летнего главы семейства. Но это, в частности, означает, что мы не умеем гармонично развивать профессиональные достоинства исполнителя так, чтобы они не падали с возрастом и были бы полезны и для него самого и его настоящих и будущих начальников. Элитарность программистов представляется мне очевидной и в этом представле- нии является интереснейшим вызовом человечеству в целом, причем, надеюсь, этот вызов будет принят и преодолен. Эту мысль я поясню позже. Мировоззрение и профессионализм. Проблема, конечно, не только в том, чтобы объективно оценить требуемое соотношение кандидатов наук и дипломированных инженеров, хотя вокруг этого возникает изрядное количество всем известных кадровых проблем. Суть проблемы в том, чтобы признать, что программирование требует от человека несколько особого взгляда на мир, его потребности и эволюцию, особой моральной подготовленности к своему долгу. Программист - это солдат технической революции и как таковой должен обладать революцион- ным мышлением. Теперь я подхожу к тому, чтобы сформулировать центральный тезис моей речи. Он состоит в утверждении, что программирование обладает богатой, глубокой и своеобразной эстетикой, которая лежит в основе внутреннего отношения про- граммиста к своей профессии, являясь источником интеллектуальной силы, яр- ких переживаний и глубокого удовлетворения. Корни этой эстетики лежат в творческой природе программирования, его трудности и общественной значимос- ти. Здесь, прежде чем продолжить основную мысль, хочу подчеркнуть важность вну- треннего отношения человека к своему делу. Сейчас идет много споров о том, является ли программирование специфической профессией. Это не отвлеченный спор, а дискуссия, результат которой имеет прямые организационные, юридиче- ские и образовательные последствия. Так вот, результат этого спора меньше всего должен определяться тем, что будут говорить о программировании не сведущие в нем люди, какими бы авторитетом и властью они ни обладали. Наше собственное самосознание и способность к корпоративному взаимопониманию - вот что самое главное. Выделить эстетическую сущность любого вида профессиональной деятельности очень просто. Она, по всей сути, реализуется в субъективных категориях, глубоко сплетается с этическим кодексом профессии, ее техническим содержа- нием и юридическим статусом. Поэтому мое перечисление эстетических компо- нент программирования также будет носить субъективный и очень предваритель- ный характер. Сначала я сделаю некоторые замечания, отражающие внутреннюю природу про- граммирования. Творческая и конструктивная природа программирования не требует особых дока- зательств. Хочется высказать, быть может, более спорную мысль, что в своей творческой природе программирование идет намного дальше большинства других профессий, приближаясь к математике и писательскому делу. В большинстве других профессий мы лишь "приручаем" силы природы - просто "сажаем тигра в бензобак", - используя те или иные физические или биологические явления, не обязательно постигая их сущность. В программировании же мы в некотором смы- сле идем до конца. Один из тезисов современной теории познания "мы знаем это, если можем это запрограммировать" очень выпукло характеризует этот ма- ксимализм нашей профессии. Другим очень важным эстетическим принципом программирования является его высочайшая требовательность к законченности продукта. Конечно, это харак- терно для многих инженерных профессий. Однако программирование и здесь идет дальше. Хотя в мультимиллионных программных конгломератах это свойство поч- ти исчезает, на уровне индивидуальной работы всегда существует поразитель- ный контраст между почти сделанной и полностью сделанной работой. Эта сто- процентность программирования - источник его трудности и в то же время глу- бочайшего удовлетворения работающей программой. Машина, снабжая программой, ведет себя разумно. Программист является пер- вым, кто обнаруживает это. Применяя метафору троицы, он ощущает себя в этот момент и отцом - создателем программы, и сыном - братом этой машины, и но- сителем святого духа - вложенного в нее интеллекта. Это торжество интеллек- та, наверное, самая сильная и самая специфическая сторона программирования. В отношении к машине у честного программиста есть еще одна особенность. В некотором смысле он относится к ней как хороший жокей к своей лошади. Зная и хорошо понимая возможность машины, он никогда не позволит себе компенси- ровать леность ума беззаботной тратой ресурсов ЭВМ. Это чисто эстетическое отношение к делу является самым эффективным предохранителем против бездум- ной "пессимизации" софтвера, которая хотя и не вызывает особых возражений у компаний, продающих машинное время, но на деле приводит к надувательству покупателя или потере эффективности. Другую часть эстетической сущности программирования составляют такие его ком- поненты, которые связаны с социальной или общественной функцией программи- рования. Всякий раз когда мы рассматриваем социальное явление большого мас- штаба (а появление и использование ЭВМ безусловно является таковым), мы должны поискать некоторые широкие исторические аналоги, которые могут дать какую-то опору для экстраполяции и предвидения. О том, что ЭВМ принесли с собой техническую революцию и связанную с ней индустриализацию умственного труда, я уже говорил. Мне хочется провести еще одну аналогию, которая имеет более прямое отношение к профессии программиста. Разработка и распростране- ние софтвера, мне кажется, во многом напоминает то, что произошло в резуль- тате появления книгопечатания. Как книги накапливают внешний образ мира в глазах их авторов и позволяют воспроизвести процесс его познания, так и программы и банки данных накапливают информационную и операционную модели мира и позволяют не только воспроизводить, но и предсказывать его эволюцию, давая тем самым небывалую власть над природой. Быть хорошим программистом - это сейчас такая же привилегия, как быть грамот- ным человеком в ХVI веке. Эта привилегия дает право программисту ожидать аналогичного признания и уважения со стороны общества. К сожалению, эти ожидания не всегда оправдываются. Хочу только заметить, что осуществление этого признания требует работы с обеих сторон. В частности, для программис- та необходимо следование одному этическому принципу, который носит общий характер для всякого профессионала, но имеет специальную интерпретацию для программиста. Чисто логически имеют место три варианта: работа ради работы; работа ради денег; работа ради цели. В системе координат программиста первые два мотива стоят на первом плане, хотя в абсолютной системе координат имеет значение лишь третье. Потому я хочу сказать, что программист сможет достичь полной гармонии с обществом только в том случае, если лояльность той цели, в достижении которой его программа является лишь частью, станет его внутренней установкой. Говоря об общественной функции программирования, не могу не заметить, что на пути к реализации этой функции лежит одна нерешенная техническая проблема - обеспечение аккумулятивного эффекта программирования. Это очень сложная, но абсолютно необходимая для решения проблема. Спектр мнений о ней - бесконе- чен. Одни говорят, что сейчас работают только считанные проценты составлен- ных программ, другие считают, что OS/360 - это уже практически бессмертный комплекс программ. Возвращаясь к теме моей речи, хочу сказать, что предо- ставление программисту перспективы длительного и стабильного использования его продукта окажет решающее воздействие на его профессиональное самосозна- ние. Позвольте теперь с позиций только что сделанных утверждений завершить обсу- ждение ранее перечисленных альтернатив и трудных проблем. Об индивидуальных способностях в программировании. Нам необходим образ иде- ального программиста. Конечно, это будет мифическая личность. Но кто ска- зал, что нам не нужны мифы и сказки о программистах? Каждый из нас должен хоть раз в жизни видеть или хотя бы слышать о чудо-программисте, из про- граммы которого нельзя убрать ни одной команды, или который пишет тысячу команд в день, или обнаруживает ошибку при исходном шансе один к миллиону и т.д. Человеку свойственно искать ориентиры и примеры. Именно с этих позиций хочу внести свой вклад в спор о пресловутых "примадоннах" в коллективах программистов. Объявлять их нежелательными - это по крайней мере близору- кость или зависть к их исключительным качествам. Мне посчастливилось в жиз- ни встретить несколько таких примадонн от программирования, которые при всей их индивидуальности и даже экстравагантности вносили неоценимый вклад в работу коллектива, особенно в трудных ситуациях. Так что я решительно стою за признание и полный учет весьма широкого диапазона в индивидуальных способностях к программированию. О разделении проектирования и изготовления софтвера. Налицо двойственное от- ношение к этому вопросу. Руководители, ответственные за долговременные про- екты, и многие другие ищут пути к формализации этапов разработки и передачи проекта из одних рук в другие. В то же время само дело отчаянно сопротивля- ется такому разделению. Я хочу сказать, что правильное решение этого вопро- са невозможно без учета человеческого фактора и эстетической потребности, препятствующей тому, чтобы заниматься реализацией чужих идей или не видеть самому овеществления своей идеи. Отдавать технический проект в чужие руки - то же самое, что посылать своих детей в интернат, что хотя и бывает необхо- димо, но чревато потерями. В заключение хочу вернуться к тезису об элитарности программирования и о его будущем. Моя апологетика на первый взгляд подчеркивала исключительный, осо- бый характер программирования и его предельные требования к человеческим возможностям. Эта требовательность и образует тот самый вызов человеку, о котором я говорил вначале. Когда я был последний раз в Соединенных Штатах в 1970 г., на меня произвели большое впечатление новые идеи профессоров Мас- сачусетского технологического института Марвина Минского и Самюэля Пейперта об обучении детей. Они выбросили в корзину ходячее представление, что дети учатся бессознательно методом подражания. Они доказывают, что человек чему- то научается только в том случае, если у него в голове складывается блок- схема действия, выделены подпрограммы и приложены информационные связи. Профессор Пейперт навсегда обратил меня в свою веру на примере жонглирова- ния двумя мячами, когда, апеллируя к моим способностям программиста, он за десять минут научил меня тому, чего я сам не сделал бы и за несколько ча- сов. Таким образом, человек неизмеримо усилит свой интеллект, если сделает час- тью своей натуры способность планировать собственные действия, вырабатывать общие правила и способ их применения к конкретной ситуации, организовывать эти правила в осознанную и выразимую структуру, - одним словом, сделается программистом. Когда-то возможность читать и писать считалась божьим даром, уделом избран- ных. Сейчас в эпоху грамотности, на что потребовалось 1000 лет, мы выделяем новую избранную категорию людей, которые становятся посредниками между че- ловечеством и информационной моделью мира, упрятанной в машины. Сделав ис- кусство программирования общим достоянием, мы лишимся своей элитарной исключительности перед лицом повзрослевшего человечества. Это ли не высший эстетический идеал для нашей профессии. Я назвал ряд актуальных проблем, в том числе связанных с человеческим факто- ром в программировании. Я не назвал, пожалуй, самой главной. Мы сейчас не- насытно вербуем молодежь в программисты, обещая им златые горы. Однако по- коления людей меняются значительно медленнее, чем поколения машин. Почитай- те рекламы технических журналов за последние 10 лет. Слова "революция", "Новое поколение" появляются там с неимоверной частотой. Я хотел бы спро- сить авторов этих реклам, а знают ли они, как сделать, чтобы программист в возрасте свыше 50 лет был бы не меньше полезен ему, чем 30-летний. Через 30 лет у нас таких программистов будет миллион. Пожалуй, честно будет сказать, что сейчас у нас нет даже подхода к тому, как ассимилировать ветеранов в современных условиях изменчивости и нестабильности, сделав тем самым про- фессию программиста пожизненной и дающей человеку ощущение социального удо- влетворения. КИБЕРНЕТИКА 1972, No.5, с.95-99 (со стилистическими исправлени- ями Н.Безрукова)