Главная » Delphi » Delphi: что почем

0

Нам часто  задают  вопросы: “В чем главные достоинства Delphi?”  или “Чем Delphi превосходит пакет  Х?”. За прошедшие годы  мы выработали два варианта ответов на эти  вопросы —  короткий и  длинный. Первый из  них  заключается в одном  слове — “продуктивность”. Просто на сегодняшний день работа в Delphi  является самым  про дуктивным методом  создания приложений для Windows.  Безусловно, существуют  ка тегории лиц (начальство и возможные клиенты), для которых такого  ответа будет не достаточно. В этом случае мы даем длинный ответ, где подробно описывается сочета ние особенностей среды  Delphi, делающее ее столь  продуктивной. Мы полагаем, что общая продуктивность любых инструментов создания программного обеспечения определяется следующими пятью важнейшими аспектами:

•   качеством визуальной среды разработки;

•    скоростью работы компилятора и быстродействием откомпилированных про

грамм;•   мощностью языка программирования и его сложностью;

•   гибкостью и масштабируемостью используемой архитектуры баз данных;

•   наличием поддерживаемых средой разработки шаблонов проектирования и использования.

Безусловно, существует  еще  немало  важных  факторов —  например, вопросы ус тановки, документация, поддержка сторонних производителей и т.д. Тем не менее, мы пришли к выводу, что и этой  упрощенной модели  вполне достаточно для объяс нения, почему имеет  смысл остановить свой выбор  на Delphi. Некоторые из упомя нутых  выше  категорий связаны с определенной субъективностью оценки. Как  же можно  использовать их для оценки продуктивности определенного инструмента разработки? Предлагаемая схема проста. Оцените каждый  из пяти  показателей ана лизируемых пакетов по пятибалльной шкале и нанесите соответствующие точки  на оси графика, представленного на рис. 1.1. Соедините точки  для каждого  из пакетов линиями —  получится несколько пятиугольников. Чем  больше  площадь  получивше гося пятиугольника, тем выше продуктивность данного инструмента разработки.

Рис. 1.1. Схема построения диаграмм для оцен ки продуктивности инструментов разработки приложенийМы не пытаемся с помощью предложенной формулы навязать свое заранее подготовленное решение —  выбор  остается за  вами!  Мы просто предлагаем под робнее остановиться на каждом  из аспектов вышеприведенной схемы  и оценить соответствующие показатели Delphi  в сравнении с другими инструментами раз работки приложений для Windows.

Качество визуальной среды разработки

Обычно,  визуальная среда  разработки состоит из  трех  взаимосвязанных компо нентов: редактора, отладчика и конструктора форм. В любом  из современных инст рументов ускоренной разработки приложений (Rapid Application Development — RAD) эти три  компонента должны  гармонично взаимодействовать друг с другом. При  работе в конструкторе форм  Delphi неявно генерирует программный код тех компонентов, которые размещаются или обрабатываются в формах. В окне  редактора в код автома тически созданной программы можно  внести необходимые дополнения, определяю щие  специфическое  поведение данного приложения.  Здесь  же,  в  окне  редактора, можно отладить код, внося точки  останова, точки  просмотра (watches) и т.д.

Редактор Delphi  обычно используется параллельно с другими инструментами. Пожа луй, наиболее мощным  из них можно  считать технологию CodeInsight (интерактивную подсказку), позволяющую существенно уменьшить  объем кода, вводимого с клавиатуры. Этот  инструмент построен на использовании информации компилятора, а не библио теки типов  (как в Visual Basic), поэтому  область  его применения значительно шире.  Хо тя  редактор Delphi поддерживает достаточный набор  параметров настройки, следует отметить, что возможности настройки редактора пакета Visual Studio несколько шире.

Современная версия отладчика Delphi поддерживает весь набор  функциональных возможностей, присущих  отладчику  пакета  Visual Studio.  К вновь  добавленным функ циям  относятся средства удаленной отладки, подключения процессов, отладки  паке тов и библиотек DLL, средства контроля значений автоматических локальных пере менных  и поддержки окна  CPU. Кроме  того,  Delphi предоставляет удобные  средства управления графической средой отладки. Они позволяют в ходе отладки размещать и объединять окна в любом удобном месте,  а также  запоминать сведения о полученной конфигурации в виде поименованной группы  параметров настройки рабочего стола. Одна из чрезвычайно удобных функций отладчиков, которая широко распространена в среде интерпретаторов (таких как Visual Basic или Java), заключается в возможности изменять программный код  и,  следовательно, поведение приложения  непосредст венно  в процессе его  отладки. К сожалению, в среде  компиляторов реализация по добных функций связана с очень большими трудностями, поэтому в нынешней версии она отсутствует.

