Pascal, середа розробки, Delphi, статті

Важко розповісти щось нове про те, що добре відомо всім. Дійсно, навряд чи знайдеться в нашій країні програміст або просто випускник середньої школи, який не знав би (або не чув) про це мовою програмування. Основні концепції мови були розроблені в 1967-1968 р. професором Ніколаусом Віртом (Niklaus Wirth) (Біографію Вірта можна прочитати на http://cc.kzoo.edu/~k98ja01/wirth.html) І опубліковані в 1971 році
(The Programming Language Pascal Acta Informatica, 1 (Jun 1971), 35-63). Стандарт мови був розроблений їм в 1974 р. (PASCAL – User Manual and Report, ISO Pascal Standard Kathleen Jensen and Niklaus Wirth) спільно з Кетлін Йенсен (Kathleen Jensen). Паскаль досить швидко перетворився з кошти, призначеного для навчання студентів програмуванню, в інструмент, який стали використовувати для створення великих програмних проектів. Зауважимо, що ні один з наступних мов, розроблених автором (а Вірт є творцем Модулі та Оберона), не отримав такого розповсюдження. Важко сказати, з чим це пов’язано. Можливо, з тим, що мова вдало поєднує простоту з виразністю і силою. Можливо, що просто він опинився в потрібний момент на потрібному місці, оскільки на момент створення мови, що отримав своє ім’я на честь великого французького математика, в розпорядженні програмістів було вельми і вельми трохи мов високого рівня. І що найголовніше, всі вони були розроблені для вирішення конкретних прикладних задач і багато в чому були продуктом <Творчого акту », а не результатом серйозного наукової праці. Фортран, названий одним з піонерів програмування Дейкстрой (Edsger Dijkstra) інфантильним дезорганізаторів, призначався тільки для математичних розрахунків і не витримував ніякої критики з точки зору обмеження доступу до даних і відсутність підтримки структурного програмування. Про інтерпретаторі Бейсік (Тоді ще без приставки Visual) не можна було говорити без сліз. Кобол був орієнтований на вирішення економічних завдань, a PL / I - надмірно складний і належав швидше до області проблем, ніж до області рішень. І ось тут з'являється мова, на порядок відрізняється від них своєю якістю. Основне, що приваблювало до нього, - логічність, підтримка концепцій структурного і процедурного програмування, робота з динамічною пам'яттю, можливість створення своїх типів даних. Все це стало тепер настільки звичним, що важко уявити, як можна програмувати без використання цих життєво необхідних можливостей.

Сувора типізація дозволила відразу ж на порядок знизити кількість помилок, з’являються внаслідок неуважності чи банальних помилок. До речі, для бажають використовувати в своїх програмах прямий доступ до даних без всяких обмежень мова надав можливість створення записів з варіантами, які можна трактувати у відповідності зі своїми потребами. Але при цьому програміст повинен завжди явно вказувати, з яким типом даних в конкретній змінної він бажає працювати. Єдиним недоліком мови, що існували в той час, було відсутність підтримки модульності. Програміст повинен був компілювати весь проект цілком, з усіма вхідними в нього процедурами і функціями (правда, можливість підтримки викликів підпрограм із заздалегідь скомпільованих і скомпонованих бібліотек була присутня з самого початку). Але, втім, це не дивно – нагадаю, що мова-то був призначений для навчання.

Ще однією причиною, яка дозволила мови перейти в категорію бестселерів, стала підтримка розробників комерційного ПО. І тут ми не можемо пройти повз фірми Borland (нині Inprise). Розроблений нею Turbo Pascal у всіх його модифікаціях є в Росії одним з найпопулярніших продуктів. Інтегрована оболонка, яка включає в себе редактор, компілятор, компонувальник і відладчик, разом з інтерактивною довідкової системою зробили розробку програм на Паскалі справою простою і зрозумілою практично будь-якому людині. Але так було не завжди. Наприклад, на початку вісімдесятих автору довелось попрацювати з одним з перших компіляторів Паскаля на платформах DEC. В ньому спочатку потрібно було в редакторі створювати програму, потім однопрохідний компілятор видавав код на асемблері, далі доводилося транслювати його в об’єктний код, компонувати з системними бібліотеками і тільки після цього запускати програму. Пошук помилок (без вбудованого відладчика, який зараз просто показує вам рядок, де сталася помилка) був справою, що вимагає терпіння, і, найголовніше, процесом вельми тривалим.

Крім створення інтегрованої оболонки, Borland ввів в Pascal підтримку модульного програмування, а починаючи з версії 5, і підтримку об’єктно-орієнтованого програмування.

В даний час діють три стандарти мови. Перший з них – нерасшіренной Паскаль (unextended Pascal) був розроблений в 1983 році (Дивіться стандарти ANSI / IEEE 770Х3 97-1993 та ISO 7185:1983. Стандарти ISO доступні за адресою http://www.iso.ch/welcome.html) І практично повністю збігається з описом мови в нотації Йенсен-Вірта. Другий – Extended Pascal – містить розширення, що стосуються модульного програмування (роздільна компіляція модулів, імпорт-експорт підпрограм, інтерфейсна частина і реалізація), і доповнений рядом процедур і функцій (прямий доступ до файлів, робота з рядками і т д.) (Дивіться стандарти ANSI / IEEE 770Х3.160-1989 і ISO / IEC 10206:1991). Останній – об’єктний Паскаль (Object-Oriented Extensions to Pascal), на відміну від перших двох, формально не затверджений, але оформлений у вигляді звіту (ANSI Technical Report) в 1993 р. (Дивіться ANSI/X3-TR-13-1994) Об’єктний Паскаль підтримує класи, що мають властивості і методами, успадкування класів, перевизначення методів у нащадків (поліморфізм) і ряд інших атрибутів об’єктно-орієнтованого програмування.

Delphi


У Росії Borland Delphi з’являється в кінці 1993 р. і відразу ж завойовує широку популярність. Нові версії виходять практично щороку. У них реалізуються всі нові майстри, компоненти і технології програмування.

Дійсно, процес розробки в Delphi гранично спрощений. У першу чергу це відноситься до створення інтерфейсу, на який іде 80% часу розробки програми. Ви просто ставите потрібні компоненти на поверхню Windows-вікна (в Delphi воно називається формою) і налаштовуєте їх властивості з допомогою спеціального інструменту (Object Inspector). З його допомогою можна пов’язати події цих компонентів (натискання на кнопку, вибір мишею елемента в списку і т.д.) з кодом його обробки – і ось простий додаток готово. Причому розробник отримує в своє розпорядження потужні засоби налагодження (аж до покрокового виконання команд процесора), зручну контекстну довідкову систему (У тому числі і по Microsoft API), засоби колективної роботи над проектом, всього просто не перелічити. Ви можете створювати компоненти ActiveX без використання Microsoft IDL, розширювати можливості web-сервера (скрипти на стороні сервера), практично нічого не знаючи про HTML, XML або ASP. Можна створювати розподілені додатки на базі СОМ і CORBA, Інтернет-та intranet-додатки, використовуючи для доступу до даних Borland DataBase Engine, ODBC-драйвери або Microsoft ADO. Що з’явилася, починаючи з Delphi 3, підтримка багатоланкової технології (multi-tiered) доступу до даних дозволяє створювати масштабовані додатки (відносно слабко залежать від сервера БД) за рахунок перенесення методів обробки інформації (бізнес-правил) на середню ланку.

Як уже говорилося раніше, в Delphi використовується мова Object Pascal, який постійно розширюється і доповнюється Borland. Мова повною мірою підтримує всі вимоги, пропоновані до об’єктно-орієнтованого мови програмування. Як і належить строго універсальна мова, класи підтримують тільки просте спадкування, але зате інтерфейси можуть мати відразу кілька предків. До числа особливостей мови слід віднести підтримку обробки виняткових ситуацій (Exceptions), а також перевантаження методів і підпрограм (overload) в стилі C + +. До числу вдалих, на погляд автора, відноситься також підтримка довгих рядків у форматі WideChar і AnsiChar. Останній тип (AnsiStrmg) дозволяє використовувати всі принади динамічного розміщення інформації в пам’яті без всяких турбот про її виділення і збірці сміття Delphi робить це автоматично. Для шанувальників вільного стилю програмування є відкриті масиви, варіанти і варіантні масиви, що дозволяють розміщувати в пам’яті все, що душі завгодно і змішувати типи даних.

Ви можете створювати свої власні компоненти, імпортувати ОСГ-компоненти, створювати <шаблони> проектів і <майстрів », що створюють <Заготовки> проектів. Мало того, Delphi надає розробникові інтерфейс для зв’язку ваших додатків (або зовнішніх програм) з інтегрованою оболонкою Delphi (IDE).

Таким чином, ви можете використовувати Delphi для створення як найпростіших додатків, на розробку яких потрібно 2-3 години, так і серйозних корпоративних проектів, призначених для роботи десятків і сотень користувачів. Причому для цього можна використовувати самі останні віяння в світі комп’ютерних технологій з мінімальними витратами часу і сил.

Ну, і одна з самих останніх новин від Inprise обіцяє, що в найближчому майбутньому ви зможете переносити програми, розроблені в Delphi, на платформу Linux. Більш детальну інформацію про Delphi можна отримати на сайтах
www.inprise.com і www.inprise.ru. Існує велика кількість сайтів, присвячених Delphi, наприклад <Королівство Delphi> –
delphi.vitpc.com, Torry”s Delphi Pages – www.torry.ru. Останній містить велику кількість посилань на ресурси, пов’язані з Delphi. Ну а якщо ви вже давно знайомі з цим продуктом, то на сайті www.brainbench.com можна безкоштовно протестуватися в якості програміста Delphi 3 і отримати поштою сертифікат.
Олександр Олександрівський, adda@chat.ru
Стаття з журналу BYTE / Росія, березень 2000



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

Лістинг. Object Раsсаl

Program BYTE_Example;               // Oject Pascal, Delphi 5 {$ APPTYPE CONSOLE} / / Прагма, що робить додаток консольним
uses SysUtils, Classes; / / Використовувані зовні модулі
type ТМуArray = class (TObject) / / Клас – динамічний масив
private FArray: array of integer; / / Поле для зберігання даних FPos: integer; / / Лічильник введених елементів
public function GetLastNumber: integer; / / номер останнього елемента function GetElement (Poz: integer): integer; / / Елемент за номером procedure AddElement (Value: integer); / / Додавання в кінець масиву constructor create; / / Конструктор destructor Destroy; override; / / Деструктор
end;
const delta = 100; / / Приріст динамічного масиву
procedure TMyArray.AddElenient(Value: integer);
begin if FPos> High (FArray) then / / Потрібно збільшити масив? SetLength (FArray, Length (FArray) + delta); / / Збільшимо на Delta FArray [FPos]: = Value; / / Додаємо елемент
Inc(FPos);
end;
constructor ТМуArray.create; / / Конструктор динамічного масиву
begin inherited, / / ​​Викликаємо конструктор предка SetLength (FArray, delta); / / Створили масив з delta-елементів FPos: = 0; / / Лічильник елементів масиву
end;
destructor ТМуАrrау.Destroy; / / Деструктор динамічного масиву begin / / Знищуємо об’єкт FArray: = nil; / / Видаляємо масив inherited; / / Викликаємо деструктор предка
end;
function ТМуАrrау.GetElement (Poz: integer): integer; begin result: = FArray [Poz] end; / / Читаємо елемент за номером
function ТМуАrrау.GetLastNumber: integer; begin result: = FPos-1; end; / / Отримуємо кількість елементів масиву
procedure ReadElementsFromFile; / / Читаємо з файлу і виводимо непарні на екран
var F: file of Integer; / / Файл з цілими числами МуАrrау: ТМуАrrау; / / Об’єкт для зберігання чисел i: integer; / / Змінна циклу
begin МуArray: = ТМуArray. create; / / Створили об’єкт-масив AssignFile (F, “TestFile.dat”); / / Відкриваємо файл
reset(F);
while not eof (F) do
begin read (F, I); / / Читаємо елемент МуArray.AddElement (I); / / Додаємо елемент в масив
end; closeFile (F); / / Закриваємо файл for i: = МуArray.GetLastNumber downto 0 do / / Виводимо в зворотному порядку if МуArray.GetElement (i) mod 2 <> 0 then / / Виводимо тільки непарні writeln (intTostr (MyArray.GetElement (i))); / / елементи в колонку МуArray.Free; / / Знищуємо масив
end;
begin / / Головний модуль
ReadElementsFromFile
end.

Схожі статті:


Сподобалася стаття? Ви можете залишити відгук або підписатися на RSS , щоб автоматично отримувати інформацію про нові статтях.

Коментарів поки що немає.

Ваш отзыв

Поділ на параграфи відбувається автоматично, адреса електронної пошти ніколи не буде опублікований, допустимий HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

*

*