Pascal — алгоритмічна мова
програмування універсального
призначення. Існують діалекти мови з
підтримкою об’єктно-орієнтованого
програмування. В 1990 році було затверджено
стандарт ISO 7185:1990, «Pascal», та ISO
10206:1990 «Extended Pascal».
Історія
виникнення і особливості мови
Першим
компілятором мови Pascal є ETH Pascal, створений
у 1970-му. Назва ETH походить від назви
інституту німецькою Eidgenössische Technische
Hochschule Zürich (українською Федеральна
вища технічна школа Цюріха), де він
був розроблений. Творцем мови є Ніклаус
Вірт.
Наприкінці того ж року Вірт оприлюднив
перший офіційний опис мови, синтаксису
та семантики. Нова версія мови побачила
світ у 1972 році. Тоді ж Вірт та його
англійський колега Чарльз Ентоні Хоар
(Charles Anthony Richard Hoare) випустили аксіоматичний
опис мови Pascal.
У
1969 році Вірт доручає розробку компілятора
одному зі своїх студентів (Е. Марм'є).
На той момент Марм'є володів
лише Фортраном (Fortran) і писав
компілятор виключно на цій мові. Після
написання компілятор Pascal був переписаний
на самому собі. Як згадував потім Вірт,
вибір Фортрана був серйозною помилкою,
бо він не міг адекватно представляти
складні структури даних компілятора
Pascal, що лише заплутувало програму.
Наступна
спроба створення компілятору почалася
з чіткого формулювання на описі (1970
року) самого Паскалю. Синтаксичний
аналіз нового однопрохідного компілятору
реалізовувався за допомогою рекурсії.
Тепер команду розробників склали: У.
Амман, Е. Марм'є, Р. Шилд. Після того як
компілятор був написаний на ще невідомій
мові, Шилд поїхав додому, де він на
протязі двох тижнів вручну транслював
програму у допоміжну низькорівневу
мову. Отже, в середині 1970 року компілятор
ETH Pascal був готовий.
ETH
Pascal був цікавий насамперед тим, що
став він однією з перших реалізацій
мов високого рівня написаних на самій
собі, на два роки випередивши
компілятор Сі.
У 1973 році була створена абстрактна
Pascal-машина (P-машина), яка виконувала
спеціальний P-код. Щоб вирішити проблему
сумісності компілятора, Вірт вирішив
скористатися перевіреними часом
методами інтерпретаціі. Найвідомішими
з них рішеннями, які передували P-коду,
можна назвати реалізацію мови Snobol-4
(Р. Грісуолдом, у 1967 році), де в якості
коду абстрактної машини використовувалася
мова SIL(System Implementation Language).
Початкова
мета розробки мови диктувалася потребою
інструмента «для навчання програмуванню
як систематичній дисципліні». Pascal
належить до Algol-подібних
мов програмування, оскільки використовує
семантику Algol-ла. Однак Pascal мав
суттєве удосконалення — жорстку
типізацію. Це означало, що присвоювання
можна було виконувати лише для змінних,
що належать до одного типу (одночасно
вказувались правила, за якими типи
вважались однаковими). Це удосконалення
суттєво покращило стиль програмування,
оскільки значну частину помилок
вдавалось виявити ще на етапі компіляції
— що збільшує надійність програм.
Однак
мова розроблялась як дослідницький
проект і первісний Pascal був
мало придатний для написання великих
проектів, оскільки програму не можна
було скласти з кількох програмних
частин — просто не було передбачено
такої можливості. Але ця мова
програмування швидко завоювала
популярність у навчальних закладах
при вивченні програмування. А коли
з'явились діалекти мови де можливим
було окреме компілювання програмних
частин — Pascal став
засобом написання великих програмних
систем.
Існує
ряд об'єктивних
причин, які обумовили видатний успіх
мови Pascal.
Серед них у першу чергу потрібно
вказати наступні:
Мова
в природній і елегантній формі відбила
найважливіші сучасні концепції
технології розробки програм.
Завдяки
своїй компактності, концептуальній
цілісності й ортогональності понять,
а також вдалому оригінальному опису,
запропонованому автором
мови, Pascal виявився
дуже легким для вивчення й освоєння.
Незважаючи
на відносну простоту мови, вона
виявилась придатною для дуже широкого
спектру застосунків, у тому числі
для розробки дуже великих і складних
програм, наприклад,операційних систем.
Pascal
дуже технологічний для реалізації
практично усіх, у тому числі і
нетрадиційних, машинних архітектур.
Стверджується, що розробка Pascal-транслятора
«майже» не перевищує за трудомісткістю
гарної дипломної роботи випускника ВНЗу.
Мова
Pascal стандартизована в багатьох
країнах, а у 1983 році
було прийнято міжнародний стандарт
(ISO 7185:1983).
Turbo
Pascal та Borland Pascal
Загальні
відомості
Turbo,
а пізніше Borland Pascal— це одна з
найвдаліших та найпоширеніших
реалізацій мови Pascal, створена
компанією Borland. Turbo
Pascal —
розширення американського стандарту
(ANSI Pascal), яке враховує архітектурні
особливості MS-DOS та MS Windows і
постачається зі значними за обсягом
і різноманітності пакетами стандартних
процедур. Такі принципові нововведення,
як апарат модулів і об’єктно-орієнтовані
засоби полегшують конструювання
великих програмних систем на основі
технології модульного програмування.
Компілятор Turbo
Pascal працює за однопрохідною схемою,
реалізує функції редагування зв'язків,
формуючи на виході готовий до виконання
об'єктний код. Компілятор може
здійснювати широкий набір локальних
оптимізацій (згортання констант,
виключення невикористовуваного коду
і зайвих даних, оптимізація операцій
і т.д.), що сприяє високій ефективності
кінцевих програм.
Система Turbo
Pascal є інтегрованим середовищем
(IDE), яке налічує ряд компонентів, що в
сукупності підтримують усі види робіт
зі створення програм. Система містить
універсальний текстовий
редактор, компілятор вхідної
мови, редактор зв'язків і вбудований
символьний зневаджувач. Багатовіконний
інтерфейс із розвинутою системою меню
і досконалою довідковою системою
забезпечує високу продуктивність
праці програміста.
Borland
Pascal 7.0, 7.01 компілює програми для DOS та
ОС Windows 1.0, Windows 2.0, Windows 3.x, а
також містить ряд додаткових утиліт
та компіляторів на кшталт: Turbo Pascal
for Windows (TPW),Borland Pascal for Windows (BPW),
редактор ресурсів (іконок, графічних
файлів, курсорів тощо) та інші.
Хронологічна
таблиця версій компілятора серії
"Turbo":
Назва
компілятора
|
Дата
виходу
|
Особливості
та інше
|
Turbo
Pascal 1.0
|
20
листопада 1983 року
|
Розроблена
для PC-DOS та ОС CP/M. Компілятор потребує
лише 64 КіБ оперативної пам'яті і
компілює код для COM або CHN файлів
(формату/структури файлів). Вихідний
машинний код не може перевищувати
64 КіБ, графічний режим— CGA,
маніпуляції зі звуком за допомогою
PC-динаміку (підключеного до 2-гого
виходу таймеру (у IBM AT-сумісних).
|
Turbo
Pascal 2.0
|
17
квітня 1984 року
|
Колір
інтерфейсу змінений з жовто-сірого
на сіро-білий. Видалена команда меню
"виконати", збільшено можливий
розмір коду та додано чимало нових
прикладів програм.
|
Turbo
Pascal 3.0
|
17
вересня 1986 року
|
Кольори EGA-палітри,
нові графічні процедури (в тому числі
графічна черепаха), оверлеї, BCD,
нові процедури для роботи з файлами,
параметри компіляції можна задавати
через командний рядок.
|
Turbo
Pascal 4.0
|
2
листопада 1987 року
|
У
компілятор внесені кардинальні
зміни. Він перестав підтримувати ОС
CP/M, стала можливою компіляція
в EXE-файли, робота з EGA, VGA графікою,
доданий тип даних LongInt.
Мова
змінилася. Введені нові концепції
програмних одиниць: бібліотеки
процедур, які можуть бути відкомпільовані
та використані пізніше. Інтерфейс
змінився на повноекранний редактор
зі спадним меню у верхній частині
екрану та виходом у нижній. Середовище
розробки надало більше можливостей
для розробки алгоритмів: налаштування
опцій компілятора, параметрів
середовища редагування (на кшталт,
автоматичного збереження та резервного
копіювання відредагованих файлів,
розміру табуляції тощо), робочого
каталогу і командного рядка.
|
Turbo
Pascal 5.0
|
осінь
1988 року
|
З'явився
вбудований відлагоджувальник (від
англ. debugger), а також окремий
відлагоджувальник Turbo Debugger, драйвер
BGI.
|
Turbo
Pascal 5.5
|
2
травня 1989 року
|
В
мову вводиться поняття
об'єктно-орієнтованого програмування
(поняття класів, статичних та
динамічних об'єктів, конструкторів
і деструкторів, а також успадкування).
В
інтерфейсі став переважати синій
колір, який використовувався у всіх
наступних версіях серії "Turbo".
В ІСР (акронім від "інтегроване
середовище розробки", англ.
integrated development environment (IDE)) введено дві
важливі зміни: покроковий
відлагоджувальник і контекстна
довідка з описом всіх вбудованих
функцій та можливістю копіювання
фрагментів коду.
|
Turbo
Pascal 6.0
|
4
жовтня 1990 року
|
Мова
має ряд змін у порівнянні з попередньою
версією: вбудований асемблер,
покращення об'єктно-орієнтованої
парадигми, поліпшений адмінстратор
купи (від англ. heap). З'являється
бібліотека Turbo Vision, яка призначена
для розробки програм зі складним
візуальним інтерфейсом.
Інтерфейс.
Покращений підтримкою миші, буфером
обміну текстом, можливістю маніпуляцій
з віконним редактором (а також
одночасним редагуванням кількох
файлів). Відлагоджувальник також
покращився. Стало можливим використанням
паузточок (від англ. breakpoints) та вікна
спостереження (watches).
|
Turbo
Pascal 7.0
|
9
березня 1993 року
|
Компілятор
став крос-платформовим - це дозволило
компілювати програми як для DOS так
і для ОС Windows. Іншою важливою особливістю
є можливість створення динамічних
бібліотек (акронім— ДБ, від англ.
dynamic-link library (DLL) та підсвічування
синтаксису.
|
Хронологічна
таблиця версій компілятора серії
"Borland":
Назва
компілятора
|
Дата
виходу
|
Особливості
та інше
|
Borland
Pascal with Objects 7.0
|
27
жовтня 1992 року 7:00
|
Генерування
коду виконувальних файлів для ОС
Windows, DOS, DPMI. Швидкість компіляції
більш ніж 85000 ліній за хвилину. Повний
доступ до всіх функцій Windows та
повідомлень. Динамічні бібліотеки
для DOS та Windows. C, C++ код може бути
використаний завдяки ДБ (DLL). Вбудований
асемблер для швидкості та повного
контролю коду. Математичний
співпроцесор і оффлайн підтримка.
Розумний компонувальник для видалення
непотрібних об'єктів та коду.
Зарезервовані слова: "public",
"private" та "inherited". Відкриті
масиви і рядки. 80386-інструкції для
операцій з 32-бітовими числами.
Оптимізація множин. Швидкі операції
з рядками та файлами. Необмежена
вкладеність. Пакет включає в себе:
DOS-, Windows-інтегровані середовища
розробки. Підсвічування синтаксису,
необмежені кількість операцій "Undo"
(повернути) та "Redo" (повторити).
Вибір цільового файлу та коду для:
DOS, DPMI або Windows. Браузер об'єктів
(ObjectBrowser), он-лайн довідка, Turbo Debugger,
Turbo Profiler, Turbo Assembler, Resource Workshop, Winsight /
Winspector, компілятор ресурсів, компілятор
довідки, модуль "Windows CRT". Ціна
— $ 500, оновлення Turbo Pascal— $ 150.
|
Borland
Pascal with Objects 7.01
|
9
березня 1993 року 7:01
|
Усунені
деякі помилки в самому компіляторі
(деякі моменти перевірки діапазону
та переповнення типу Byte і ShortInt були
реалізовані неправильно), в роботі
таймеру (процедура Delay), а також в
тексті Turbo Vision-модулів. Зареєстровані
користувачі версії 7.0 отримали 7.01
безкоштовно. Була виправлена серйозна
помилка зсуву (операції shl та shr) для
типу LongInt (з числом зсуву бітів 16-31),
яка відбувалася під час виконання
коду на процесорах 80386 (на деяких
процесорах код працював, на інших—
ні). Проблему було вирішено шляхом
впровадження глобальної змінної
Save8086 типу Byte та вставкою додаткового
тесткоду, який оточував інструкції.
Це сповільнило зсуви, але зробило
їх стабільним, тому що тепер вони
виконуються з використанням 16-бітових
регістрів як в TP 4.0-6.0 реалізації.
Виправлені
помилки, відповідно інформації
наданої Джимом Хіґґінсом(Jim
Higgins):
1.Перевірка діапазону і
переповнення типу Byte та
ShortInt;
2.Помилка, пов'язана із зсувом
зі значеннями 16-31 на процесорах
80386, 80486;
3.Функція GetDir не викликала
помилку №15, якщо переданий параметр
неіснуючого диску;
4.У програм
відкомпільованих директивою $N, була
проблема з правильним визначенням
INFs і NaN;
5.Функція Exp, коли
використовувалася для дуже малих
аргументів типу Real виклакала
переповнення замість того, щоб
повернути нуль;
6.Була проблема
перетворення денормалізованих чисел
в нулі при використанні співпроцесора
8087;
7.Денормалізовані числа типу
Extended не перетворювались належним
чином у десяткові за допомогою
процедур Str та Write(Ln);
8.Ініціалізації
процедур не перевіряли належним
чином, щоб запобігти помилкового
виконання коду скомпільованого для
процесорів 80286 з директивою $G , які
працють на процесорах 8086/8088.
|
|