Программирование >>  Полиморфизм без виртуальных функций в с++ 

1 ... 54 55 56 [ 57 ] 58 59 60 ... 144


идеями и быстрому решению возникающих проблем. Тогда я мог лично разбираться в проблемах пользователей, исправлять ошибки в Cfront и библиотеках, а иногда даже вносить изменения в язык. Я уже упо.минал в разделах 2.14 и 3.3.4, что в то время пользователя.ми были в основном исследователи и разработчики из Bell Labs.

7.3.2. Сферы применения С++

к сожалению, многие пользователи не документируют свой опыт, а некоторые организации считают его чуть ли не государственной тайной. Поэтому до программистов и администраторов доходят не только правдивые данные о языках и методах программирования, по и много мифов, неточной, а иногда и откровенно ложной информации. Отсюда постоянное дублирование усилий и повторение известных опшбок. Цель этого раздела - показать несколько областей, в которых использовался С++, и побудить разработчиков документировать свой опыт, чтобы и.м .\югло восгюльзоваться все сообщество пользователей. В каждой из упоминаемых областей трудились, по крайней .мере, два человека в течение не менее двух лет. Самый больпюй из известных мне документированных проектов состоит из 5 .млн строк на С++ и разрабатывался коллективо.м из 200 человек свыше ce.Nui лет.

Итак, области использования С-ы-; апи.мация, автономные погружаемые аппараты, бпллинговые системы (в сфере телеко.ммуникаций), управление кегельбаном, трассировка монтажа печатных схе.м, CAD/CAM, моделирование химических процессов, управление агентством по продаже автомобилей, CASE, компиляторы, матобеспечение для пультов управления, моделирование циклотрона, системы баз данных, отладчики, системы поддержки принятия решений, обработка ци(зровых фотографий, электронная почта, управление вышивальной машиной, экспертные системы, автоматизация производства, финансовая отчетность, телеметрия полетов, обмен валют, перевод денежных сумм, генеалогические исследования, управление газоперекачивающими станциями и биллинговые системы для них, графика, описание аппаратуры, управление больничны.ми архивами, управление промышленным роботом, моделирование набора машинных команд, интерактивные мультимедийные средства, магнитогидродина.мика, обработка медицинских образов, медицинский .мониторинг, управление ракетами, управление ипотечной компанией, сетевые протоколы, систе.мы управления и администрирования сетей, мониторинг сетей, операционные системы (реального времени, распределенные, рабочих станций, мейнфреймов, объектно-ориентированные), среды программирования, страховой бизнес, моделирование ударных волн, управление бойнями, програм.мное обеспечение коммутаторов, инструментальные средства для тестирования, трейдерские системы, обработка транзакций, системы передачи данных, управление транспортным парком, пользовательские интерфейсы, видеоигры, виртуальная реальность.

7.4. Коммерческая конкуренция

Среди программистов, в прессе, на конференциях и в электронных средствах всегда велись (да и сейчас ведутся) споры о том, какой язык лучший и кто победит



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

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

Поначалу многие считали язык Мос1и1а-2 конкурентом С++. Однако до выхода первой ко.ммерческой версии С++ в 1985 г. его вообще вряд ли можно было рассматривать как конкурента, а к тому времени С пользовался в США куда большим успехом, чем Мос1и1а-2. Позже вошли в моду рассуждения о то.м, какой язык - С++ или Objective С [Сох, 1986J - следует считать настоящим объектно-ориентированным С. Для многих организаций, которые могли бы воспользоваться С++, возможной альтернативой был язык Ada. Кро.ме того, для нриложепий, где не требовалось ни прямого доступа к оборудоватш и операционной системе, ни максимальной производительности, нередко предлагались Smalltalk [Goldberg, 1983] и объектно-ориентированный вариант Lisp [Kiczales, 1992]. Позже проводился сравнительный анализ пригодности для некоторых приложений С++ и Eiffel [Meyer, 1988] или С++ и Modula-3 [Nelson, 1991].

7.4.1. Традиционные языки

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



какой-нибудь язык собственной разработки (обычно вариант Pascal) или Fortran. Но ведь если не касаться серьезных научных расчетов, то при поверхностном рассмотрении эти языки .можно считать эквивалентными С, сравнивая их с С++.

Конкуренция с языком Fortran более жесткая. У него есть преданные поклонники, которые - как и не.малая часть програм.мистов на С - не очень интересуются ирочи.ми языками программирования и тонкостя.ми информатики. Им просто иуж1ю делать свою работу. Многие ко.мпиляторы Fortran генерируют эффективный код для высокопроизводительных компьютеров, а для пользователей это имеет первостепенное значение. В некоторых задачах С++ удавалось успешно соперничать с Fortran. Но и .здесь С++ обязательно будет конкурентоспособен: компиляторы проводят более эффективную оптимизацию, например, при встраивании вызовов функции, а к тшательно разработанным библиотекам, написанным на Fortran, можно напря.мую обращаться из С++-програм.м.

С++ все чаще используется для расчетных и научных задач [Forslund, 1990], [Budge, 1992], [Barton, 1994]. Это породило ряд предложений о расширениях. Как правило, в основе лежал опыт Fortran, поэто.му судьба этих предложений сложилась не очень удачно. Я надеюсь, что акцентирование внимания на высокоуровневых свойствах, с одной стороны, и методы оптимизации - с другой, в конечно.м итоге сослужат научпо.му сообществу большую пользу, чем простое добавление низкоуровневых средств из Fortran. Убежден, что у С++ есть потенциал для применения в научных расчетах, и хотел бы обеспечить в этой области большую поддержку, чем и.меющаяся сейчас.

7.4.2. Современные языки

С 1984 по 1989 гг. в соревновании с языками, поддерживающими механизмы абстракции, с маркетинговых позиций С++ явно проигрывал. В частности, маркетинговый бюджет AT&T в это время чаще всего был на нуле, а общие ее расходы на рекла.му С++ составили около 3 тыс. долларов. Из них треть была потрачена на рассылку компания.м, приобретшим лицензию на UNIX, информационного письма о том, что С++ существует и продается. Разумеется, никакого эффекта это не возымело. Еще 2 тыс. долларов ушло на организацию приема для участников первой конференции по С++ 1987 г. в Санта-Фе. Это тоже слабо поспособствовало известности С++, но, по крайней мере, нам устроили вечеринку. На первой конференции OOPSLA сотрудники AT&T арендовали самый маленький стенд. Стенд обслуживался добровольцами, которые пользовались обычными досками вместо компьютеров и делали копии технической доку.ментации на бланках для регистрации посетителей. Мы хотели распространять хоть какие-то рекламные сувениры с си.мволикой С++, но средств не было.

Вплоть до сегодняшнего дня причастность AT&T к С++ выражается в традиционной для Bell Labs политике подталкивания разработчиков и исследователей к написанию статей, научным спора,м и участию в конференциях, а не в обдуманном продвижении С++ на рынок. Внутри компании С++ всегда был неким движением снизу без финансовой и административной поддержки. Естественно, тот факт, что С++ появился на свет в подразделении AT&T, пошел ему на пользу, но такая помощь была заработана тяжкой борьбой за выживание в большой компании.



1 ... 54 55 56 [ 57 ] 58 59 60 ... 144

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика