Извлечение из  «Ф. Бьякуцци, Ш. Уорден. Пионеры программирования. Диалоги с создателями наиболее популярных языков программирования» (со с. 1059).
Извлечено Ермаковым И.Е. Выделены мысли, примечательные с точки зрения ЕИЕ (ЕИЕ не обязательно все их разделяет, просто обратил внимание), опорные точки для быстрого просмотра текста. Иногда помечено только начало, откуда читать.

Компоненты, песок и кирпичи
Интервью с Брэдом Коксом

Брэд Кокс — соавтор Objective C, позднее связан с проектами и стандартами Минобороны США. По образованию — специалист в области математической биологии.

Компоненты, песок и кирпичи
Качество, как экономическое явление
Образование

Компоненты, песок и кирпичи

— Какие уроки из опыта изобретения, дальнейшего развития и распространения вашего языка могли бы извлечь разработчики компьютерных систем в настоящем и будущем?
Брэд: Многоуровневая интеграция (она же инкапсуляция) интересовала меня, сколько я помню, всегда: разбить работу на части и поручить их специалистам, затем воспользоваться тем, что они сделали, не нарушая или почти не нарушая инкапсуляцию, знать, «что внутри», чтобы успешнее применять.
В некоторых своих писаниях я использовал в качестве примера обычный деревянный карандаш. Когда я спрашивал у аудитории, что «проще» — цифровой карандаш вроде Microsoft Word или деревянный карандаш, большинство дружно заявляло, что деревянная разновидность проще. Затем я указывал, что Microsoft Word писали восемь программистов, а в создании деревянного варианта участвовали тысячи людей, ни один из которых не мог в полной мере оценить, насколько сложно валить лес, добывать графит, плавить металлы, делать лак, выращивать рапс для масла и так далее. Карандаш заключает в себе высокую сложность, но она скрыта от пользователя.
Меня не удовлетворяет в Си (и подобных ему языках) то, что на программистов полностью обрушивается вся сложность программы, за исключением небольшой её части, инкапсулированной в функциях. Единственной действительной границей инкапсуляции было всё пространство процесса, что равносильно чрезвычайно эффективной капсуле верхнего уровня, интенсивно используемой в UNIX в виде двухуровневой инкапсуляции посредством скриптов оболочки и понятия «каналов и фильтров».
В попытках объяснить преимущества объектно-ориентированного программирования я часто пользовался термином Software-IC (программные ИС), чтобы обозначить новый уровень интеграции, более крупный, чем функции Си (уровень логических элементов), и меньший, чем UNIX-программа (уровень шасси). Главным мотивом разработки Objective-C явилось для меня желание сделать простой программный паяльник, чтобы собирать большие функциональные блоки (уровня шасси) из многократно используемых «программных ИС». Напротив, С++ возник из совершенно другого представления: огромная автоматизированная фабрика для изготовления тесно связанных блоков из элементов уровня логических узлов. Если интерпретировать метафору аппаратуры для программирования, то интеграция на уровне чипов происходит только на этапе компоновки; интеграция на уровне логических элементов — на этапе компиляции.
Тогда (в середине 1980-х) облегчённые потоки не были широко известны и не существовало ничего меньше процесса в стиле UNIX («тяжеловесного» потока). Я потратил некоторое время на создание библиотеки Objective-C под названием Taskmaster, которая должна была поддерживать облегчённые потоки в качестве основы для интеграции на уровне карт. Появление RISC-процессоров положило этому конец: работа с кадрами стеков на таком низком уровне слишком осложняла задачи переносимости.
Большие перемены произошли потом в связи с появлением «вездесущих систем», открывших новые уровни интеграции, более крупные, чем пространство процесса UNIX. Например, в архитектуре, ориентированной на сервисы (SOA), интернет представляет собой нечто вроде проводов между компонентами HiFi-системы, а сервисы (программы) на отдельных серверах сами функционируют как компоненты. Я считаю, что это невероятно интересно, поскольку это первый уровень интеграции, аппроксимирующий естественное для повседневной жизни распреде-
ление обязанностей. Нет интереса или необходимости рассматривать исходный код каждого используемого сервиса, если этот сервис выполняется на удалённом сервере, у которого другой хозяин.
Важно, что это также первый уровень интеграции, позволяющий исправить роковую ошибку идеи «программных ИС»: возможность создать побудительные мотивы для предоставления своих компонентов. Карандаши (и многие субкомпоненты для их изготовления) производятся потому, что для материальных товаров действует закон сохранения массы. Для цифровых товаров не существовало ничего подобного, пока SOA не открыла возможность развернуть полезный сервис и взимать плату за его использование.
В последние два года я познакомился с фундаментальной проблемой «старой доброй SOA» и теперь в значительной мере сосредоточился на ней. В крупных установках SOA (например, NCES в DISA и FCS в армии) существует большое сопротивление достижению консенсуса, необходимого для построения полностью однородных систем SOA, применяющих совместимые транспортные механизмы для сухопутных войск, надводных, подводных и воздушных судов, не говоря уже о совместимости определений конфиденциальности, целостности, предотвращения отказа от выполнения обязательств и так далее. И даже если расширить «предприятие», включив в него всю обширную организацию систем министерства обороны, то как быть с союзниками? Как обеспечить совместимость с другими правительственными агентствами? С штатами? Со службами быстрого реагирования? Как бы вы ни определили предприятие, вы упустите что-то, с чем в один прекрасный день понадобится установить связь. Возложение ответственности за это на каждого разработчика сервиса не выдерживает расширения.
Поэтому сейчас я рассматриваю Sun JBI (Java Business Integration) и её многоязычного преемника SCA (Software Component Architecture) как способ поддержать более низкий уровень интеграции, с помощью которого можно построить старые добрые сервисы SOA.

