Линней от программирования

Юрий Аммосов

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

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

Самое интересное, что все эти, казалось бы, очевидные вещи существуют менее четверти века. Еще в 1960-е годы работа программиста примерно так и выглядела: под каждую задачу сочинялась новая программа с нуля, от и до. Рывок в компьютерной революции, произошедший в 1970-1980-е годы, во многом связан с тем, что появились способы и инструменты, позволяющие программистам стандартизировать и обобщать компоненты кода для общего использования, так же как массовое производство возникло во второй половине XIX века благодаря стандартизации не только мер и весов, но и деталей, избавив производителей от необходимости вытачивать себе свои собственные гайки и штамповать уголки.

Большинство современных программ для персональных компьютеров уже много лет пишутся на языке программирования C++. Еще пару десятилетий назад программисты применяли целую россыпь языков - Pascal, ADA, Fortran, Delphi и много других. Сейчас практически все эти языки превратились в нишевые или отмерли вовсе. На Windows-платформах единственную, но слабую конкуренцию C++ составляет только Visual Basic, и то благодаря усердной поддержке Microsoft.

Имя создателя языка C++ Бьерна Страуструпа знает любой программист - хотя бы благодаря написанным им книгам, учебникам и справочникам, посвященным языку C++. А вот имя нашего соотечественника Александра Степанова, благодаря которому C++ и превратился из языка "ручной работы" в язык "индустриального производства", знают немногие.

Мы решили побеседовать о стратегиях мировой и российской софтверной индустрии и, шире, технологической промышленности с Александром Степановым, экс-вице-президентом компаний Hewlett-Packard и Compaq, а сейчас ведущим ученым Adobe, компании-разработчика таких программ, как Photoshop и Acrobat.

- Можете популярно объяснить, в чем состоит ваше главное достижение в области софтвера? - Я придумал способ программирования, который называется "Обобщенное программирование". Идея эта очень простая и состоит в том, что


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

- Когда и по какому поводу вам пришла в голову эта идея?

- Впервые эта идея появилась у меня еще в те годы, когда я был в Советском Союзе (уехал я оттуда в 1977 году). Тогда я думал, какие компоненты программ можно выполнять параллельным образом. Я обратил внимание, что параллелизация программ связана с некоторыми их фундаментальными математическими свойствами. Это была еще не очень совершенная идея. Пройдя через много ступеней, я со временем развил ее, сделав то, что сейчас называется стандартной библиотекой шаблонов в языке C++ - Standard Template Library, STL. Это часть языка, которая прописывает основные структуры данных и алгоритмы на них. Эта идея совершенно не зависит от языка, но в некоторых языках ее легче воплотить, а в некоторых труднее. В C++ ее удалось воплотить с трудом. Даже после того, как я уговорил его создателя Бьерна Страуструпа, своего хорошего друга, внести некоторые изменения в язык C++.

- Вы сделали эту работу для какой-то корпорации?

- Я начал работать в направлении обобщенного программирования в компании General Electric. Я работал в исследовательском центре в городе Скенектади, где мне позволяли заниматься фундаментальным исследованием без всяких практических целей. А потом я несколько лет преподавал в Нью-Йоркском политехническом университете, занимаясь там теми же самыми вещами. Оттуда я перешел в Bell Laboratories, затем в Hewlett-Packard, где я наконец-то и произвел эту библиотеку на языке C++.

- Если в Hewlett-Packard это была ваша основная задача, какой интерес был у корпорации в поддержке ваших исследований?

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

- Сейчас вы работаете ведущим ученым в компании Adobe. Чем отличается ваша новая работа от работы в НР?

- В HP я занимался research, а у Adobe research отсутствует совсем. Только research & development - R&D.

- В чем разница?

- R&D в Америке значит очень простую вещь: вы разрабатываете то, что немедленно превращаетcя в продукт. А research - фундаментальные исследования, занятия вещами, про которые вы даже не знаете, как впоследствии они будут применяться.

- Часто ли корпорации тратятся на research?