Конструктор форм  является обязательной принадлежностью всех  инструментов RAD, включая  Delphi, Visual Basic, С++ Builder и PowerBuilder. Классический вариант среды  разработки (например Visual C++ и Borland C++) обычно содержит редакторы диалогов, однако  эти инструменты менее  удобны для интеграции в рабочий поток создания  приложения,  чем   конструкторы  форм.   Рассмотрев  представленную на рис. 1.1 диаграмму,  можно  сделать вывод,  что отсутствие конструктора форм  оказыва ет заметное негативное влияние на общие  показатели продуктивности конкретного инструмента разработки приложений.

В последние годы Delphi и Visual Basic оказались втянутыми в постоянную борьбу за первенство в разнообразии возможностей их конструкторов форм.  Каждая  выпу щенная версия этих  продуктов просто изумляет  своими  новыми функциональными возможностями. Например, в конструкторе форм  Delphi  используется полностью объектно ориентированная  схема  построения. В  результате  внесенные  в  базовые классы  изменения немедленно распространяются и на все  классы,  производные от них.  Этот  механизм  использован  для  реализации  функции  наследования  визуальныхформ (Visual  Form  Inheritance —  VFI). VFI позволяет динамически порождать новые формы из любых  других форм  проекта или  галереи форм. Кроме  того,  внесенные в базовую  форму  изменения будут немедленно распространены и унаследованы всеми ее формами потомками. Более  подробная информация по этой  теме  приведена в гла ве 3, “Приключения сообщения”.

Скорость работы компилятора

и быстродействие откомпилированных программ

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

Вероятно, наиболее известное преимущество используемого в Delphi компилятора языка  Pascal состоит в его быстродействии. Фактически это — самый  быстрый компи лятор языка  высокого уровня  из всех,  существующих  в среде  Windows.  В последние годы  отмечаются заметные улучшения  в работе компиляторов языка  C++, который традиционно считался самым  медленным в смысле  скорости компилирования. Успе хи были  достигнуты за счет  пошагового связывания и различных стратегий кэширо вания, используемых, в частности, в пакетах Visual C++ и C++ Builder. Тем не менее, даже эти  улучшенные  компиляторы языка  C++ работают в несколько раз  медленнее, чем компилятор Delphi.

Означает ли столь высокая скорость компилирования обязательное отставание в эффективности  создаваемых программ? Безусловно,  ответом  на  этот   вопрос  будет “Нет”.  Создаваемый в Delphi  объектный код имеет  те же показатели эффективности, что и объектный код, созданный транслятором C++ Builder. Отсюда  можно  сделать  вы вод, что качество создаваемых программ соответствует уровню,  обеспечиваемому очень хорошим компилятором языка  C++. По  последним достоверным оценкам производи тельности, программы, созданные компилятором Visual C++, действительно имеют  са мые высокие показатели скорости выполнения и размеров кода. В основном, это дости гается  за счет очень  хорошей оптимизации. Хотя эти небольшие преимущества и неза метны  во  время  разработки обычных приложений, они  могут  иметь  очень  большое значение при создании программ, выполняющих значительный объем вычислений.

С точки  зрения используемой технологии компилирования язык  Visual Basic уни кален. В ходе разработки приложения Visual Basic (VB) используется в интерпрети рующем  режиме, обеспечивая достаточную скорость работы. При  необходимости распространения созданного приложения можно  воспользоваться компилятором VB, результатом работы которого является исполняемый файл (*.EXE). Этот компилятор весьма  медлителен, и его показатели сильно  отстают от возможностей инструментовC++ и Delphi. Во время  создания данной книги  Microsoft подготовила новое  поколение компиляторов, и Visual Basic.NET обещает занять  достойное место в этом ряду.