— Требуется ли для создания такой системы поддержка со стороны аппаратного обеспечения?
Брэд: Аппаратное обеспечение действительно даёт надёжный пример того, на что можно надеяться. Компьютерная аппаратура — один из многочисленных примеров инженерных достижений за 200 лет после промышленной революции.Человек достиг исключительных успехов в создании аппаратного обеспечения, так что, создавая будущую модель, мы можем многому поучиться в этой области. Но лёгких путей здесь нет, и одним нажатием кнопки качество не улучшишь.
В последнее время я привожу другой пример, чтобы показать, что я имею в виду, называя программное обеспечение примитивным. Рассмотрим такое занятие, как жилищное строительство. Люди занимаются этим тысячи лет. Кое-где это делают прежним примитивным способом, когда строители укладывают глину в формы и сами делают кирпичи, из которых потом строят дом.
Несмотря на некоторые признаки прогресса, программные системы в целом создаются точно таким же способом. Например, чтобы создать сервис SOA, каждая бригада разработчиков добывает в карьере java.net сырьё, необходимое для любого сервиса SOA.
Возьмём, например, безопасность, для которой, в принципе, и возводятся стены дома. Министерство обороны предъявляет к безопасности исключительно строгие требования, обусловленные политикой. Оно также вкладывает большие средства в такие стандарты, как WS-Security. А недавно оно предложило процедуру сертификации и аккредитации (С&А), которую должны пройти все веб-сервисы. С&А является по сути трудоёмким и дорогостоящим процессом, через который должны независимо пройти все веб-сервисы, чтобы гарантировать их достаточную защищённость для размещения в секретных сетях.
Эти веб-сервисы напоминают дома из глиняных кирпичей. Эти политики и стандарты составляют инструкции, которым должен следовать каждый разработчик при изготовлении своих кирпичей. Но эти кирпичи не вызывают доверия у других, потому что их качество зависит от того, кто их делал. Действительно ли их делали по стандартам? Правильно ли применяли стандарты? Пусть эти кирпичи бесплатные, но их качество известно только тем, кто их изготовил.
Строительная отрасль довольно давно перешла к относительно сложной форме производства, которую мы сегодня воспринимаем как нечто само собой разумеющееся. Строительные бригады больше не делают кирпичи сами, потому что никто не доверил бы им это дело. Стандарты и политики сохраняются, так же как процедуры сертификации и аккредитации (проверка качества кирпичей в промышленных лабораториях). Однако мы обычно не замечаем их. Мы полагаемся на эти невидимые процессы, которые гарантируют, что все имеющиеся в продаже кирпичи устойчивы к непогоде и выдержат крышу.
Но главным в этом процессе эволюции от глиняных до современных кирпичей была не техника. Главным было завоевание доверия. Мы доросли до понимания того, что должны быть независимые стандарты, описывающие функции кирпича, его размеры и устойчивость к погодным условиям. И есть независимые лаборатории сертификации, от которых мы неявно зависим. Большинство и не знает о существовании таких лабораторий — и не обязано знать: мы просто можем быть уверены, что кирпичи такие, какими должны быть.
И здесь мы возвращаемся к вопросу о значении экономических систем. Надёжные кирпичи существуют потому, что есть стимулы для их изготовления: за каждый кирпич вам платят. И все, кроме нескольких специалистов по изготовлению кирпичей, могут позабыть о сложностях их изготовления и приступить к более творческим вопросам строительства.
Подробнее вопрос разницы между строительством из глиняных и современных кирпичей рассмотрен наhttp://bradjcox.blogspot.com/.
Чтобы закончить на более оптимистичной ноте, замечу, что ситуация начинает исправ-
ляться. Ряд фирм приступил к выпуску компонентов безопасности SOA и начал долгую борьбу за принятие их министерством обороны в качестве надёжных. Наиболее успешный из известных мне примеров — OpenSSL, но Sun, Boeing и ряд других компаний недавно выступили с аналогичными инициативами именно в области безопасности SOA.

