Б. Страуструп - Дизайн и Эволюция C++. 2006 (1160775), страница 48
Текст из файла (страница 48)
Еше хуже то, что программисты-практики вынуждены оценивать язык как инструмент, а не как интеллектуальное достижение. Поэтому они сравнивают компиляторы, инструментальные средства, различные оценки производительности, организацию технической поддержки, библиотеки, возможности обучения (книги, журналы, конференции, учебные курсы, помощь консультантов) и т.л. на текущем этапе и в краткосрочной перспективе. Заглядывать далеко в будущее обычно слишком опасно из-за огромного объема коммерческой рекламы и потенциальной возможности принять желаемое за действительное. Поначалу многие считали язык Мог[о!а-2 конкурентом С++. Однако до выхода первой коммерческой версии С++ в 1985 г.
его вообще вряд ли можно было рассматривать как конкурента, а к тому времени С пользовался в С)ПА куда большим успехом, чем Мог[в!а-2. Позже вошли в моду рассуждения о том, какой язык — С++ или ОЪ]ест!не С [Сох, 1986] — слелует считать настоящим объектноориентированным С.
Для многих организаций, которые могли бы воспользоваться С++, возможной альтернативой был язык Аг[а Кроме того, для приложений, где не требовалось ни прямого доступа к оборудованию и операционной системе, ни максимальной производительности, нередко предлагались 8ша!!га[[г [Оо!г[Ъегй, 1983] и объектно-ориентированный вариант 1!зр [Ккха[ез, 1992]. Позже проводился сравнительный анализ пригодности для некоторых приложений С++ и Е!ГГе! [Меуег, 1988] или С++ и Мопц!а-3 [Хе!зоп, 1991]. 7.4.1. Традиционные языки По-моему, основным конкурентом С++ всегда был С. Сегодня С++ является наиболее распространенным объектно-ориентированным языком только потому, что это единственный язык, способный соперничать с С на его собственном поле и одновременно предоставлять значительные усовершенствования. В С++ есть путь перехода от С к стилям проектирования и реализации систем, которые оснонаны на более прямом отображении понятий прелметной области на концепции языка (это обычно и называется абстракцией данных или объектно-ориентированным программированием).
С другой с~ороны, многие организации, рассматриваюшие вопрос о новом языке программирования, традиционно использовали НИИИИИИ$ Заинтересованность и использование какой-нибудь язык собственной разработки (обычно вариант Рааса!) или Рогггап. Но ведь если не касаться серьезных научных расчетов, то при поверхностном рассмотрении зти языки можно считать эквивалентными С, сравнивая их с С+э. Конкуренция с языком Гогггал более жесткая.
У него есть преданные поклонники, которые — как и немалая часть программистов на С вЂ” нс очень интересуются прочими языками программирования и тонкостями информатики. Им просто нужно лелать свою работу. Многие компиляторы Гогггап генерируют эффективный код для высокопроизводительных компьютеров, а для пользователей это имест первостепенное значенце. В некоторых задачах С++ удавалось успешно соперничать с Гогггап. Но и здесь Сь+ обязательно будет конкурентоспособен: компиляторы проводят более эффективную оптимизацию, например, при встраивании вызовов функции, а к тщательно разработанным библиотекам, написанным на Роптал, можно напрямую обращаться из С++-программ.
С++ все чаше используется для расчетных и научных задач [Гога!ппй, 1990[, [Вцг[йе, 1992], [Ваггол, 1994[, Это породило ряд предложений о расширениях. Как правило, в основе лежал опыт Гогггап, поэтому судьба этих предложений сложилась не очень удачно. Я надеюсь, что акцентирование внимания на высокоуровневых свойствах, с одной стороны, и методы оптимизации — с другой, в конечном итоге сослужат научному сообществу большую пользу, чем простое добавление низкоуровневых средств из Гогггап.
Убежден, что у С++ есть потенциал для применения в научных расчетах, и хотел бы обеспечить в этой области большую поддержку, чем имеющаяся сейчас. 7.4.2. Современные языки С 1984 по 1989 гг. в соревновании с языками, поддерживающими механизмы абстракции, с маркетинговых позиций С++ явно проигрывал. В частности, маркетинговый бюджет АТйТ в это время чаше всего был на нуле, а общие ее расходы на рекламу С++ составили около 3 тыс. долларов. Из них треть была потрачена на рассылку компаниям, приобретшим лицензию на НН1Х, информационного письма о том, что С++ существует и продается.
Разумеется, никакого эффекта это пе возымело. Еще 2 тыс. долларов ушло на организацию приема для участников первой конференции по С++ 1987 г. в Санта-Фе. Это тоже слабо поспособствовало известности С++, но, по крайней мере, пам устроили вечеринку. На первой конференции ООРВЕА сотрудники АТЛЕТ арендовали самый маленький стенд.
Стенд обслуживался добровольцами, которые пользовались обычными досками вместо компьютеров и делали копии технической документации на бланках для регистрации посетителей. Мы хотели распространять хоть какие-то рекламные сувениры с символикой С++, но средств не было. Вплоть до сегодняшнего дня причастность АТЛЕТ к С++ выражается в традиционной для Ве!1 ЕаЬз политике подталкивания разработчиков и исследователей к написанию статей, научным спорам и участию в конференциях, а не в обдуманном продвижении С»» на рынок.
Внутри компании С++ всегда был неким ~движением снизу» без финансовой и административной поддержки. Естественно, тот факт, что Сь+ появился на свет в полраздслепии АТЛЕТ, пошел ему на пользу, но такая помощь была заработала тяжкой борьбой за выживание в большой компании. Коммерческая конкуренция !1ИИИИ И%И По сравнению с другими языками, сильные стороны С++ — способность работать в традиционной компьютерной среде, эффективность по быстродействию и памяти, гибкость концепции классов, низкая цена, а также то, что язык не является собственностью какой-то одной компании.
Слабости — некоторые неудачныс конструкции, унаследованные от С, отсутствие эффектных нововведений, например встроенной поддержки баз данных, отсутствие изощренных сред разработки (только недавно появились среды, наличие которых программисты на Бала!!га!к или Ыэр счи~ают само собой разумеющимся, см. раздел 7.1.5), недостаточное количество стандартных библиотек (лишь в послелнее время получили широкое распространение большие библиотеки для С++, но они не являются станлартными, см. раздел 8А) и неспособность продавцов вкладывать в рекламу такие же средства, какие вкладывают более богатые конкуренты. В отличие от традиционных языков, С+.ь имеет механизм наследования, что является большим преимуществом.
По сравнению же с языками, поддерживаю- шими наследование, в С++ предусмотрен статический контроль типов. Из всех языков только ЕНе1 и Мос!п!а-3 в какой-то мере похожи на С++. В языке Аг!а9Х, идущем на смену Ада, тоже есть наследование. Сь+ проектировался как язык для системного программирования и разработки приложений, в которых есть большой системный компонент. Эта обласп была хорошо знакома мне и моим коллегам. Решение не жертвовать сильными сторонами С++ в угоду болыпей популярности оказалось главной причиной успеха языка. Только время покажет, не помешало ли это завоеванию еше болыпей аудитории.
И если вдруг окажется, что помешало, я бы не стал считать это трагелисй, поскольку не разделяю точку зрения, что один язык должен быть всем и для всех. С++ и так хорошо служит интересам тех, на кого был первоначально рассчитан. При этом я полагаю, что с появлением библиотек привлекательность С++ может возрасти многократно. 7.4.3. Как выдержать конкуренцию Люди часто удивляются, почему АТЬТ позволяет другим компаниям реализовывать С++. Это свидетельствует о незнании законов и непонимании целей АТе" Т. После опубликования справочного руководства по С++ !Бггопзггнр, 19841 любой желающий может создать компилятор для языка. Более того, АТйТ не только не препятствовала приходу новых людей на растущий рынок компиляторов С++, инструментальных средств, образовательных услуг и т.д., ио всячески приветствовала и поощряла данную тенденцию. Многие просто упускают из виду, что АТс" Т в гораздо большей степени является потребителем программных продуктов, нежели их производителем.
Поэтому компании очень выгодны труды чконкурентов» на поле С++. Язык, принадлежащий одной компании, никогда не стал бы пользоваться таким успехом, как С+а. Создание компилятора, инструментария, библиотек, образовательной инфраструктуры — все это просто не под силу одной, сколь угодно крупной организации. Кроме того, запатентованный язык неизбежно отражал бы политику и курс компании, а это помешало бы ему выжить в открытом и свободном мире. Думаю, что язык, которому удалось выдержать испытания в стенах ВеП НИИИИИИФ Заинтересованность и использование !.аЬэ и устоять ирою|в стихии рьшка, не может быть совсем уж плохим, даже если он не подчиняется диктату академической моды, Само собой, стратегию определяют не какие-то безликие компании.