 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
                                              (со стилистическими исправлени-
                                              ями Н.Безрукова)