— Оказали ли влияние инкапсуляция и разделение обязанностей на разработку ПО?
Брэд: Думаю, да. В значительной мере это зависит от того, как бьются со сложностью в других отраслях. Пожалуй, людям свойственно применять инкапсуляцию, чтобы бороться со сложностью.

— Можно ли считать SOA и ваши инициативы попытками ввести в ПО принципы компонентной организации?
Брэд: Именно так. Это то, за что я борюсь всю свою карьеру.

— Вы всегда так считали или заметили, что обычные методы разработки ПО не соответствуют реальности?
Брэд: Я начал с последнего и стал искать людей, которые действуют иначе. Я начал с осознания того, что ПО пишут неправильно.

— Совместим ли практический подход на основе крупных компонентов с математическим взглядом компьютерных наук на ПО?
Брэд: Возможно. Я не хочу углубляться в критику компьютерных наук. Но я не замечал, чтобы в них когда-либо учитывалось, как люди привыкли решать задачи, что проистекает из характерного различия точек зрения.Специалист по компьютерным наукам исходит из того, что есть такая наука, как программирование, и что его задача — описывать её и обучать ей. Я всегда исходил из того, что такой науки нет. Есть наука о том, как строить дома, и есть наука о том, как делать кремниевые микросхемы, а наше дело — понять, чему они научились за тысячи лет, и начать создавать науку программирования. Для меня этот стакан совершенно пуст, а они в этом стакане что-то видят.

— Вы пару раз отметили, чтоэкономическая модель ПО терпит крах.
Брэд: Дело не в том, что она рушится. Это означало бы, что есть какая-то модель, а теперь она распадается. Но её никогда не было. Её не создать, потому что ПО улетучивается как пар. Человечество просто не придумало, как строить экономику в таких условиях. Что-то отдалённо можно вообразить, как с сервисами SOA, для которых можно представить экономическую модель сервисов, потому что ПО сидит где-то на сервере и за него можно взимать плату.
Возьмём эти объекты с мелкой детализацией: у меня была надежда, что есть пути работы с мелкими объектами — песком и гравием вычислений, объектами java.net, но человеческая сложность организации решения для этого оказалась непреодолимой.
Если взять промежуточную область, то перспективы среднего уровня с промежуточными увеличенными объектами составляют для нас ядро. Так что на уровне SOA какая-то надежда есть. А может быть, и на следующем уровне ниже. Последнее слово ещё не сказано. Но думаю, что для объектов действительно мелкой детализации надежды нет.

— Этот средний уровень — уровень структур?
Брэд: Это объекты как пещеры — монолитные компоненты, где вначале есть нечто очень крупное, а потом функциональность отключается. Думаю, такая модель есть. Она поддерживается, например, в JBoss. По существу вы раздаёте кусочки и продаёте доверие. Сделать такое очень сложно.

— Что означает «доверие к программному объекту»?
Брэд: Над этим работает Минобороны, и там есть ответы на такие вопросы. Это очень трудоёмко и невероятно дорого, неудовлетворительно во всех мыслимых отношениях, но ответ у них есть.
Но оно настолько зациклилось на SOA, что не понимает, что только SOA недостаточно. Есть ещё потребность в компонентах более мелкой детализации, которые могут быть многократно использованы для решения повторяющихся задач, не решаемых только с помощью SOA. Таких как безопасность и интероперабельность, по терминологии Минобороны. Поэтому моя нынешняя работа заключается в создании компонентов более низкого, чем SOA, уровня, которые можно соединять для решения скучных повторяющихся задач построения сервисов SOA.Надеюсь когда-нибудь провести эти глиняные кирпичи через процедуру сертификации Минобороны, чтобы они стали настоящими кирпичами, которым можно так же, не задумываясь, доверять, как мы доверяем кирпичам, из которых строим свои дома.
Безопасность — пример того, что необходимо каждому SOA-приложению для Минобороны. Это необходимое требование согласно политике. Единственное, что есть у создателя SOA-приложений, — это стандарты и политики. У Минобороны нет поставщика кирпичей. Нет надёжных компонентов — так сказать, настоящих кирпичей, — которые можно взять или купить и строить из них, не изучая целиком стандарты SOA, политику в области безопасности и детали применения компонентов java.net, чтобы удовлетворить требованиям Минобороны по безопасности.

