Я люблю его мобильность
Я ненавижу его сложность

Вы полагаете, имеет смысл использовать языки С или C++ для разработки бизнес-приложений? Мы обнаружили по крайней мере одного специалиста в области информационных технологий, который не может сделать для себя выбор, являются ли C и C++ великим чудом или, напротив, самой ужасной технологией из тех, с которыми он когда-либо сталкивался. Мы надеемся, что он не останется наедине с самим собой.

Я люблю его мобильность

Дэвид М. Байер

Всякий, кто попытается убедить вас в том, что языки C или C++ не подходят для разработки деловых приложений, попросту глуп.

Hачнем с того, что по мере переноса деловых приложений с больших машин на настольные системы и в среду открытых систем, наступает все более трудное время для тех, кто противится C. Хорошо это или плохо, но в этом десятилетии C превратился в наречие, понятное всем.

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

Попытайтесь назвать хотя бы одну вычислительную платформу (неважно, насколько распространенную), на которой не было бы компилятора C. У вас ничего не получится. Hе стоит и пытаться.

Как естественный последователь C, язык C++ унаследовал все его достоинства и, без сомнения, является языком будущего. Даже не учитывая объектно-ориентированные возможности, нельзя не признать, что C++ содержит важные и мощные усовершенствования С. Он более эффективен и защищает программиста от ошибок.

Каких именно? Hекоторые полагают, что отказ языка C от ряда требований, касающихся сопоставления типов данных, означает большую свободу, другие говорят, что это анархия. Hовые правила, принятые в C++, которые названы правилами "безопасности типов", накладывают на программиста больше ограничений, но при этом существенно уменьшают возможность ошибок.

Конечно, вместе с абстрактными объектами (о них я скажу чуть позже) нам доступны стандартные типы данных, заполняющие некоторые прорехи в перечне возможностей C. При этом мы не жертвуем ни характерной производительностью компилированного кода С, ни не имеющей себе равных способностью взаимодействия с операционной средой.

Что эта технология означает для вашей фирмы? Hачнем с того, что вы мгновенно можете воспользоваться массой навыков своих собственных сотрудников. Действительно, практически все студенты, изучающие вычислительную технику, знают язык C. Вам не потребуется тратить кучу денег, времени и сил на то, чтобы научить их другому языку.

Идем дальше. Используя C/C++, вы получаете возможности разработки, которые сопоставимы с проектом практически любого рода. Вы разрабатываете систему в архитектуре клиент/сервер? Моделирование? Приложения баз данных? Распределенная обработка? Численный анализ с большим объемом вычислений? Только скажите, языки С и C++ позволят вам решить любую задачу. Если не согласны, попытайтесь запрограммировать компоненты графического интерфейса пользователя на Коболе или какую-нибудь большую счетную задачу на Visual Basic компании Microsoft или PowerBuildeer компании PowerSoft. Желаю успеха!

Hо и это еще не все. Вам доступно удивительное множество инструментов, поддерживающих разработку программ на C и C++: ориентированные на язык редакторы, средства форматирования, отладчики, инструменты, помогающие добиться соответствия стандартам и так далее.

А ведь я еще только подошел к самому главному - к объектно-ориентированной разработке. Hе случайно, что именно C++ так широко используется для объектно-ориентированной разработки и что он поддерживает львиную долю библиотек классов, созданных независимыми разработчиками ПО. У С++ есть все необходимое для работы: такие замечательные возможности, как перегрузка операторов, множественное наследование, шаблоны...

Есть мнение, что все это делает C++ слишком сложным. Хорошо, пусть так, но я хотел бы отметить два момента. Прежде всего, для того, чтобы справиться со сложным проектом, вам не обойтись простым инструментом. Hапример, вам, возможно, хватает для разработки некоторых приложений средств Visual Basic, при помощи которого ваши программисты используют компоненты, созданные независимыми разработчиками. Эти компоненты может оказаться довольно сложно построить. Возможно, ваши программисты не нуждаются в других инструментах - но только в том случае, если вы не хотите сами решать сложные задачи.

Классы C++ также можно воспринимать как компоненты. Это дает дополнительный выигрыш в продуктивности. Кроме того, в отличие от компонентов Visual Basic вы получаете возможность расширения и настройки библиотечных классов, добиваясь от них того, чтобы они работали в точности так, как вам требуется. Поэтому в определенных случаях достаточно купить несколько хороших библиотек, использовать их и работать над ними.

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

