От редактора перевода
Книга, которую вы держите в руках, во многом
необычна и отличается от других изданий, посвященных Delphi. Прежде всего,
она предназначена не для начинающих. Чтобы по достоинству оценить
изящество преподносимых здесь примеров, необходимо уметь обращаться с Delphi
и разбираться в языке Object Pascal. Кроме того, книга никоим образом не
претендует на то, чтобы считаться всеобъемлющей энциклопедией - это скорее
хрестоматия, сборник интересных задач, удачных находок и красивых решений.
Использовать эту книгу можно по-разному.
Можно относиться к ней просто как к «поваренной книге» программиста, где
собрано множество рецептов на все случаи жизни (к этому подталкивает как
предисловие редактора серии «High Performance», так и название, под которым
выходит русская версия). Но программирование - это творчество, и
основную ценность здесь представляют не только и не столько готовые решения,
а лежащие в их основе идеи и та логика, тот ход мыслей, которые
помогли эти идеи реализовать. Ведь рецептом можно всего лишь воспользоваться,
а идея - потенциальный источник новых открытий. Так что если вы цените
блестящие находки, умеете испытывать удовольствие от собственноручно решенной
задачи и способны видеть красоту и гармонию в сухих строках листинга программы
- эта книга для вас!
И последнее. Один из авторов этой книги
очень верно сказал - нельзя изучить Delphi с помощью одних только книг,
какими бы хорошими они ни были. Delphi нужно исследовать. Не забывайте
об этом, и да сопутствует вам удача!
Александр Сергиенко
Январь 1998 г.
Предисловие
Программисты (особенно начинающие) любят задавать
вопросы типа: «Скажи, на чем ты пишешь?..» Когда-то этот вопрос выглядел
вполне логично. Компиляторы, отладчики, серверы, системы управления базами
данных и все остальное только-только выходило из каменного века. Программные
инструменты разительно отличались друг от друга по качеству и возможностям.
Стоило сделать ставку на неудачный инструментарий, и работа становилась
излишне тяжкой, а качество результата - низким.
Сегодня стал актуальным другой вопрос:
«А чего стоишь ты сам?» Благодаря непрерывной конкуренции современные
средства разработчика стали невероятно мощными и качественными, так что
среднему программисту вряд ли удастся выжать из них все возможное. Скорее
всего, вы спасуете намного раньше, чем ваш инструментарий - если
только не узнаете о нем абсолютно все и не доведете свое мастерство программиста
до подлинного совершенства.
Книги этой серии предназначены для углубленного
изучения программных инструментов. В них рассматриваются нетривиальные
возможности, которые невозможно описать в простейшем учебнике. Полноценные
проекты заставляют читателя мыслить на уровне эксперта - напрягать серое
вещество, лежащее в основе всего, что мы называем «мастерством».
Конечно, это не единственный путь - например,
можно добросовестно набивать шишки обо все острые углы новых технологий
и наобум пробовать все подряд, пока что-нибудь не заработает. А можно воспользоваться
опытом наших авторов, которые уже прошли стадию обучения и попутно сделали
кое-какие заметки на память. Мы тщательно отобрали темы, авторов и методику
изложения, чтобы читатель не путался в ненужных вступлениях или редких
технологиях, которые ему все равно не понадобятся.
Наша главная цель - поднять ваше мастерство
настолько, насколько вы сами захотите. Классные инструменты у вас уже есть,
осталось лишь стать классным программистом.
Джефф Дантеманн
Моему благодетелю, Иисусу из Назарета.
Ты подарил мне то, чего я не заслужил бы и за тысячу жизней.
Дон Тейлор
Дину Беннету (Dean Bennett) и Рэнди Шаферу
(Randy Schafer), хорошим друзьям и коллегам.
Джим Мишель
Моей дорогой жене Джоси и прекрасным детям,
Дэвиду и Диане, за их поддержку. Маме и папе - за любовь и непрестанные
усилия, благодаря которым я стал таким, какой есть.
Джон Пенман
Тиму, брату и другу.
Теренс Гоггин
Моим мальчикам, Сэму и Арту, и их маме
Тане. Не могу представить лучшей побудительной причины для продолжения
работы.
Джон Шемитц
Благодарности
Благодарю Мардж Макрей (Marge McRae), друга
и отличного соседа, за первое чтение рукописи и за предложенную идею с
персонажем Мардж Рейнольдс (которая, кстати, не имеет ни малейшего отношения
к настоящей Мардж).
Дон Тейлор
Выпуск такой книги требует неимоверных усилий
- особенно когда в ее написании участвуют столько авторов (причем один
из них нередко запаздывает со сдачей материалов). Дениза Константин (Denise
Constantine), наш редактор проекта, проделала огромную работу. Ей удалось
направить проект по правильному пути и разобраться с бесчисленными мелочами,
мешающими выпуску книги. Спасибо Денизе - она заставила-таки меня сдавать
работу в срок.
Джим Мишель
Хочу поблагодарить Джеффа Дантеманна (Jeff
Duntemann) за то, что он вывел мою писательскую карьеру на орбиту успеха.
Джон Пенман
Хочу поблагодарить мою жену Таню, которая
давно примирилась с выпавшим на ее долю тяжким жребием.
Джон Шемитц
Введение
Давным-давно, во второй половине 80-х, язык
программирования Паскаль стал мишенью для постоянных нападок со стороны
адептов C и (позднее) C++. Они так часто твердили: «Паскаль - игрушечный
язык», что пресса поверила им на слово.
Большинство этих людей либо вообще ничего
не знали о Паскале, либо прошли начальные курсы под руководством других
«попугаев», для которых переносимость кода стала высшим достижением во
всей компьютерной науке. Так что в учебных заведениях обычно преподавался
выхолощенный Паскаль, пригодный разве что для перебора элементов массива
или работы с командной строкой. На самом деле C обладает ничуть не большей
переносимостью, чем Паскаль, но…, впрочем, довольно - все эти разговоры
попросту смешны, поскольку переносимость была и остается мифом. А ну-ка,
вы, знатоки C: кто возьмется написать на C полностью самостоятельную, не
пользующуюся никакими библиотеками программу, которая помещает текстовый
курсор в точку с координатами 0,0 в любой реализации C на любой
платформе? Теперь понятно, что я имел в виду? No es posible. Все
споры о переносимости так же бессмысленны, как и дискуссии по поводу происхождения
НЛО.
Разумнее оценивать язык по тому, что на
нем можно сделать, - и тому, насколько эффективным он делает труд программиста.
Было время, когда C++ обладал некоторыми преимуществами. Но потом фирма
Borland взялась за Паскаль и добавила в него все самое лучшее из C++. В
«игрушечном языке» появились преобразования типов, указатели, объекты,
встроенный ассемблер и средства для работы с Windows. Те из нас, кто продолжал
работать с Паскалем, немедленно ухватились за эти новые возможности. Прошло
совсем немного времени, и вокруг появилась масса чрезвычайно мощных приложений,
написанных на Borland Pascal.
Все напрасно. Фанаты C++ фыркнули и отвернулись,
а «попугаи» из прессы упорно продолжали именовать Паскаль «игрушечным языком».
Дела обстояли настолько скверно, что многие фирмы-разработчики боялись
признаться, что их приложения написаны на Паскале.
И тогда фирма Borland поступила совершенно
правильно - она просто отказалась от «нехорошего слова из семи букв». Появилась
среда Delphi. Это был уже не просто язык, а мощная и производительная «машина
для построения программ». Delphi как продукт поражает своей глубиной
- можно месяцами блуждать по справочной системе и не встретить ни одной
знакомой темы.
Потенциальные возможности Delphi были оценены
не сразу. Только сейчас мы начинаем понимать, как много можно сделать в
этой среде. Эта книга была задумана как сборник приемов программирования
на Delphi для профессионалов - того, что даже на C++ сделать не так уж
просто, а на «игрушечном языке» вообще невозможно. Раз и навсегда доказано,
что Delphi справляется с созданием профессиональных Windows-приложений
ничуть не хуже, чем любой другой язык.
Введение
Лишившись «нехорошего слова из семи букв»,
пресса с увлечением взялась за новую байку - будто на Delphi любое приложение
делается в пять-шесть раз быстрее, чем на C++. Мне уже приходилось слышать
о фирмах, где менеджеры запрещают работать на C++ и заменяют его на Delphi
и Visual Basic.
Не обращайте внимания на дураков. Справедливость
в конце концов восторжествует.
Джефф Дантеманн KG7JF
Скоттдейл, Аризона
|