Окончание. Начало см. PC Week/RE, N 28/2003, с. 19.

ОБЗОРЫ

Наше время

1986 г. Первая всемирная конференция по объектно-ориентированным системам программирования прошла в Портленде. Возможно, именно прозвучавшие на ней доклады оказали стимулирующее влияние на Уильяма Аткинсона, инженера Apple, который через год после этого спроектировал систему HyperCard, прообраз современных визуальных сред быстрой разработки. Эффективность новой технологии оказалась столь высокой, что уже в 1989 г. одиннадцать компаний, среди которых были 3Com, American Airlines, Canon, Data General, Hewlett-Packard, Philips Telecommunications, Sun Microsystems и Unisys, основали группу OMG (Object Management Group), призванную формировать индустриальные стандарты на объектное программирование и упрощать интеграцию приложений с помощью универсальных кросс-платформных технологий. Эта группа первым делом приступила к выработке единого стандарта компонентной модели CORBA (Common Object Request Broker Architecture) - набора спецификаций, определяющих способы объектно-ориентированного взаимодействия компонентов промежуточного уровня в гетерогенных средах без привязки к конкретным языкам программирования. С самого начала CORBA нацеливалась на поддержку крупных, индустриальных проектов, и этот подход со временем себя полностью оправдал. Сегодня нет другого столь же распространенного независимого стандарта, поддерживающего самые разные ОС и объектные модели.

1992 г. Вышел стандарт CORBA 1.0, определяющий ключевые аспекты функционирования CORBA-систем. В него были включены базовое описание объектной модели, наборы программных интерфейсов поддержки CORBA-систем, а также декларативный язык определения интерфейсов Interface Definition Language (IDL), созданный OMG для описания распределенных интерфейсов.

1993 г. Корпорация Microsoft выпустила первую версию компонентной модели COM (Component Object Model), идея которой была, видимо, позаимствована из модели SOM (System Object Model), уже давно существовавшей в IBM OS/2 (в создании OS/2 Microsoft одно время принимала активное участие). Первоначально COM готовилась только для поддержки технологии встраивания и связывания документов OLE, но быстро выделилась в самостоятельное направление.

В том же 1993-м была предложена компонентная технология Microsoft ActiveX, основанная на элементах управления OLE, пришедших из Visual Basic, где они назывались VBX/OCX.

1994 г. Опубликован стандарт CORBA 2.0, который быстро получил массовое признание, так как представлял собой богатый и глубоко проработанный набор документов и охватывал большинство востребованных рынком задач. В нем были ликвидированы недостатки прежней версии, в результате чего CORBA 2.0 начал поддерживать транзакции и понимать универсальную кодировку Unicode, а также появился набор средств обеспечения безопасности и взаимодействия COM- и CORBA-объектов.

Гради Буч и Джеймс Румбах из Rational Software решили объединить две методологии визуального моделирования Booch и OMT и создать на их основе новый язык UML (Unified Modeling Language).

1995 г. Sun Microsystems свободно распространяет в Интернете элемент технологии Java - среду HotJava, поддерживающую мобильный код, разработку проекта Green, которая к тому времени считалась в Sun практически пропащей, если бы не развитие Сети. Новинку сразу же лицензирует Netscape Communication, а следом за ней к Java проявляют коммерческий интерес десятки компаний, в том числе Microsoft, IBM, Adobe, Borland, Lotus, Oracle.

Корпорация Borland выпустила первую версию среды быстрой визуальной разработки Delphi 1, основанную на концепции библиотек стандартных компонентов.

Microsoft сообщает о новой технологии DCOM - распределенной версии COM, позволившей собирать приложения из компонентов, выполнявшихся на разных компьютерах. Первоначально эта технология называлась Network OLE (сетевое OLE), однако по мере выделения COM в самостоятельное направление решено было отказаться от упоминания OLE в ее названии.

1996 г. Microsoft называет ActiveX новой объектной стратегией, направленной на поддержку Интернета.

1997 г. Sun Microsystems предлагает концепцию Enterprise JavaBeans - технологию создания корпоративных Java-компонентов, которые можно исполнять на серверах приложений, реализуя логику крупных, хорошо масштабируемых и защищенных систем на платформно-независимой основе.

Эксперты OMG осознают не только важность объектных технологий программирования, но и острую потребность в универсальных методологических концепциях проектирования крупных систем. Секретом стабильности системы и высокой отдачи инвестиций специалисты OMG называют независимую UML-модель и приступают к созданию концепции "Архитектура, управляемая моделью" (Model Driven Architecture, MDA). В ее основу закладывается базовая платформно-независимая UML-модель системы, несколько платформно-зависимых моделей и коллекция определений программных интерфейсов. Первую реализацию этой универсальной концепции (так называемое "отображение в объектный стандарт") OMG выполнила, конечно, для CORBA.