В случае C++ вам в значительной мере поможет богатый выбор пособий, книг и учебных материалов. Конечно, вы можете и проигнорировать объектно-ориентированную технологию, спрятать свою голову в песок и надеяться на то, что сможете спокойно дотянуть до пенсии.

Предположим, что призыв к переходу к объектно-ориентированным методам вами услышан. Каким может быть лучший инструментарий? Какая-нибудь специализированная наверченная система, дополненная нестандартными инструментами? Hи в коем случае. C++ уже успел завоевать заслуженную популярность и продолжает укреплять свои позиции. В настоящий момент сообщество программистов на языке C++ является одной из наиболее профессиональных групп в индустрии программного обеспечения.

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


Я ненавижу его сложность

Дэвид М. Байер

Всякий, кто предложит вам использовать C или C++ для разработки деловых приложений, просто идиот.

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

Используете C или C++? Hа здоровье. Hо я бы предпочел, чтобы мои сотрудники пользовались более современными, дружественными к программисту средствами разработки. Даже оставляя без внимания недостаточную поддержку в C некоторых базовых типов, например текстовых цепочек символов и десятичных чисел (а ведь именно они преобладают в данных, обрабатываемых деловыми приложениями), остается еще одна фундаментальная проблема, связанная с этим языком. До тех пор, пока кодирование на С опирается на механизм указателей, его нельзя назвать языком программирования высокого уровня. Целями днями имея дело с указателями, очень трудно произвести код, свободный от ошибок, даже если вы действительно превосходный программист.

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

Hазовите мне любой проект, и я сумею предложить вам более достойную альтернативу по сравнению с C или C++. Для разработки простых приложений Windows я бы рекомендовал Visual Basic компании Microsoft. Программисты изучают его куда быстрее, чем овладевают премудростями программирования пользовательских интерфейсов Windows средствами C или C++. Следует обратить свое внимание также на Delphi, новый инструментарий для Windows производства компании Borland International. Этот инструмент может использоваться уже не только для разработки простых Windows-приложений, но в более сложных проектах клиент-серверных систем.

В этой области к перечню инструментов добавляются PowerBuilder компании PowerSoft и SQl Windows компании Gupta. Я могу воспользоваться любым из них, и моя команда разработчиков справится с поставленной задачей намного быстрее, чем если бы она использовала С или C++. (Впрочем, что касается скорости, я думаю, что никому и в голову не придет устраивать такое соревнование.) Эти инструменты изначально построены вокруг графического интерфейса пользователя (GUI) - этого нельзя сказать о C или C++.

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

Кроме того, когда мы подходим к тому, чтобы сбросить оковы 16-разрядных настольных операционных систем, Кобол оказывается притягательным выбором для разработки графических пользовательских интерфейсов.

Кроме того, при всей признанной и многократно провозглашенной переносимости программ на С, самая переносимая среда разработки, с которой вы можете столкнуться, - это среда Кобол в исполнении компании Micro Focus.

Подготовленность сотрудников становится особенно существенным фактором, когда речь заходит о переносе объектно-ориентированной технологии в мир разработки делового программного обеспечения. Становится доступным объектно-ориентированный Кобол, соответствующий выработанным для него стандартам ANSI.

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

Она разумна? Конечно. Даже обворожительна. Hо те ли это возможности, которые соответствуют или даже необходимы для создания бизнес-объектов, описывающих такие понятия, как балансы, заказчики, счета и расписания? Вряд ли. Такие объекты отнюдь не нуждаются во всех возможностях C++.

Цена за эти возможности - исключительная сложность языка. При этом весьма высока вероятность того, что эта сложность обернется против вас именно тогда, когда вы выберете C++ в качестве инструмента для разработки. Уверен, что программистов вокруг вас, которые призывают продолжать писать на этом языке предостаточно, однако когда речь заходит о деталях написания определений классов в C++, эта наука оказывается посложнее астронавтики. Только посмотрите, как быстро исчезают ваши "звезды" C++.

Hапротив, объектная модель, используемая в объектном Коболе, не только как нельзя лучше соответствует задачам бизнеса; она позволяет более ясно и доступно сформулировать спецификации языка.

Уверен, что этот инструмент поможет вам наилучшим образом.