Что ни говори, а название - важная часть успеха. Вряд ли руководство компании Borland знакомо с творчеством советских мультипликаторов (помните, как капитан Врунгель из популярного мультсериала выбирал название для корабля), но то, что с выбором имени для своего продукта они не промахнулись - это факт. Delphi античный был религиозным и культурным центром древнегреческой цивилизации. Delphi нынешний безусловно является центром другой цивилизации - современной программистской.
Третья версия весьма популярного среди местных разработчиков средства быстрого создания приложений Delphi внешне мало отличается от своей предшественницы. Инструментальные кнопки в стиле Windows98 да поле, расположившееся по левому краю окна редактирования, пожалуй, все, что сразу бросается в глаза. Однако по мере того, как начинаешь знакомиться с изменениями, произошедшими в компиляторе, среде программирования и компонентах - убеждаешься, что компания Borland по праву считается законодателем мод на рынке инструментальных средств.
Новый редактор
Очень натурально представляю себе сцену из будущего: убеленный сединами мэтр повествует собравшимся вокруг молодым безусым программистам о тех далеких временах, когда текст программы еще надо было набирать на клавиатуре, а они слушают и не могут поверить, шутит дед или нет. Уже все привыкли, что внешний вид приложения создается исключительно с помощью мыши, похоже, теперь Borland решила внести коррективы и в процесс набора исходных текстов. Во-первых, в редакторе появились шаблоны, т.е. блоки кода, которые можно вставить в текст, набрав соответствующий идентификатор и нажав комбинацию клавиш Ctrl-J. Если просто нажать вышеупомянутые клавиши, находясь в окне редактирования, то появится выпадающий список с названиями всех доступных шаблонов, из которого можно выбрать необходимый. Delphi поставляется с несколькими десятками уже заданных шаблонов, но при желании их легко изменить или добавить новые. Во-вторых, еще одно нововведение коснулось ввода идентификаторов полей объекта. Теперь стоит набрать название объекта, поставить точку и немного подождать (нетерпеливые пусть жмут Ctrl-J), как на экране появится список доступных полей и методов этого объекта, из которого остается только выбрать подходящий пункт. Еще одна новинка в редакторе - это уже упоминавшееся выше поле (gutter) слева от исходного текста. Здесь отображаются графические значки: закладки, точки прерывания, указатель на следующую выполняемую строку (при отладке), а также, после компиляции, здесь помечаются строки, для которых был сгенерирован код.
Пожалуй, что еще стоит упомянуть - это очень удобное использование хинтов (не знаю, как будет по-русски, всплывающая подсказка что ли?). При наборе параметров функции или процедуры во всплывающем окошке появляется список всех параметров и их типов. Очень удобно. Теперь при вызове редкой функции не надо бегать по справке или исходным кодам. И, наконец, стоит при отладке задержать указатель мыши над идентификатором переменной, как всплывет окошко с ее значением. Во истину: все гениальное просто! Мелочи, а способны сэкономить столько труда.
Базы данных
Шестнадцать из двадцати программистов, пишущих на Delphi, так или иначе связаны с базами данных. Компания Borland уже однажды совершила революцию, позволив на каком-нибудь 386-м с 8 мегабайтами ОЗУ создавать полноценные клиент/серверные приложения, и, похоже, не собирается останавливаться на достигнутом. В Delphi3 добавлены компоненты, реализующие новую концепцию в построении систем обработки данных - т.н. распределенные множества данных (distributed datasets).
Коротко об идее. Существует две модели (по крайней мере, до этого существовало две модели) построения сетевых систем обработки данных: с выделенным файл-сервером и клиент/сервер. В первом случае файлы с данными располагаются на одном компьютере (файл-сервере). Приложения-клиенты обращаются к этим файлам, считывая данные, организуя их обработку и представление пользователю, а также обновление. Недостатки этой схемы очевидны: по сети перегоняются большие объемы информации, каждый клиент должен содержать всю функциональную часть для работы с файлами данных, тяжесть разрешения конфликтов при одновременной работе нескольких пользователей с одними и теми же таблицами ложится на приложение-клиент. Вторая схема - клиент/сервер - решает большинство вышеупомянутых трудностей. В этом случае данные хранятся на сервере, к которому клиенты обращаются с запросами. Запросы могут извлекать данные из базы, добавлять, удалять или модифицировать их. Сервер берет на себя все заботы по физическому хранению данных, контролем за их целостностью, установкой сетевых блокировок и разрешением сетевых же конфликтов. Кроме этого значительно снижается сетевой трафик, так как от клиентов к серверу передаются только короткие запросы, а сервер, в свою очередь, передает клиентам только ту информацию, которая им необходима. Однако при построении сложных систем управления данными всплывают два недостатка стандартной архитектуры клиент/сервер. Клиенты управляют сервером, посылая запросы, написанные на специальном языке SQL (structured query language). Этот язык обладает мощными возможностями по извлечению данных, их добавлению и модификации, однако его возможности по их обработке весьма бедны. В результате чего на практике приходится извлекать данные и пересылать их приложению-клиенту, которое производит их обработку. Размеры и сложность клиента растут, требования к компьютеру ведут себя аналогично. Выход из положения - дать возможность разработчикам самостоятельно создать приложение-сервер, который будет обрабатывать информацию. Клиенты же будут служить только для ее отображения и внесения изменений. Собственно, такое решение и предложено в рамках анонсированной в Delphi3 модели распределенной обработки данных. Поставляемые компоненты есть суть каркас для построения своего сервера, к которому будут подключаться "тонкие" клиенты.
Packages
Третье и последнее, о чем я расскажу - это packages (package: пакет, сверток). Основу визуального программирования составляют т.н. компоненты - готовые блоки, которые программист использует, как строители используют готовые модули при возведении крупнопанельных домов или домохозяйки - кубики куриного бульона при приготовлении супов. В Visual Basic компоненты находятся в отдельных файлах с расширением VBX. Первая версия Delphi (кстати, имевшая кодовое название Visual Basic Killer) собирала все компоненты совместно с приложением в один EXE файл. Тогда было гораздо удобнее иметь дело с единственной программой, чем с программой, DLL-интерпретатором и кучей VBX файлов. Однако, по мере того, как библиотеки компонент разрастались, выяснилась и обратная сторона медали применяемой в Delphi схемы. Если, скажем, софтверная компания поставляет несколько программ одному покупателю, каждая из которых несет довесок в несколько мегабайт компонент, то винчестеру последнего приходится туго, а если к тому же они и загружаются одновременно, каждая со своей копией компонент соответственно, то туго уже приходится оперативной памяти. Для решения этой проблемы в Delphi3 группы компонент можно объединять в отдельные библиотеки. При этом выигрыш получают даже те разработчики, которые создают одну единственную программу, поскольку само Delphi использует общую с этой программой библиотеку стандартных компонент, что высвобождает больше мегабайта оперативной памяти.
Что еще
Размеры газетной статьи явно не позволяют подробно остановиться на каждом нововведении. Вот, что осталось без подробного рассмотрения: расширения языка для создания COM объектов, набор компонент для разработки Internet приложений (полагаю и Intranet то же ), многочисленные мелкие улучшения в среде программирования и отладчике, новые типы данных, новые классы, компоненты, процедуры и функции, assertions (фанатам C++ на заметку) и многое-многое другое. В общем, как говаривал классик: никто не обнимет необъятное.
P.S.: Изначальный вариант статьи весьма сильно отличался от того, что вы держите в руках, поэтому название получилось как бы ни при чем. Для любознательных: слоновая кость (англ. Ivory) - кодовое название проекта Delphi3 на стадии его разработки.
Андрей КИРЕЕВ
[email protected]
Горячие темы