Еще одним  интересным вариантом является язык  Java. Лучшие  инструменты этой языковой среды  (например, JBuilder и Visual J++) демонстрируют время  компиляции, сравнимое с Delphi. Но  эффективность создаваемых программ чаще  всего  оставляет желать  лучшего  по той  простой причине, что  язык  Java является интерпретируемым языком. Хотя  развитие возможностей инструментов Java происходит быстрыми тем пами,  скорость выполнения  создаваемых на  нем  программ в  большинстве случаев сильно  уступает Delphi  и С++.

Мощность языка программирования и его сложность

Мощность и сложность языка  в значительной степени определяются точкой зре ния  собеседника, поэтому  эти  категории часто  служат поводом для проведения мно гочисленных перепалок и ожесточенных дискуссий  в группах новостей и списках  рас сылки.  То, что совсем  просто для одного  человека, может  оказаться весьма  сложным для другого.  В свою очередь то, что  воспринимается одним  человеком как ограниче ние, может расцениваться другим как самое изящное решение. Поэтому  приведенные ниже  рассуждения являются изложением точки  зрения авторов и отражают их лич ный опыт и предпочтения.

Наиболее мощным  из всех языков является ассемблер. Едва ли существует  что то такое, чего нельзя выполнить с его помощью. Однако создание даже самого  простого приложения Windows  на ассемблере является весьма  сложным заданием, а получен ный результат почти наверняка будет содержать ошибки. Кроме  того,  чаще всего практически невозможно обеспечить сопровождение программ на ассемблере  груп пой  разработчиков на  сколько  нибудь  продолжительный период времени. По  мере того как код программ передается от одного  исполнителя к другому, выбранные про ектные решения и методы  становятся все более  туманными, и так происходит до тех пор,  пока  код программы не  приобретает совершенно непонятный вид,  больше  на поминающий священные тексты на санскрите, а не обычную  компьютерную про грамму.  Следовательно, в рассматриваемой категории ассемблеру  следует  поставить очень   низкую  оценку,  несмотря на  всю  его  мощь.  Главная   причина —   чрезмерная сложность использования этого  языка  для достижения тех целей, которые стоят  пе ред большинством разработчиков приложений.

С++ также  является очень  мощным  языком. С помощью его действительно эффек тивных инструментов, подобных макросам препроцессора,  шаблонам, перегрузке опе раторов, можно даже создать собственный язык в пределах С++. Если предоставленный разработчикам исключительно широкий набор  функциональных возможностей будет использоваться продуманно, то это позволит создавать очень  ясные  и простые в сопро вождении программы. Однако проблема состоит в том, что большинство разработчиков не может  противостоять искушению чрезмерного и неоправданного использования су ществующих  возможностей, а это  часто  приводит к появлению громоздких программ. Фактически на С++ писать  плохие программы гораздо легче,  чем хорошие, поскольку сам язык  не ориентирует разработчика на использование хороших приемов програм мирования, оставляя такие вопросы полностью на его усмотрение.Существует два языка, которые, по нашему мнению, очень  схожи  в том,  что в них достигнут  оптимальный баланс между сложностью и мощностью. Это — Object  Pascal и Java. В обоих  языках  использован подход,  предусматривающий ограничение доступ ных функциональных возможностей, что позволяет разработчикам перенести основ ные усилия на логику создаваемых приложений. Например, в обоих  языках  отсутству ет “очень  объектно ориентированная”, но способствующая различным злоупотребле ниям концепция множественного наследования. В обоих  случаях она заменяется реализацией в классах нескольких различных интерфейсов. Оба языка  исключают изящную,  но в то же время  весьма  опасную  функцию  перегрузки операторов. Кроме того,  в обоих  случаях исходные файлы рассматриваются как основные объекты язы ка, а не как сырье  для компоновщика. Более  того,  в обоих  языках  используются такие мощнейшие возможности, как обработка исключений, информация о типах  времени выполнения (RTTI — Runtime Type Information) и строковые ресурсы.  Возможно, это совпадение, но оба языка  были  созданы  не огромным коллективом разработчиков, а одним   человеком  или  небольшей  группой   внутри   единой организации,  имеющей вполне определенное представление о том,  что  именно должен  представлять собой создаваемый язык.