- Меньше, меньше и меньше. Раньше очень большая часть фундаментальных исследований проводилась в Bell Laboratories. Это был национальный ресурс, там было изобретено все, от Большого взрыва до транзисторов. Почему AT&T могла финансировать фундаментальные исследования? Потому что это была монополия. Если компания договаривалась с правительством о том, какие должны быть цены на связь, ей легко было покрыть любые расходы на исследования. AT&T просто включала расходы на фундаментальные исследования в структуру монопольной цены. Тогда люди шутили: непонятно, кто кем управляет, американское правительство AT&T или AT&T американским правительством. Примерно такая же ситуация была и с IBM, которая в пятидесятые-шестидесятые годы контролировала от шестидесяти до семидесяти процентов компьютерного рынка. Именно потому, что IBM была практически монополией, частично регулируемой государством, она тоже могла поддерживать фундаментальные исследования.

Сейчас в Америке реально осталась одна компания, которая может себе позволить фундаментальные исследования. Это компания, которая является нерегулируемой монополией, она называется Microsoft. И они действительно ведут кое-какие фундаментальные исследования, но все это совершенно несравнимо с тем, что раньше делали AT&T и IBM. Финансовый климат не позволяет даже таким большим компаниям, как HP, вкладывать достаточно денег в фундаментальные исследования. А средним компаниям размером с Adobe климат не позволяет вкладывать даже в прикладные исследования.

- Чем все-таки вы занимаетесь в Adobe?

- Я пытаюсь выяснить, как более эффективно и, если угодно, красиво писать программы. В настоящее время я смотрю на часть внутренностей программы Photoshop, но потом я буду смотреть на другие программы.

- В прошлом вы были на топ-менеджерских постах в HP и Compaq. Как вы оцениваете их слияние?

- Происходит невероятная консолидация всей компьютерной промышленности. Когда слияние происходило, я был вице-президентом и главным ученым компании Compaq, поэтому я, естественно, в объединении участвовал и чрезвычайно его поддерживал. Что сейчас происходит? Поставка и дистрибуция становятся ключевыми вещами. Технология, компьютеры, которые работают чуть-чуть быстрее, чуть-чуть медленнее, - все это становится не важно. И это будущее нашей промышленности. Если вы пойдете в любую большую компанию, скажем в General Motors, - что они хотят? Они хотят установить постоянные отношения с поставщиком с низкой ценой. Они не хотят больше менять поставщиков. Они не хотят покупать персональные компьютеры в трех местах, они хотят покупать в одном месте. То есть для них покупка компьютера становится такой же вещью, как покупка, скажем, бумаги. Компьютеры превращаются в канцтовары. То же, к несчастью для меня, происходит и в софтвере. Вообще технология, я должен вам сказать, играет гораздо меньшую роль, чем положение на рынке, партнеры, размер.

- Стоит ли России делать ставку на софтвер, например пойти по индийскому сценарию, или это уже вчерашний день?

- На программах Россия не проживет, я в этом уверен. Лучше сделайте ставку на сельское хозяйство. Мы ведь в Калифорнии производим не только программы. Мы здесь неподалеку выращиваем больше артишоков, чем кто бы то ни было в мире. Потом, в России нужно строить дороги. Такая громадная страна не может существовать, если там не построить нормальные дороги. И главное, нужно создавать и развивать свой внутренний рынок. Потом уже выходить на мировой. Как возникла, например, компания Honda? Она разве стала машины продавать сразу на американском рынке? Нет, сначала она завоевала свой, японский, научилась производить массовые дешевые автомобили для своего рынка. Потом, используя внутренний рынок, начала субсидировать продажи в Америке, сбывая автомобили сюда уже гораздо дешевле. Мы же знаем, как это происходило. И теперь они - глобальная компания. Видите, все тут на "хондах" и "тойотах" ездят. И технологическим русским компаниям нужно прежде всего думать о внутреннем рынке, с него начинать. Я не верю, что русская софтверная компания может конкурировать с Oracle. Но ведь и Oracle вначале ориентировалась только на американский рынок. Надо всегда начинать с домашнего рынка.

- А вы уверены, что, пока мы будем осваивать внутренний рынок, аналоги не появятся на мировом рынке, и когда мы туда придем, мы уже никому не будем нужны с этим продуктом?

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


Если AT&T договаривалась с правительством о том, какие должны быть цены на связь, ей легко было покрыть любые расходы на науку: затраты на фундаментальные исследования просто включались в структуру монопольной цены

