Delphi що почім

Нам часто задають питання: "У чому головні переваги Delphi?" Або "Чим Delphi перевершує пакет Х?". За минулі роки ми виробили два варіанти відповідей на ці питання - короткий і довгий. Перший з них полягає в одному слові - "продуктивність". Просто на сьогоднішній день робота в Delphi є самим про дуктівним методом створення додатків для Windows. Безумовно, існують ка Тегор осіб (начальство і можливі клієнти), для яких такої відповіді буде недостатньо. В цьому випадку ми даємо довгий відповідь, де детально описується сочета ня особливостей середовища Delphi, що робить її настільки продуктивною. Ми вважаємо, що загальна продуктивність будь-яких інструментів створення програмного забезпечення визначається наступними п'ятьма найважливішими аспектами:

• якістю візуального середовища розробки;

• швидкістю роботи компілятора і швидкодією відкомпільованих про

грам; • потужністю мови програмування і його складністю;

• гнучкістю і масштабованість використовуваної архітектури баз даних;

• наявністю підтримуваних середовищем розробки шаблонів проектування і використання.

Мал. 1.1.Схема побудови діаграм для оціню ки продуктивності інструментів розробки додатків Ми не намагаємося за допомогою запропонованої формули нав'язати своє заздалегідь підготовлене рішення - вибір залишається за вами! Ми просто пропонуємо під робнее зупинитися на кожному з аспектів вищенаведеної схеми і оцінити відповідні показники Delphi в порівнянні з іншими інструментами раз работки додатків для Windows.

Якість візуальної середовища розробки

Сучасна версія відладчика Delphi підтримує весь набір функціональних можливостей, властивих отладчику пакета Visual Studio. До знову доданим функ циям відносяться засоби вилученого налагодження, підключення процесів, налагодження пакетів і бібліотек DLL, засоби контролю значень автоматичних локальних пере сних і підтримки вікна CPU. Крім того, Delphi надає зручні засоби управління графічної середовищем налагодження. Вони дозволяють в ході налагодження розміщувати і об'єднувати вікна в будь-якому зручному місці, а також запам'ятовувати відомості про отриманий конфігурації у вигляді пойменованої групи параметрів настройки робочого столу. Одна з надзвичайно зручних функцій отладчиков, яка широко поширена в середовищі інтерпретаторів (таких як Visual Basic або Java), полягає в можливості змінювати програмний код і, отже, поведінка додатки непосредст венно в процесі його налагодження. На жаль, в середовищі компіляторів реалізація по добних функцій пов'язана з дуже великими труднощами, тому в нинішній версії вона відсутня.

В останні роки 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 і С ++.

Потужність мови програмування і його складність

С ++ також є дуже потужним мовою. За допомогою його дійсно ефек тивних інструментів, подібних макросам препроцесора, шаблонами, перевантаження опе ратора, можна навіть створити власну мову в межах С ++. Якщо наданий розробникам виключно широкий набір функціональних можливостей буде використовуватися продумано, то це дозволить створювати дуже ясні і прості в опору водінні програми. Однак проблема полягає в тому, що більшість розробників не може протистояти спокусі надмірного і невиправданого використання су щества можливостей, а це часто призводить до появи громіздких програм. Фактично на С ++ писати погані програми набагато легше, ніж хороші, оскільки сам язик не орієнтує розробника на використання хороших прийомів програм мування, залишаючи такі питання повністю на його усмотреніе.Существует дві мови, які, на нашу думку, дуже схожі в тому, що в них досягнуто оптимальний баланс між складністю і потужністю. Це - 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.