— Как воспринимаются эти многочисленные уровни абстрагирования с точки зрения безопасности?
Брэд: Не уверен, что правильно понял ваш вопрос. Это всё равно что спросить: «Как разделение труда в автомобильной промышленности влияет на безопасность езды?»
Полагаю, что благодаря специализации над каждым продуктом плечом к плечу трудится много людей, и какая-то часть из них могут оказаться недобросовестными. Но то, что создаётся ими на некотором уровне, должно пройти приёмные испытания на всех более высоких уровнях, поэтому у зловредных эффектов меньше шансов пройти, чем в случае монолитной конструкции.
Обратите внимание, что многоуровневая интеграция — это не несколько уровней «абстрагирования». Это в действительности многоуровневая «конкреция»: компоненты верхнего уровня собираются из многократно используемых, готовых, протестированных компонентов.Возьмите, например, безопасные сервисы SO, собранные из субкомпонентов библиотеки JBI путём оборачивания базовой функциональности сервисов SOA в компоненты JBI, каждый из которых обеспечивает атрибуты безопасности SOA: аутентификацию, авторизацию, конфиденциальность, предотвращение отказа от выполнения обязательств, целостность и так далее. Результат будет более надёжным просто потому, что можно позволить себе работать лучше.

— Есть ли ответы, которые могли бы удовлетворить всех остальных?
Брэд: Думаю, да. В чём различие между глиняным и настоящим кирпичом, благодаря которому мы не строим дома из глиняных кирпичей? В том, что глиняному кирпичу нельзя доверять. То же самое с программным обеспечением. Качество глиняного кирпича целиком зависит от того, кто его сделал, от мастерства изготовителя. Отвлечёмся от технических различий между настоящими и глиняными кирпичами. Главное отличие настоящего кирпича, помимо высокотемпературного обжига, заключается в прохождении через лаборатории проверки и сертификации.
Чтобы стать поставщиком настоящих кирпичей, нужно пройти эту процедуру. В принципе, это и есть модель доверия Минобороны. Сертификация и авторизация сами по себе очень трудоёмкие процедуры. По-другому они называются «стандартными критериями». Теперь они есть, и, думаю, это то, к чему мы пришли после тысяч лет неудовлетворённости глиняными кирпичами.«Мы» — это промышленность в целом, потому что сейчас много жалоб на ненадёжность программ и не так много решений этой проблемы. В конце концов, люди не верят программам. И никогда не будут верить. В конце концов, мы придём к модели доверия, основанной на людях, которые поставляют программы.
Взгляните на Sun. По сути, она пытается создать совершенно новую бизнес-модель. Как вы знаете, недавно там приняли подход open source. Здесь очень подходит приведённая мною выше аналогия, согласно которойв старой модели бизнеса продавали предметы, а в новой продают доверие.Они действительно поддержали эту идею. В принципе, что они сделали? Отменили плату за продукты.
Теперь можно загрузить из сети почти всё, что производится Sun, и пользоваться им, если оно вам нужно. Предполагается, что при таких возможностях люди предпочтут покупать то, что поставляется с гарантией возмещения убытков, поддержкой и другими вещами, в которые я не стану углубляться в этом интервью. Время покажет, действен ли такой подход, но шансы на то велики.

— Вы, вероятно, слышали о недавних проблемах штата Калифорния с системами, написанными на Коболе. Поможет ли строительство систем из мелких «кирпичиков» избегать в будущем проблем с устаревшим программным обеспечением?
Брэд: Я убеждён в силе компонентного подхода, но не хочу излишне навязывать эту идею: компоненты решают не все проблемы. Компоненты — это изобретённый нами способ решения задач объёма выше среднего: чтото из того, чем мы отличаемся от шимпанзе. Мы открыли, что можно решать задачи, просто перекладывая их на чужие плечи. Это называется разделением труда, только и всего. Вот этим люди отличаются от шимпанзе, которые до такого не додумались. Они умеют делать инструменты, у них есть язык для общения, поэтому, на первый взгляд, люди и шимпанзе мало отличаются друг от друга. Мы открыли способ решения проблем путём перекладывания их на других — посредством экономической системы.

