Интервью с Филиппом Версайе (Rogue Wave Software)
Не секрет, что среди языков программирования в настоящее время есть четко выраженная четверка лидеров: Си++, Java, Delphi (Object Pascal) и Visual Basic. Причем если последние три языка рождены в недрах конкретных компаний (Java — Sun, Delphi — Borland, Visual Basic — Microsoft), которые активно развивают их своими силами, то Си++ такого «покровителя» не имеет. Бьерн Страуструп и AT&T Bell Labs (ныне Lucent Bell Labs) после проведения международной стандартизации языка в рамках ISO фактически произвели его отчуждение во благо развития программной индустрии.
В связи с активным маркетинговым продвижением языка Java и переходом его в стадию зрелости о языке Си++ стали понемногу забывать — надо сказать, незаслуженно. Несмотря на присущие ему недостатки и многочисленные маркетинговые войны, он был и остается проверенным инструментом для решения практически любых задач. При этом роль Си++ в реализации критически важных и наиболее сложных программных систем остается доминирующей.
В конце 1980-х годов на рынке инструментальных средств для профессионального программирования на Си++ (прежде всего библиотек классов) появилась компания Rogue Wave Software. Все эти годы она хранила верность языку Си++, целенаправленно развивая те программные возможности, которые были упущены либо недостаточно качественно реализованы признанными лидерами, такими как Microsoft, IBM, Borland Software.
В сентябре этого года Rogue Wave Software, заключив партнерское соглашение с компанией «Аплана» (сформированной на базе Центра заказных разработок «АйТи»), начала активное продвижение своих продуктов на российском рынке. Одним из первых шагов Rogue Wave в продвижении своего инструментария явился приезд в Москву на осеннюю выставку SofTool 2002 Филиппа Версайе, ведущего инженера компании. Пользуясь случаем, редактор журнала «Мир ПК» Руслан Богатырев задал ему ряд вопросов, касающихся роли и места Си++ в современном программировании.
— Как вы оцениваете нынешнее положение языка Cи++ на фоне таких языков, как Visual Basic, Java, Delphi? В чем его преимущество перед конкурентами (если оно есть) на корпоративном рынке, рынке ПК, рынке бытовой электроники?
— Использование таких средств, как Visual Basic и Delphi, позволяет очень быстро разрабатывать приложения, и, конечно, в ряде случаев это оправданно. Однако по уровню гибкости оба языка сильно уступают Cи++. Но зачастую возникают проблемы: например, проект разрабатывается на VB или Delphi и все идет по плану до тех пор, пока не требуется добавить несколько новых возможностей, которые усложняют все приложение в целом. Понадобится не один день, чтобы обойти ограничения, накладываемые средой разработки. Си++, напротив, позволяет решать задачи любой сложности, добавлять новые функции и уточнять алгоритмы. Кроме того, в отличие от VB и Delphi, язык Си++ доступен на любых платформах, что без сомнения является существенным преимуществом.
Java в целом предоставляет такой же уровень гибкости, как и Cи++, и также является кроссплатформным средством разработки. Среди отличий можно указать отсутствие в Java таких средств, как, например, шаблоны, некоторые типы данных (enums), множественное наследование и процедуры работы со строками. При этом Java предоставляет ряд дополнительных возможностей, которых нет в Cи++. Основное отличие в производительности: хотя сегодня Java-приложения работают быстрее, чем раньше, Cи++ остается оптимальным языком программирования для разработки критически важных приложений, требующих быстродействия и оптимизации работы с памятью. И со временем вряд ли что-нибудь изменится.
Таким образом, мы рекомендуем использовать Cи++ для разработки корпоративных приложений, в которых критичным является быстродействие. Что касается офисных приложений, а также сектора приложений для бытовой электроники, Си++ может быть оптимальным выбором, поскольку для этого класса приложений быстродействие и объем занимаемой памяти всегда играют существенную роль.
— Ваш взгляд на противостояние Java 2 Platform и Microsoft .NET: какая платформа имеет преимущества и в каком плане (в технологическом, маркетинговом и т. п.)?
— В разработке и реализации стандартов Java участвует более 400 компаний и организаций, в то время как .NET — продукт одной компании. Успешная маркетинговая политика Microsoft без сомнения сделает .NET доминирующей платформой разработки в среде Windows, в то время как Java 2 сохранит свои позиции в мире UNIX. Но сейчас пока трудно определить победителя. С технической же точки зрения невозможно говорить о превосходстве Java 2 или .NET: и та и другая платформа предоставляет развитые средства разработки приложений и сервисов, сочетая объектно-ориентированный подход с компонентной архитектурой. И Java 2, и .NET позволяют разрабатывать приложения любого типа с высокой степенью гибкости и удобства. Однако все же можно указать несколько существенных различий. Так, Java-приложения работают на любой платформе (на серверных платформах, таких как Linux и другие диалекты Unix, OS/390, Windows 2000, и на рабочих станциях типа Mac OS, Windows и Linux), в то время как .NET разработана для среды Windows и в настоящий момент функционирует только на этой платформе. С другой стороны, Microsoft .NET поддерживает более 20 языков, давая возможность практически каждому программисту приступить к разработке приложений в среде .NET без переподготовки. J2EE, напротив, поддерживает только один язык программирования: Java. Таким образом, обе платформы разработки имеют свои плюсы и минусы, и окончательный выбор определяется тем, что важнее для создаваемого приложения.
— Насколько серьезен (с точки зрения развития программной индустрии на ближайшие три—пять лет) и технологически обоснован взрыв интереса к Web-службам? Чем отличается здесь подход вашей компании от подходов IBM, Sun, Microsoft, Borland?
— Мы убеждены, что Web-сервисы станут важнейшим средством для обеспечения взаимодействия приложений как внутри организации, так и вне ее. Подход Rogue Wave к реализации Web-сервисов позволяет напрямую задействовать имеющуюся сетевую и информационную инфраструктуру. В отличие от конкурентов мы сочетаем преимущества кроссплатформной разработки и соответствия стандартам Си++. В настоящее время уже доступны три мощных средства, которые помогают в разработке Web-сервисов —XML Object Link (отображение XML-документов на объекты Си++), Bobcat (сервер приложений с интерфейсом Java Servlet API), Persian (реализация Web-сервисов).
— Насколько реально в нынешних условиях сочетать переносимость и производительность программных систем? Чем конкретно ваш инструментарий помогает в достижении переносимости систем между разными аппаратными и операционными платформами?
— Замена части кода Java-приложений специальными компонентами Си++ действительно имеет смысл, если речь идет о крупномасштабных проектах, в которых вопросы быстродействия оказываются критичными. Однако сложность заключается в том, чтобы выполнить этот перенос и быстро, и безошибочно. Библиотеки классов Rogue Wave C++ — хороший пример, показывающий, что это действительно возможно. Код, разработанный с использованием наших библиотек, полностью переносим между различными платформами, и это означает, что не нужно тратить время и ресурсы на перенос приложения с одной платформы на другую. Поддерживаемые платформы включают Windows, Solaris, Linux, HP-UX, AIX, Compaq True64, UNIX и IRIX. Более того, эти библиотеки классов не привязаны жестко ни к одной базе данных, и можно работать с любыми источниками — Oracle, DB2, Informix, Sybase, PostgreSQL, Microsoft SQL Server и ODBC. Таким образом, если необходимо работать с Sybase на платформе HP и с Oracle под Solaris, можно использовать один и тот же код.