Міністерство освіти та науки України

Вид материалаДокументы

Содержание


4.1 Високопродуктивний компілятор в машинний код
Подобный материал:
1   2   3   4   5   6   7

4.1 Високопродуктивний компілятор в машинний код


Компілятори мови Pascal компанії Borland [7] ніколи не примушували користувача довго чекати результатів компіляції. Виробники затверджують, що на сьогодні даний компілятор – найшвидший в світі. Компілятор, вбудований в Delphi дозволяє обробляти 120 тис. рядків початкового тексту за хвилину на машині 486/33 або близько 7 млн. – при використовуванні сучасного процесора Pentium 4/2ГГц. Він пропонує легкість розробки і швидкий час перевірки готового програмного блоку, характерного для мов четвертого покоління (4GL) і в той же час забезпечує якість коду, характерного для компілятора 3GL. Крім того, Delphi забезпечує швидку розробку без необхідності писати вставки на Сі або ручного написання коду (хоча це можливо).

В значенні проектування Delphi мало чим відрізняється від проектування в інтерпретуючому середовищі, проте після виконання компіляції ми одержуємо код, який виконується в 10-20 разів швидше, ніж теж саме, зроблене за допомогою інтерпретатора. Крім того, компілятор компілятору різниця, в Delphi компіляція проводиться безпосередньо в рідний машинний код, тоді як існують компілятори, що перетворюють програму на так званий p-код, який потім інтерпретується віртуальній p-машиною. Це не може не позначитися на фактичній швидкодії готового додатку.

Ймовірно, така висока швидкість пояснюється в першу чергу відмовою від демонстрації в процесі роботи числа скомпільованих рядків. Слід зазначити також, що завдяки опції оптимізації сегментів вдається істотно скоротити розмір виконуваного файлу. Можна запустити компілятор в режимі перевірки синтаксису. При цьому найтриваліша операція компоновки і виготовлення виконуваного файлу виконуватися не буде.

Ймовірно, та обставина, що Delphi позиціонується як засіб створення додатків, що взаємодіють з базами даних, і орієнтовано переважно на ринок інструментальних засобів клієнт/сервер, де до тепер домінують мови, що інтерпретуються, дозволило його авторам не замислюватися над створенням оптимізуючого компілятора, здатного використовувати всі достоїнства архітектури сучасних процесорів.


4.2. Могутня об'єктно-орієнтована мова

Сумісність з програмами, створеними раніше [7, 8] засобами Borland Pascal, зберігається, не дивлячись на те, що в мову внесені істотні зміни. Необхідність в деяких вдосконаленнях давно відчувалася. Найпомітніше з них – апарат виняткових ситуацій, подібний тому, що є в C++, був першим реалізований в компіляторах компанії Borland. Не секрет, що при написанні об'єктно-орієнтованих програм, активно працюючих з динамічною пам'яттю і іншими ресурсами, чималу складність представляє акуратне звільнення цих ресурсів у разі виникнення нештатних ситуацій. Особливо це актуально для середовища Windows, де число видів ресурсів досить велике, а неохайна робота з ними може швидко привести до зависання всієї системи. Передбачений в Delphi апарат виключень максимально спрощує кодування обробки нештатних ситуацій і звільнення ресурсів.

Об'єктно-орієнтований підхід в новій версії мови отримав значний розвиток. Перерахуємо основні новини.
  • введено поняття класу;
  • реалізовані методи класів, аналогічні статичним методам C++. Вони оперують не екземпляром класу, а самим класом;
  • механізм інкапсуляції багато в чому вдосконалений. Введені захищені поля і методи, які, подібно приватним, не видні ззовні, але відрізняються від них тим, що доступні з методів класа-спадкоємця;
  • введена обробка виняткових ситуацій. В Delphi це влаштовано в стилі С++. Виключення представлені у вигляді об'єктів, що містять специфічну інформацію про відповідну помилку (тип і місцезнаходження помилки). Розробник може залишити обробку помилки, що існувала за умовчанням, або написати свій власний обробник. Обробка виключень реалізована у вигляді exception-handling blocks (також ще називається protected blocks), які встановлюються ключовими словами try і end. Існують два типи таких блоків: try...except і try...finally;
  • з'явилося декілька зручних синтаксичних конструкцій, в числі яких перетворення типа об'єкту з контролем коректності (у разі невдачі ініціюється виключення) і перевірка об'єкту на приналежність класу;
  • зсилання на класи додають додатковий рівень гнучкості, так, коли ви хочете динамічно створювати об'єкти, чиї типи можуть бути відомі тільки під час виконання коду. Наприклад, зсилання на класи використовуються при формуванні користувачем документа з різного типу об'єктів, де користувач набирає потрібні об'єкти з меню або палітри. Власне, ця технологія використовувалася і при побудові Delphi;
  • введений засіб, відомий як механізм делегування. Під делегуванням розуміється те, що якийсь об'єкт може надати іншому об'єкту відповідати на деякі події. Він використовується в Delphi для спрощення програмування подійно-орієнтованих частин програм, тобто призначеного для користувача інтерфейсу і всіляких процедур, що запускаються у відповідь на маніпуляції з базою даних.

Після того, як Borland внесла перераховані зміни, вийшла могутня об'єктно-орієнтована мова, співставна по своїх можливостях з C++. Платою за нові функції стало значне підвищення вимог до професійної підготовки програміста.

Мова програмування Delphi базується на Borland Object Pascal.

Крім того, Delphi підтримує такі низькорівневі особливості, як підкласи елементів управління Windows, перекриття циклу обробки повідомлень Windows, використовування вбудованого асемблера.