Изначально Visual Basic (простейший) был  создан  как язык  достаточно простой, чтобы  начинающие программисты могли быстро его освоить. Но по мере добавления в него  новых  возможностей, являвшихся ответом на неотложные требования време ни,  этот  язык  становился все более  сложным. Несмотря на все усилия,  прилагаемые для того,  чтобы  позволить разработчику избежать обременительных подробностей программирования, язык  Visual Basic по прежнему содержит ряд  препятствий, кото рые  приходится преодолевать при  создании достаточно сложных приложений. Ны нешняя версия Visual Basic.NET  от Microsoft, являющаяся следующим  поколением это го продукта, претерпела в данном направлении существенные изменения (в основном за счет совместимости с прежними версиями).

Гибкость и масштабируемость архитектуры баз данных

Поскольку в компании Borland отсутствует собственная линия продуктов управле ния базами  данных, в состав  Delphi входит  инструментарий, который, на наш взгляд, обеспечивает самую  гибкую  архитектуру поддержки  баз  данных, по  сравнению со всеми  остальными представленными на рынке. Безусловно, dbExpress очень  эффек тивен  (хоть  и за счет дополнительных функциональных возможностей), но выбор драйверов довольно ограничен. Механизм BDE успешно  работает и обеспечивает достаточную для большинства типов  приложений производительность при взаимо действии с широким диапазоном баз  данных, хотя  Borland постепенно и сокращает этот  диапазон. Кроме  того,  встроенные компоненты ADO обеспечивают эффектив ные  средства связи  с базами  через ADO или ODBC. Если при  каких либо обстоятель ствах  InterBase не справится с задачей, то можно  воспользоваться его  базовым ком понентом —  IBExpress, который обладает значительно большей эффективностью и способностью установить связь  практически с любым  сервером баз данных.  Если ни один  из названных способов не позволяет обеспечить доступ к данным, то остается возможность самостоятельно написать собственный класс доступа к данным, исполь зующий абстрактную архитектуру структуры  данных, либо  приобрести готовое реше ние у стороннего производителя. При  этом DataCLX облегчит доступ к любому из та ких источников данных, несмотря на то, что они могут быть разделены на несколько уровней логически или физически.

Следует  отметить, что  инструменты  разработки Microsoft логически сфокусирова ны на поддержке собственных баз данных  Microsoft и предоставляют соответствующие решения для доступа к их данным, включая  средства ODBC, OLE DB и т.д.

Поддержка средой разработки шаблонов проектирования и использования

Это “чудодейственное снадобье”  и “святой  грааль” всех технологий разработки программного обеспечения, похоже, совершенно игнорируется  другими  инструмен тами  разработчика. Хотя  все элементы Delphi  необходимы и важны,  самым  сущест венным из  них  является все таки  библиотека VCL. Возможность манипулирования компонентами непосредственно в процессе проектирования, средства разработки собственных компонентов, наследующих  элементы своего  поведения от других  ком понентов с помощью различных объектно ориентированных  технологий, —  все  это является важнейшими условиями высокого уровня  продуктивности, свойственного среде Delphi. При  разработке компонентов VCL всегда можно  выбрать подходящую  к определенному  случаю  технологию объектно ориентированного проектирования из числа  предоставляемых. Другие  среды  разработки, поддерживающие работу  с компо нентами, часто либо слишком жесткие, либо слишком сложные.

Например, элементы управления ActiveX предоставляют практически те же самые возможности, что и компоненты VCL, однако  создать  новый класс, являющийся про изводным от элемента управления ActiveX, нельзя. Традиционные среды  разработки, обеспечивающие работу  с классами  (например OWL  или  MFC),  обычно требуют  от разработчика глубокого  знания их внутренних механизмов. Только  в этом  случае ра бота в их среде может  быть достаточно продуктивной. Всем им не хватает определен ных  инструментов поддержки функций проектирования. В настоящий момент Microsoft выпустила новую общую библиотеку .NET (.NET  common library), что,  безус ловно, выдвинуло ее на передний план в области компонент ориентированной разра ботки.  Кроме  того,  технология .NET оказалась совместима даже с рядом  их прежних инструментальных средств, включая  C#, Visual C++ и Visual Basic.

Источник: Тейксейра, Стив, Пачеко, Ксавье.   Borland Delphi 6. Руководство разработчика. : Пер.  с англ. — М. : Издательский дом “Вильямс”, 2002. —  1120 с. : ил. — Парал. тит. англ.

По теме:

  • Комментарии