- Но платят за это другие отрасли, более эффективные...

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

- Вы в Америке покупаете японскую технику, а не европейскую. Так ведь?

- Да. Потому что европейская техника неконкурентна. Но она в Европе продается, потому что они рынок свой сохранили. Они не волнуются о его неэффективности и не позволяют Южной Корее и Японии разгромить его. Поэтому Philips продолжает выпускать телевизоры, а кроме того, развивает новые проекты.

- Для России вы предлагаете модель скорее европейскую, умеренно социалистическую, а не американскую: поддержка внутреннего рынка, приоритет качества жизни над экономической эффективностью?

- Мне кажется, России нужно искать свою траекторию, она, может быть, должна быть ближе к европейской, но своя. Помимо такого козыря, как большой внутренний рынок, я бы упомянул еще одно конкурентное преимущество России - соседство с Китаем. Китай - громадный рынок, и он рядом. Это тихоокеанское побережье, Герцен еще в 1850-х годах понимал, что Тихий океан станет Средиземноморьем будущего.

- А вы уверены, что китайцы захотят видеть русских на своем рынке?

- Да, потому что они уверены, что русские обладают лучшими технологиями. России нужно найти место, где она может стать партнером, выгодным для другой стороны, и я действительно предполагаю, что она может стать очень выгодным партнером для Китая. У Китая существует глобальная претензия, и Китай не доверяет - и вполне справедливо - США. Текущий уровень китайских разработок плохой, местами даже очень плохой. Зачем российским технологическим компаниям лезть на американский рынок, где чудовищная конкуренция? Лучше искать китайских партнеров, китайских дистрибуторов. У китайцев есть сейчас отличная экономическая база для дальнейшего развития. И они очень хотят делать наукоемкие продукты: программы, процессоры, электронику, самолеты. России грех не использовать эту ситуацию - она сможет расти вместе с китайцами.

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

- Я думаю, что самое важное событие, которое произойдет совсем скоро, - это интеграция устройств и битва между Microsoft и Sony. Останется ли PC и останутся ли телевизоры и DVD - вот вопрос, на который мы получим ответ в ближайшее время. Очевидно, что они вместе не нужны: нужно либо одно, либо другое. На повестке дня стоит приручение компьютеров. Сейчас компьютер по-прежнему остается тяжелым технологическим устройством. Вы можете научить пятилетнего ребенка пользоваться телефоном, а компьютером - нет. Я уверен, что в ближайшие пять лет компьютер превратится в бытовой прибор.

Сейчас компьютером все еще пользуются специально подготовленные, умные люди. Это закрывает доступ к компьютерам многим другим. Даже в Америке половина населения просто не в состоянии пользоваться РС. А еще четверть населения пользуется ими неэффективно. И только двадцать пять процентов реально могут пользоваться компьютерами. Я думаю, что их нужно превратить в такое же устройство, как холодильник. Все могут пользоваться холодильником: вы его открываете, кладете туда продукты и закрываете. Или в крайнем случае как телевизор: вы его включаете, смотрите и выключаете. Я думаю, что это обязательно произойдет.

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


В Америке половина населения просто не в состоянии пользоваться РС. Еще четверть населения пользуется ими неэффективно. Компьютеры нужно превратить в такое же устройство, как холодильник: вы его открываете, кладете туда продукты и закрываете

- И на каких направлениях они будут сражаться?

- Коммодитизация процессоров и установка блейд-серверов приведут к окончательному падению Sun и других старых Unix-производителей. Важно, выиграет ли Microsoft, установив Windows как доминантную, главенствующую операционную систему для серверов, или Linux, который будет поддерживать IBM, вкладывающая в него громадное количество денег. Победа зависит от движения центральной массы независимых программных производителей. То есть та компания выиграет, которая получит большинство. Это не будет войной технологий, это будет войной двух лагерей. От себя могу сказать, что победы лагерю Microsoft не желаю. Я покинул СССР, потому что не любил советскую власть, а Microsoft - это советская власть в программировании.

 


Страница сайта http://silicontaiga.ru
Оригинал находится по адресу http://silicontaiga.ru/home.asp?artId=1801