2000 г. Microsoft анонсирует новую объектную платформу .NET и новый язык программирования C#, сочетающий лучшие свойства С++ и Java. Он был предложен Microsoft во многом в противовес Java.

2001 г. OMG выпускает спецификацию CORBA 3.0. Она дополнена возможностями асинхронного обмена сообщениями, разработки систем реального времени и создания встраиваемых систем. В ней появились подключаемые компоненты, поддержка XML и средства интеграции различных Интернет-технологий. Была продумана модель сборки системы из компонентов JavaBeans и ActiveX. Стало допустимым в рамках одного компонента описывать множество интерфейсов, а также использовать язык сценариев. Особый акцент в третьей версии CORBA сделан на эффективном взаимодействии с Java.

2002 г. Опубликована последняя официальная версия CORBA 3.0.2.

Что дальше?

Несмотря на многомиллионные вложения, сделанные в 1970-1980 годах коммерческими компаниями и государственными структурами разных стран в универсальные языки программирования (такие, как Алгол, PL/1, Си) и языки логического программирования (прежде всего Prolog), самой распространенной в мире программной технологией остается ООП. Наиболее известным событием нового тысячелетия в этой сфере стал быстро набравший популярность язык программирования C#. Его можно смело считать лучшим на сегодня объектно-ориентированным средством создания графических приложений (формально - для разных платформ, фактически же - только для .NET, так как без среды разработки ценность C# равна нулю). Правда, лучшим C# можно назвать среди небольшого числа коммерческих альтернатив (Java, С++ и, вероятно, Delphi). Если же сравнить его возможности со средствами SmallTalk, то окажется, что ряд сильных идей ООП, заложенных в SmallTalk продвинутыми инженерными умами, оказался в C# упущенным (см. "Оригинальные возможности Smalltalk").

В ближайшее десятилетие развитие ООП будет проходить под влиянием трех концепций: Microsoft .NET (прежде всего .NET Framework и ее подмножества и соответственно реализации C#), Java (все входящие в это понятие технологии) и CORBA. Причем важнейшей особенностью CORBA останется независимость от ОС и языка программирования CORBA-компонентов. Методология MDA станет основной объединяющей платформой моделирования для всех этих технологий, прежде всего в силу своей независимости от конкретного разработчика. Немаловажна и объявленная сквозная поддержка MDA во всех средствах разработки "Швейцарии в мире ПО" - корпорации Borland - и гиганта IBM (особенно учитывая недавнюю покупку Rational Software и развитие проекта Eclipse). Что касается "программирования в малом" (programming in small), то в этой области продолжится совершенствование шаблонов проектирования (высокоуровневого объектного программирования), их внедрение в среды разработки и дальнейшее сочетание шаблонного подхода с активно развивающимся языком моделирования UML, последняя версия которого 2.0 появится со дня на день.

Хочется также надеяться, что со временем в коммерческих оболочках создания ПО на популярных языках программирования все же будут реализованы возможности ООП, предложенные еще 25 лет назад авторами SmallTalk.

У вас есть дополнения к истории ООП? Присылайте их автору по адресу: sbo@pcweek.ru.        

Оригинальные возможности Smalltalk

Объекты могут обмениваться сообщениями (одна из ключевых идей ООП).

SmallTalk - это не только язык программирования, но и комплексная стандартизованная ANSI-среда разработки. Она легко переносима между платформами, так как написана на самой себе и при этом очень компактна (например, Squeak "весит" 7 Мб). В нее входят средства создания многооконных приложений, встроенные службы конфигурационного управления и контроля версий, а кроме того, она поддерживает отладку на всех этапах создания и развертывания продукта.

Smalltalk создавался как среда прототипирования (важный принцип ООП, подразумевающий спиральную разработку приложения, быстрое получение и совершенствование действующего прототипа).

Подготовленное с помощью SmallTalk приложение представляет собой один файл, хранящий все состояние системы.

Можно динамически создавать отложенные последовательности действий (блоки), что под силу лишь интерпретируемым системам.

Хотя из SmallTalk, как из Java и C#, удалена возможность множественного наследования, только эта среда позволяет элегантно имитировать его с помощью протоколов обмена сообщениями между классами.

Объект умеет информировать внешнюю среду о попытках неправильного использования самого себя (метод doesNotUnderstand).

В SmallTalk нет разделения между типами и классами, благодаря чему можно избегать ошибок приведения типов. Концепция набора базовых типов, позволяющая выявлять такие ошибки на этапе компиляции, далеко не всегда себя оправдывает, поскольку уводит разработчика от мышления в истинно объектном духе.

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

Документацию и комментарии можно встраивать в код.