— Если мы найдём ответ, будет ли он как-то связан с прошлым, или это будет нечто совершенно новое?
Брэд: Эволюция — это замедленная революция. Это не две совершенно разные вещи.Но в упомянутой вами статье про Кобол также говорилось, что новейший стандарт Кобола поддерживает объектно-ориентированные расширения. Я не слежу сейчас за состоянием Кобола, но в 1980-е я ратовал именно за это: взять Кобол и добавить в него ОО, примерно как я сделал это для Си.
Это пример обычного, по-моему, хода вещей. Никто не стал выкидывать Кобол и заменять его чем-то другим. В него просто добавили то, чего в нём не хватало, сохранив всё остальное.

— Вы всё ещё считаете, что superdistribution (суперраспространение) имеет перспективы? Как насчёт веб-приложений?
Брэд:Суперраспространение (в том смысле, как я его понимаю) применимо к объектам мелкой детализации. Для более грубой детализации (сервисов SOA, например) применимы более простые средства. Я положительно уверен в необходимости сильных стимулов. Но сейчас можно начать с более простых, чем объекты ООП, мест: в частности, с сервисов SOA. Раньше таких не было (не считая нашумевших «тонких клиентов»).
Проблема в том, что это всё равно что заявить, что для решения палестинского конфликта нужно научиться ладить между собой. Очевидно, что это верно, потому что такое решение оказалось эффективным и для США, и для Южной Африки. Но оно совершенно неуместно в разгар боевых действий между владельцами и пользователями цифровых товаров. Ни одна из сторон не намерена идти на компромисс и учиться ладить с другой. Если вы предложите суперраспространение в качестве «решения» такого конфликта, камни полетят в вас с обеих сторон.

— Является ли повсеместный доступ к сети необходимым условием строительства городов, следуя вашей аналогии?
Брэд: Если здания — это SOA, то несомненно, что для этого обязательно нужна сеть. Без сети вы не получите SOA. Но на практике в нынешние времена без сети вы и на горшок не сядете.

— Робин Милнер (ML) предлагал параллельную работу множества малых туповатых машин. Вы ставите перед собой похожую задачу?
Брэд: Идея интересная. Я много занимался моделированием в военном деле, и такой подход очень привлекателен для возникающих там проблем. Возможно, есть и другие, неизвестные мне области приложений.


Качество как экономическое явление

— Как можно улучшить качество ПО?
Брэд: Один из путей — хранить ПО на серверах, как в схеме «ПО как сервис» (Software as a Service, SaaS). Есть надежда, что такая система окажется экономически эффективной, хотя очевидно, что приэтом пострадают определённые аспекты (секретность, безопасность, производительность и так далее).
В течение нескольких лет я работал в противоположном направлении, создавая экономическую систему для компонентов, локально работающих на машине конечного пользователя, но этот подход стал вызывать у меня всё большие сомнения, потому что его обсуждение выливается в борьбу по поводу авторских прав на цифровой контент, которой не видно конца. Не знаю, как примирить тех, кто хочет производить и владеть, с теми, кто хочет отобрать право собственности.
Без физического сохранения того, что считается собственностью, нам остаётся рассчитывать только на помощь законов, судов и юристов, что в итоге породит порядки полицейского государства. Представьте, что банки откажутся от сейфов и запоров, оставляя деньги на ночь на улице, и станут преследовать по закону тех, кто их украдёт. Неутешительная картина.
Есть другое экономическое решение, сегодня весьма широко распространённое: реклама. Здесь пользователи не являются ни охотниками, ни добычей: они — приманка. Несмотря на успех Google, полагаю, этот путь не приведёт ни к чему хорошему. Мы все свидетели того, к чему привела эта модель на радио и телевидении, и точно то же самое происходит с интернетом.
Последним вариантом остаётся модель open source в каких-то из её многочисленных вариантов и разновидностей — бесплатного, условно-бесплатного, добровольно оплачиваемого и так далее ПО. Сегодня я в основном работаю над этой моделью. Не потому, что лучше неё ничего нельзя придумать, а потому, что других не осталось, и она решает одну из проблем, в которых виновато само Минобороны: замкнутость на проприетарности.

