ПРИЛОЖЕНИЕ. JAVA ПРОТИВ C++ .....................................................................................................257
Благодарности
Эта книга, как и любая другая, обязана своим существованием слишком многим, чтобы их можно было
перечислить в одном списке. Книга — это нечто большее, чем просто страницы, покрытые забавными
черными значками. Это смесь альтруизма, авторского ego и первобытного крика души. Кроме того, она
сыграла заметную роль в жизни автора и его семьи. Я глубоко благодарен своей жене Синди и
сыновьям Нику, Джей-Джею и Бобби за их терпение, поддержку и прощение, когда папа не мог
уделять им достаточно времени для игр.
Если считать терпение добродетелью, то самые добродетельные люди, о которых мне известно,
работают в издательстве AP Professional. Я в долгу перед всеми, кто с самого начала поддержал мою
идею этой книги и продолжал нажимать на меня, чтобы работа не стояла на месте. Иногда мне кажется,
что на мою долю выпала самая легкая часть — теперь я отдыхаю, а вы пытаетесь продать!
Я особенно благодарен Джону Трудо (John Trudeau) из компании Apple Computer, который впервые
предложил мне изложить на бумаге свои разрозненные мысли и переживания в виде семинара для
опытных программистов С++. Даже не знаю, что я должен выразить многим слушателям этих
семинаров, которые пережили ранние варианты этого курса, прежде чем он начал принимать
законченные формы, — то ли благодарность, то ли свои искренние извинения.
За эти годы многие люди повлияли на мое отношение к С++ и объектно-ориентированному
программированию. В голову сразу же приходит несколько имен — Нил Голдстейн (Neal Goldstein),
Ларри Розенштейн (Larry Rosenstein), Эрик Бердал (Eric Berdahl), Джон Брюгге (John Brugge), Дэйв
Симмонс (Dave Simmons) и Дэйв Бьюэлл (Dave Buell). Никто из них не несет ответственности за то, с
чем вы не согласитесь в этой книге, но именно они заронили в мою душу первые идеи.
Моя благодарность распространяется и на новых коллег из Microsoft Corporation, куда я был принят,
когда книга была «почти готова» — то есть были готовы первые 90 процентов и оставалось сделать
еще 90 процентов. Эта книга не была написана «под знаменем Microsoft», поэтому, пожалуйста, не
обвиняйте их во всем, что в ней написано. Книга была начата и почти завершена до того, как я начал
работать на Microsoft, и никто из работников Microsoft не помогал мне, не просматривал книгу и не
одобрял ее.
Джеймс Коплин (James Coplien), мы никогда не встречались, но твоя книга «Advanced C++
Programming Styles and Idioms» оказала самое большое влияние на мое мировоззрение. Книга
великолепно раскрывает тему нетривиального использования С++. Надеюсь, по твоим следам пойдут и
другие авторы.
Наконец, хочу поблагодарить Бьярна Страуструпа (Bjarne Stroustrup) за то, что он изобрел такой
странный язык. О простых, последовательных языках типа SmallTalk неинтересно не то что писать, но
даже думать. Если бы в С++ не было всех этих тихих омутов и загадочных правил, пропала бы
благодатная почва для авторов, консультантов и прочих личностей вроде вашего покорного слуги.
Бьярн, я люблю твой язык… Честное слово, люблю — как Черчилль любил демократию. С++ —
худший объектно-ориентированный язык… но остальные еще хуже.
Извинения… или вроде того
Заодно хочу воспользоваться случаем и извиниться перед всеми, кого я обидел в своей книге. Понятия
не имею, кто вы такие, но на своем горьком опыте (по двум статьям, опубликованным в журнале IEEE
Computer) я узнал, как много людей обижается на несерьезный подход к серьезной теме — такой как
10
С++. Если вы принадлежите к их числу, я сожалею, что задел ваши чувства. Пусть не так сильно,
чтобы лишиться сна, но все же сожалею.
Я не претендую на авторство изложенных в книге идей. Если вы увидите в ней что-то, придуманное
вами или кем-то другим, — смело заявляйте, что это ваших рук дело, спорить я не стану. Мастерство
нетривиального использования С++ растет от свободного обмена идеями, а не от формального
изучения, так что в действительности очень трудно однозначно определить, кто, что и когда сказал. Я
написал эту книгу, чтобы как можно больше людей смогли быстро и безболезненно повысить свою
квалификацию, поэтому вопросам авторства идей уделялось второстепенное внимание. Если вам это не
нравится, примите мои искренние извинения и напишите свою собственную книгу.
С другой стороны, я взял на себя смелость использовать новые имена для старых концепций,
вызывающих недоразумения, и нисколько об этом не жалею. Такова уж великая традиция сообщества
С++, которое переименовало почти все объектно-ориентированные концепции: субкласс (производный
класс), суперкласс (базовый класс), метод (функция класса) и т.д. Сторонники переименования не
обошли вниманием даже такие традиционные концепции С, как поразрядный сдвиг (<< и >>). Вам не
нравится, что для старых идей используются новые имена, — пусть даже в интересах ясности?
Приятель, вы ошиблись с выбором языка.
Я сделал все возможное, чтобы все фрагменты кода в этой книге работали как положено, но без
ошибок дело наверняка не обошлось. Действуйте так, словно ваша программу уже горит синим
пламенем, — проверяйте, проверяйте и еще раз проверяйте мой код, прежде чем использовать его в
своих программах. Помните: в этой книге я демонстрирую различные идиомы и концепции, а не
создаю библиотеку классов. Все идиомы вполне работоспособны, но дальше вам придется действовать
самостоятельно.
Джефф Элджер
Январь 1998 г.
Введение
и краткий обзор
В этой части я отвечаю на главный вопрос: «Зачем было писать еще одну
книгу о С++»? Далее в головокружительном темпе рассматриваются
некоторые нетривиальные возможности языка. Все это делается
исключительно для подготовки к следующим главам, поэтому материал
можно читать или пропускать в зависимости от того, насколько уверенно
вы владеете теми или иными тонкостями синтаксиса С++.
1
Do'stlaringiz bilan baham: |