Б. Страуструп - Дизайн и Эволюция C++. 2006 (1160775), страница 18
Текст из файла (страница 18)
Поскольку С тгйЬ С1аззез и С++ проектировались в основном на доске, то обсуждение всегда фокусировалось ыа «типичных» проблемах: небольших примерах, иллюстрирующих характерные особенности большого класса задач. Поэтому хорошее решение небольшого примера очень помогало при написании программ для реальных аналогичных задач. В С вчгЬ С!аззез самым главным считался класс саз!с, положенный в основу библиотеки для поддержки многозадачности в духе В1шп1а. Другими важными классами были диене, 1тзг и Ьтэгодгав. Классы диене и 1 гз с базировались на идее, заимствованной из В1пш! а, о классе 1 тик, от которого пользователи производили собственные классы. При таком подходе есть опасность создать язык и инструментарий для изящного решения небольших специально подобранных примеров, которые нельзя масштабировать для построения законченных систем или больших программ. Но такая нежелательная возможность нейтрализовалась тем простым фактом, что С нчгЬ С!аззсз с самого начала должен был быть самоокупаемым.
А стало быть, он нс мог выродиться во что-то изящное, но бесполезное. Работая в тесном контакте с пользователями, я привык обещать только то, что был в состоянии сделать. Я не мог себе позволи~ь надавать столько обещаний, чтобы организация в конце концов сочла разумным выделить достаточно ресурсов для разработки, сопровождения и маркетинга «продукта». Глава 3. Реждение С++ Никакие узы не связывают крепче, чем узы наследования. Стивен Джей Гау ел 3.1. От С алФ С!аыез к С++ В 1982 г. мне стало ясно, что С ку!гЬ С!азвез стал средним языком и останется таким до самой своей кончины. Средний язык я определил следующим образом: продукт достаточно полезен, чтобы окупить себя и своего разработчика, но нс настолько привлекателен, чтобы окупить организацию формальной технической поддержки и разработки.
Стало быль, продолжение работы над С куйЬ С!аззез и его реализацией на базе препроцессора С обрекало меня на бесконечное сопровождение. Из этой ситуации я видел только два выхода: а прекратить поддержку С кв1гЬ С!аззез, перестать работать с пользователями, а себя освободить для новой деятельности; а на основе опыта работы над С ъчгЬ С!аввез разработать новый — лучший— язык, который привлек бы достаточно пользователей, чтобы окупить организацию центра поддержки и разработки, и самому опять же заняться чемто другим. В то время необходимым минимумом я считал 5 тыс. пользователей.
Третья возможность — увеличение числа пользователей за счет маркетинговых мероприятий (читай, хвастливой рекламы) — мне никогда не приходила в голову. На деле же случилось так, что взрывной рост популярности Сч-у (так был назван новый язык) потребовал всего моего времени, так что и по сей день я не сумел переключиться на что-нибудь значительное.
Думается, что своим успехом Сч-у обязан тому, что здесь были четко выдержаны поставленные цели проектирования: язык действительно помог структурировать большой класс программ гораздо лучше, чем С, не жертвуя при этом эффективностью и не требуя такой культурной перестройки, которая сделала бы его неприемлемым для организаций, неохотно идущих на большие перемены.
Его успех был частично ограничен недостатком новых по сравнению с С возможностей, а также технологией реализации (использование препроцессора). В С ш)гЬ С!аззез не было предусмотрено достаточной поддержки для людей, готовых потратить значительные усилия в надежде получить адекватный результат. С ку!гЬ С!аваев был шагом в правильном направлении, но только одним маленьким шажком. Придя к таким выводам, я начал проектировать улучшенный и расширенный язык, ИИИИИ>ИЫ Рождение С++ 3.2. Цели С++ На протяжении периода с 1982 по 1984 гг.
перед разработчиками С++ ставились все более честолюбивые и вместе с тем более определенные цели. Я начал смотреть на С++ как на язык, отличный от С. Предметом кропотливой работы который должен был прийти на смену С |ч!|Ь С!аззез. На этот раз я решил реализовать его в виде нормального компилятора. Новый язык поначалу продолжал именоватъся С |ч!|Ь С!аззез, но после вежливой просьбы руководства получил название С84. Причиной переименования было то, что пользователи стали называть С |ч!|Ь С!аззез сначала «новым С», а потом и просто С.
Из-за этого настоящий С низвели до «чистого С», «простого С» и «старого С». Последнее название было особенно обидным, поэтому естественная вежливость и желание избежать путаницы заставили меня искать новое имя. Имя С84 продержалось всего несколько месяцев отчасти из-за того, что было некрасиво и слишком официально, а отчасти потому, что путаница все равно возникла бы, если бы люди стали опускать «84».
К тому же и Ларри Рослер (Еаггу Коз!ег), редактор комитета АЫ81 ХЗ)11 по стандартизации С, попросил меня придумать другое название. Он объяснил, что «стандартизованные языки часто официально именуют, прибавляя к собственному названию языка год принятия стандарта, поэтому всех будет сбивать с толку то, что надмножество (С84, известный также под именем С |«ч|Ь С!аззез, позже С++) имеет номер меньший, чем подмножество (С, возможно, С85, позже АЫ5! С)». Это замечание показалось мне весьма разумным, хотя Ларри оказался излишне оптимистичен на счет даты принятия стандарта С, и я призвал сообщество пользователей С погЬ С!аваев подыскать другое название.
Я выбрал для нового языка имя С++, поскольку оно было коротким, имело симпатичные интерпретации и не содержало прилагателъных к «С». «++» в зависимости от контекста можно прочесть как «следующий» или «увеличить», хотя обычно произносят «плюс плюсы Предложил это название Рик Маскитги (ВйсЬ Мазей|!). Впервые я употребил сочетание «С++» в декабре 1983 г. в процессе работы над окончательным редактированием статей [Бггопзггпр,1984! и !8ггопзггпр,1984с!.
Буква «С» в С++ имеет длн|шую историю. Разумеется, это название языка, созданного Деннисом Ричи. Непосредственным предшественником С был язык  — интерпретируемый потомок ВСР!., который спроектировал Кен Томпсон. Создателем ВСРП был Мартин Ричарде из Кембриджского университета, а работал он над ним во время пребывания в Массачусетском технологическом институте. В свою очередь ВСР!.
— это Ваз!с СРЕ, а СРŠ— название довольно большого (для своего времени) и изящного языка программирования, совместной разработки кембриджского и лондонского университетов. До подключения к проекту лондонцев «С» было первой буквой от «СатЬг!|!8е», а потом официально расшифровывалось как «СошЪ|пе|!». Неофициально же «С» означало «СЬг!згорЬег», поскольку именно Кристофер Стрейчи (СЬ|йзгорЬег БггасЬеу) вдохновлял работы по СР1. Цели С++ стали библиотеки и инструментальные средства. По этой причине, а также из-за того, что разработчики инструментальных средств в Ве1! 1аЪз начали проявлять интерес к С++, а я сам полностью погрузился в работу над новым компилятором С1гопг, необходимо было дать ответ на несколько ключевых вопросов: а кто будет пользоваться языком? гз на каких системах будут работать пользователи? з как прекратить заниматься написанием инструментальных средств? ц как на определении языка скажутся ответы на первые три вопроса? Что касается первой неясности, я полагал так: пользователями будут мои друзья в Ве!! ).аЬз и я сам, затем язык более широко распространится в АТв" Т, после идеями и инструментарием заинтересуются университеты, наконец, АТ яТ и другие смогут зарабатывать на продаже того набора инструментов, который получится.
В какой-то момент первая, до некоторой степени экспериментальная реализация, сделанная мной, перестанет эксплуатироваться и будет заменена компилятором промышленного качества, разработанным АТ8 Т и другимн организациями. Это было разумно с практической и экономической точек зрения. Первая реализация (С1гопг) не имела бы полного набора инструментальных средств, была бы переносимой и дешевой, поскольку в таком продукте нуждались и именно его могли себе позволить я, мои коллеги и многие университеты.
Возможности для создания лучшего инструментария и специализированных сред появились бы позже. Более развитые инструменты, предназначенные преимущественно для промышленных пользователей, необязательно должны были быть дешевыми, и плата за них окупила бы организацию технической поддержки, без чего невозможно представить широкое распространение языка. Как раз это и есть ответ на третий вопрос: «Как мне перестать заниматься написанием инструментальных средств?».