— Что мешает нам создавать программные объекты такого же качества, как «реальные»?
Брэд: Экономическая система вознаграждения за усовершенствования.
— И только?
Брэд: Это главный источник энергии, но после решения проблемы питания (экономической) потребуются дополнительные нововведения. Надёжные примеры можно найти в биологии. Например, в Java есть примитивные идеи инкапсуляции, которые можно сравнить с такими биологическими понятиями, как митохондрии, клетки, ткани, органы и так далее. В Java самой крупной капсулой оказывается вся JVM, а самой мелкой — пакет Java (.jar). Различные ухищрения с загрузчиками классов позволяют организовать поддержку других капсул (например, сервлетов, используемых в сервисах SOA).
Недавно я заинтересовался OSGI как первой серьёзной попыткой создать развитый уровень инкапсуляции в промежутке от классов Java до JVM. Например, мои субкомпоненты SOA для безопасности и интероперабельности имеют вид связок OSGI.

— Вы считаете, что для повышения качества ПО нужны лучшие стимулы?
Брэд: Если вы посмотрите, благодаря чему повысилось качество носков, свитеров и булочек Twinkie, то увидите, что двигателем этой системы служит экономика.
Именно негодная экономика ПО — причина его нынешнего примитивного уровня развития.

— Фармацевтическая компания тратит миллиарды долларов на исследования, потому что от продажи лекарств, появляющихся в их результате, она получает десятки и сотни миллиардов. В их науке присутствует сильный монетарный фактор, хотя значительная часть исследований ведётся открыто.
Брэд:Да, так можно что-то прихватить, чтобы стать владельцем. Когда дело касается кирпичей или кремниевых чипов, экономика подкреплена законами природы. Такой подход основан на действующих в обществе законах. Иными словами, нужно обзавестись адвокатами, патентами, профессиональными секретами, организовать судебные преследования, и такая модель может заработать. Только это очень противно.
По всем нашим представлениям не исключено, что банки станут открыто оставлять золото на ночь и преследовать тех, кто его украдёт, вместо того чтобы запирать ценности в сейфах. Картина получается очень негуманная, но со всеми этими «законами об авторских правах в цифровую эпоху» (DMCA) мы вполне можем прийти к такому положению.DMCA, RIAA и подобные вещи вызывают у меня отвращение.


— Может ли улучшить положение открытый доступ по модели open source?
Брэд:Думаю, open source — лучшая из нынешних экономических моделей.Моя работа большей частью связана с open source, потому чтоэта модель будет лучшей, пока SOA не достигнет такого уровня развития, что с ней придётся считаться.
Нов принципе, рассуждая о глиняных кирпичах, я говорю об open source. Глиняные кирпичи делаются из бесплатного сырья, но тот, кто захочет что-то соорудить из них, столкнётся с проблемой ужасной документации open source.
Смысл аналогии с глиняными кирпичами в том, что это приемлемо, когда нет других вариантов: лучше глиняные кирпичи, чем никаких.Но это лишь моё личное мнение, и оно поверхностно.

— Какую роль играют интернет и сети в разработке ПО?
Брэд: В наше время нельзя делать ПО без доступа к интернету — даже представить себе это невозможно.
Нопротиворечие в том, что без правильной экономической модели интернета или разработки ПО качество того, что мы здесь получаем, значительно ниже, чем на рынке «осязаемых» товаров.

— Если начать рассматривать ПО как сервисы и компоненты — на более высоком, чем язык, уровне, — изменится ли от этого экономика ПО? Если продавать доверие, не разрушит ли это рынок товаров?
Брэд: Я не волшебник, чтобы предсказывать будущее.Не знаю. Может быть, через тысячу лет... — если столько времени понадобилось строительной индустрии, то можно ли думать, что нам потребуется меньше?Полагаю, через тысячи лет мы придём к этому, но меня уже не будет. Трудно предсказывать такое далёкое будущее.

— Кто-то скажет, что зато нам не мешают законы физики.
Брэд: Да, это должно быть преимуществом. Похоже, это больше вредит нам, чем помогает. Прежде всего, в результате мы лишились экономической модели, а это большая потеря.

— Если бы вы делали Objective-C сегодня, то выбрали бы для него модель open source?
Брэд: Слишком многое нужно учесть, чтобы ответить на этот вопрос. Open source не было в те времена, а нам как-то нужно было зарабатывать на жизнь. Если бы сегодня у меня была надёжная и не слишком обременительная работа, возможно, я тратил бы свободное время на open source.В конце концов, желание получить доход сходно с силой тяжести — слабейшей, а потому легко уступающей более мощным силам (скажем, стремлению к самореализации). Но доход является также самым дальнобойным критерием, а потому в долгосрочной перспективе его нельзя не учитывать.

— Вы хотите сказать, что без финансовой поддержки проекты open source не являются серьёзной альтернативой коммерческому ПО?
Брэд: Нет, я имел в виду то, что сказал. Доход может иметь разный вид: для многих из нас он может выражаться в росте репутации.

— Веб-приложения — это положительное явление?
Брэд:SOA размещает программы на серверах, где конечные пользователи не могут их контролировать. Из этого со временем может возникнуть экономическая система для SaaS.
Этот подход пока не дал сколь-нибудь заметных результатов, поскольку SaaS всё ещё находится в начальной стадии своего развития, но предвижу, чтотакой подход может привести к экономической системе, способной улучшить ПО тем же путём, каким улучшаются осязаемые вещи, — под действием экономических рычагов.


Образование

— У вас есть степени бакалавра по органической химии и математике и докторская степень по математической биологии. Как вы пришли к созданию языка программирования, имея такую подготовку?
Брэд: После завершения постдоктурантуры я осмотрелся и понял, что меня больше интересуют компьютеры, чем открывавшиеся передо мной в то время возможности.

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

— Не сместился ли интерес исследований компьютерной науки из академической сферы в производственную?
Брэд: Никогда не считал себя «учёным в области компьютерных наук» или академическим работником (хотя и проработал какое-то время в этой сфере). Всё остальное время я работал в условиях производства и, естественно, отдаю предпочтение ему.
При этом успехи академических исследований не производили на меня впечатлениядо недавней поры, когда я заметил растущее академическое участие в таких организациях, как W3C, Oasis и других, занимающихся выработкой стандартов.С моей точки зрения, это замечательно.

— Мне нравится следующая цитата с virtualschool.edu:
Таким образом, компьютерная наука не мертва. Она просто никогда не существовала.Главная идея новой парадигмы, которую я пытаюсь проповедовать в своей новой книге, состоит в том, что вирус болезни, симптомы которой мы называем кризисом программного обеспечения, возник из-за того, что мы имеем дело с субстанцией, состоящей из битов, а не атомов, и порождённой исключительно людьми, а не природой.
Но поскольку эта субстанция не подчиняется законам сохранения массы, коммерческие механизмы, побуждающие людей совместно трудиться над изготовлением карандашей или лент для багажных конвейеров, совершенно не работают. Без развития торговли не может возникнуть развитый общественный порядок, поэтому мы застряли в том примитивном состоянии, когда всё изготавливается из простейших элементов.
Поэтому всё уникально, и ничто выше уровня отдельных битов не обладает повторяемостью, оправдывающей экспериментальное изучение. Вот поэтому нет такой вещи, как компьютерная наука.
И десять лет спустя компьютерная наука по-прежнему мертва?
Брэд: Мне трудно что-либо добавить к тем наблюдениям, которые вы привели.В конце концов, всё зависит от того, что понимать под словами «компьютерная наука» и «мертва»... а также от желания воевать с той или иной группировкой, честными или иными методами, которого у меня нет совершенно.
Единственное, что я могу добавить по существу, так это чтопока программное обеспечение уникально и не управляется физическими законами (заметим, что растущее применение стандартов смягчает это давнишнее утверждение), мы имеем дело с некой общественной наукой, а это большое отличие от физических наук.

— Изменились ли ваши взгляды под воздействием ООП, суперраспространения и SOA?
Брэд: Если хотите знать,мои интересы связаны вовсе не с языками программирования, а с выяснением причин, по которым так трудно программировать, хотя с другими вещами люди справляются без усилий.Например, с тем, чтобы кормить обедом миллионы жителей Нью-Йорка, поспевать за законом Мура, вычёркивать планеты (пока только одну), продолжать производство автомобилей и так далее. Это действительно удивительное явление, и ни один другой биологический вид на такое не способен. Я всё время пытаюсь понять, как это происходит, и нельзя ли это приспособить для создания программ.
В действительности умение справляться с такого рода сложностью настолько широко распространено, что я назвал бы его врождённым, если бы не сохранившиеся общества охотников-собирателей, которые его не открыли, и где все однородны... каждый возделывает свой огород, охотится на своего зверя, строит свои дома. Но даже там можно найти инкапсуляцию и разделение труда: женщины готовят еду, мужчины охотятся, дети помогают, старики дают советы.
Но в современной жизни получила безудержное развитие специализация — специфическая человеческая способность отделить кусочек своей задачи и озадачить им кого-то другого.Я приготовлю обед, если ты постоишь за прилавком, ещё кто-то завезёт продукты, ещё кто-то вырастит пшеницу, ещё кто-то изготовит удобрения, и так до бесконечности, до добычи руды в шахте. Это настолько очевидно, что мы принимаем его как данность, о чём свидетельствует даже отсутствие в словаре слов для описания многочисленных уровней производства, участвующих в таком обычном деле, как накрывание стола для обеда.Обратите внимание на две составляющие: 1) умение отделить часть задачи, то есть определить её отделяемую часть, и 2) умение поручить её кому-то другому.Я ещё вернусь к этому ниже.
До появления ООП способность ограничить задачу была очень несовершенной. Чем больше людей работало над задачей, тем больше она выходила из-под контроля. Множество файлов с невразумительными именами (венгерская нотация), конфликты внешних переменных, почти полное отсутствие инкапсуляции. В точности как задача, с которой сталкиваются при разработке больших интегральных схем на уровне логических элементов. Как они решили её? Инкапсулировав кучу логических элементов внутри чипа. Я буду проектировать чипы. Ты будешь паять из них платы. Objective-C был точным отражением этой идеи.
Разумеется, это было лишь началом, а не концом (вот почему меня иногда раздражает, если в центр внимания ставят язык). Языки — это инструменты, которые выбирают или откладывают в сторону в зависимости от решаемой задачи. И то же самое на каждом уровне. Например, по прошествии 20 лет таже проблема снова возникает с библиотеками Java, потому что они выросли до таких размеров, что никто не может их охватить взглядом и эффективно использовать (это я про J2EE).
Вернёмся к суперраспространению, возникающему благодаря возможности поручить свои задачи кому-то другому, если речь идёт о товарах, изготовленных из битов и не подчиняющихся законам сохранения, на которых с античных времён основывалось вознаграждение. Что заставит кого-то заняться решением моих задач? Зачем это кому-то нужно, если я могу взять то, что он производит, и приспособить для собственных нужд? Моя книга о суперраспространении излагала возможное решение в контексте объектов ООП мелкой детализации, когда вознаграждение основывается на измерениях использования битов, а не на их покупке, как делается сегодня.
Но мерить использование скучно и трудно, если товары допускают значительное вмешательство со стороны недобросовестных пользователей. Напротив, сервисы SOA этому не подвержены. Они выполняются на сервере, которым управляет владелец, а не пользователь, и за их использованием можно следить, не опасаясь разнообразного мошенничества. Проблема честного дележа доходов для всех уровней организации производства сохраняется, но это бухгалтерская проблема, а не проблема защиты объекта от постороннего вмешательства.
Любопытно, что при подъёме по иерархии от ООП до JBI/SCA и SOA сохраняются все старые проблемы компьютерной науки. Единственная разница в том, что стандартное представление данных (схемы XML) устраняет необходимость специализированных парсеров для каждого представления. В результате генерация кода избавляется от деревьев DOM, строящихся стандартными парсерами XML под управлением всё более графических «языков», таких как UML и DODAF. Всё происходящее просто восхищает, хотя бы в сравнении с нескончаемыми спорами о том, какой язык ООП «лучше».Всё это я увидел и попробовал (работая с Си, Objective-C, Perl, Паскалем, Java, Ruby и так далее). Информационные технологии наскучили мне, и я занялся более интересными проблемами.

— Каковы недостатки наших способов обучения разработке ПО?
Брэд: Лично я, занимаясь преподавательской работой, пытался информировать слушателей о недостатке надёжных экономических рычагов, влияющих на качество ПО. Как правило, экономические вопросы отсутствуют и игнорируются в учебных программах по компьютерным наукам и программированию, им не уделяется никакого внимания.

— Почему компьютерные науки не являются наукой в подлинном смысле этого слова?
Брэд: Каждый раз, когда вы сталкиваетесь с новым программным продуктом, он оказывается чем-то совершенно новым и уникальным. Какая может быть наука, если все предметы её уникальны? Если вы будете день за днём исследовать золото или свинец, то сможете измерять их свойства и применять научные методы исследования. С программным обеспечением это невозможно.