Курсова робота - Паскаль сьогодні - Інформатика, програмування
Нинішнє становище Паскаля
Нині визнаними лідерами у галузі професійного програмування стали Сі-подібні мови. Протягом довгого періоду Паскаль був, мабуть, майже єдиною альтернативою їм як універсальна мова. Однак коли праця більшості професійних програмістів стала практично зводитися лише до маніпуляцій з викликами більш менш стандартного API-інструментарію (Application Programming Interface — інтерфейс прикладного програмування), гостро постало питання вибору єдиної мови програмування, якою (і для якої) писатиметься цей API . Внаслідок різних причин — як об'єктивних, і суб'єктивних — вибір припав на Сі/Сі++. По-перше, Сі, як і Паскаль, виявився однією з перших мов високого рівня (ЯВУ), що вирішив проблему «курки та яйця»: його компілятор був написаний на ньому ж. По-друге, компілятори для Сі робити, мабуть, легше, ніж для будь-якої іншої мови (що, власне, і було однією з цілей його розробки), тому саме їхній випуск економічно найбільш доцільний. Втім, не обійшлося і без суб'єктивних факторів: значну частку сьогоднішнього API виробляє фірма Microsoft, яка вже давно розмежувала з фірмою Borland сфери впливу в цій галузі. Зараз Borland не випускає компілятори для Бейсіка і Фортрана, а Microsoft – для Паскаля, і, природно, не орієнтує свої API тих мов, компілятори яких сама не випускає.
Тому лідерство Сі у сфері професійного програмування обумовлено переважно тим, що тільки ньому можна використовувати новий API-інтерфейс відразу після його виходу, тоді як програмістам, які працюють іншими мовами, доводиться або чекати, коли з'являться потрібні інтерфейсні модулі, абосамостійно їх писати.
Однак у галузі створення СУБД Паскаль досі входить до числа лідерів, оскільки продовжується розробка інструментального програмного забезпечення для роботи з об'єктними версіями цієї мови (Delphi). Крім того, Паскаль та його діалекти найчастіше застосовуються як «внутрішня» мова СУБД.
Сильні сторони Паскаля
Подивимося на Паскаль, а також на Сі та Бейсік з точки зору навчання програмуванню. Про дидактичну неспроможність мови Сі вже багато написано. Бейсік також мало підходить для навчання через відсутність загальноприйнятого стандарту та «безладність» стилю роботи, який він прищеплює. Основною перевагою Бейсіка була надзвичайна невибагливість ресурсів комп'ютера, що стало вже неактуальним. Раніше, коли були ПК з 16–64 Кбайт оперативною пам'яттю та ЗУ у вигляді магнітофона, можна було говорити, що Бейсік — найкращий ЯВУ, оскільки не було вибору. За наявності 640-Кбайт пам'яті та дисководу такий вибір з'явився.
Отже, сьогодні практично весь ринок програмних продуктів орієнтований на багатозадачні операційні системи (Windows, UNIX та ін) та інтенсивно використовує API-інструментарій, а також візуальні засоби програмування.
Це, звичайно, зручно, але навряд чи раціонально для навчання, адже потрібно навчитися розробляти та/або втілювати алгоритм, а не просто «складати програму з цеглинок». Крім того, будь-який початківець стикається з досить значним обсягом інформації, яку необхідно запам'ятати, перш ніж розпочинати програмування. Та й процес постійного оновлення API ускладнює роботу і викладача, і учня. Текстовий інтерфейс командного рядка, прийнятий в DOS, дає можливість, не особливо піклуючись про введення-виведення, приділяти основну увагу розробці та реалізації алгоритму. Аті, хто вже трохи розібрався з комп'ютером, можуть освоювати основи комп'ютерної графіки без змін платформи.
Медичні рецепти прийнято виписувати латиною. Від усіх живих мов вона відрізняється тим, що не змінюється. До того ж медики, якою б мовою вони не говорили, мають латиною спільну мову. Те саме можна сказати і про DOS. Його API досить лаконічний і практично перестав змінюватись. Крім того, всі операційні системи (на платформі Intel) дозволяють працювати з програмами DOS, а ось програма, написана, скажімо, для Linux, Windows вже не запуститься.
Порівняння компіляторів Паскаля
Серед компіляторів, які досягли певної міри «зрілості», — TMT Pascal (www.tmt.com) та Free Pascal Compiler (FPC, www.ru.freepascal.org).
Серед інших проектів варто згадати P32V Джона Прінса (surf.to/p32) та Virtual Pascal (www.vpascal.com), який нещодавно став безкоштовним. Останній, мабуть, найбільш ретельно опрацьований, але у вихідному вигляді не дозволяє робити DOS-додатки.
Примітно, що у розробці TMT та Free Pascal брали участь наші співвітчизники.
Версія 3.50 компілятора ТМТ справляє враження цілком налагодженого продукту — більшість виявлених помилок усунуто, сам він та його інтегроване середовище працюють стабільно та прості в установці. Дається взнаки, щоправда, нечисленність колективу розробників: інтегроване середовище як дві краплі води схоже на аналогічні GUI-орієнтовані IDE і має досить обмежені можливості — воно не має навіть вбудованого відладчика. У вбудованому асемблері досі немає підтримки SSE, хоч є 3DNow! та MMX. Повні зареєстровані версії компілятора, починаючи з 1.0, містили IDE-середовище в текстовому режимі, з якого через безліч помилок все одноне можна було працювати, а вільно поширювані — обмеження на обсяг пам'яті, що використовується, але їх можна було елементарно обійти. Тому у версії 3.50 вони були зняті, а в останню безкоштовне додано IDE-середовище.
Free Pascal було розроблено досить великим колективом ентузіастів. Він постачався разом із вихідними текстами, тому будь-який бажаючий міг взяти участь у процесі його створення. До речі, написаний Free Pascal на Паскалі, тож для нього проблема «курки та яйця» не виникає.
Звичайно, обидва компілятори не у всьому схожі. ТМТ не має 64-розрядного цілого типу comp. При цьому, швидше за все, його введення і не передбачається, оскільки існує додатковий модуль для обробки комплексних чисел, що має ту саму назву. У Free Pascal не передбачено зумовлених масивів Port і PortW, а ТМТ є навіть PortD.
Оскільки обидва компілятори використовують 32-розрядну плоску модель пам'яті, функція seg в обох повертає 0, проте в системі програмування Free Pascal функція ptr неправильно працює. Наприклад, у виразі longint(ptr($40,$6c)^) ми можемо отримати все що завгодно, але тільки значення лічильника часу BIOS (мабуть, програма припинить роботу з помилці звернення до пам'яті). У TMT така конструкція виконується правильно.
Після компіляції мінімальний розмір файлу для ТМТ становить близько 15 Кбайт, а для Free Pascal - 55 Кбайт. Крім того, другий вимагає ще зовнішнього DPMI-сервера на 20 Кбайт, тоді як у ТМТ він міститься всередині файлу, що виконується.
Щоб порівняти швидкості роботи файлів, отриманих за допомогою цих компіляторів, можна використовувати тест Ветстоуна з визначення продуктивності системи з точки зору виконання операцій над числами з плаваючоюкомою, переписаний з Фортрану на Паскаль (табл. 2). Значно поступаючись TMT з оптимізації розміру, Free Pascal працює у півтора рази швидше. У той же час обидва компілятори залишають далеко позаду Borland Pascal, особливо на сучасних процесорах.
Однак деякі результати при вимірі продуктивності виглядають досить дивно. Написана на асемблері процедура пошуку найкоротшого шляху у графі за допомогою алгоритму Дейкстри, будучи відкомпільованою тим самим Free Pascal, виконувалася на 20% швидше, ніж ТМТ. При заповненні таблиці терезів дуг графа використовувався датчик випадкових чисел, вимірювання повторювалися 1000 разів і отримані значення усереднювалися, а процедури читання, запису та пересилання вмісту оперативної пам'яті виконували в обох випадках з однаковою швидкістю.
Середній час виконання цього тесту для компілятора ТМТ Pascal становив 2,20 с, а Free Pascal — 1,81 с.
При виведенні тексту ТМТ утричі відстає від FPC, проте цього не слід лякатися. Справа в тому, що тоді як Free Pascal слідом за Borland застосовує шрифт розміром 8x8, в ТМТ резонно припустили, що при дозволах 640x480 пікселів і більше краще виглядатиме шрифт розміром 8x16. Отже, уповільнення виведення значною мірою пов'язане зі збільшенням розміру шрифту вдвічі.
Загалом реалізація графічної бібліотеки ТМТ справляє враження більш продуманої та налагодженої (хоч і менш повної по відношенню до Borland Pascal).
До речі, розділ документації Free Pascal, присвячений опису відмінностей реалізації графічних бібліотек для різних платформ, залишився порожнім, а графічна програма, що працювала в DOS і перекомпільована на графічний додаток Windows, відразу завершилася помилково.
Безкоштовна версія TMT Pascal дозволяє робитивиконувані файли лише DOS, зате при використанні комерційної той самий текст, будучи відкомпільованим і DOS, і Windows, працює візуально абсолютно однаково, хоча внутрішній механізм для DOS реалізований через VESA, а Windows — через DirectDraw.
Що ж, хоча великі фірми і відмовилися від ведення розробок Паскаля для DOS, невеликі компанії, колективи ентузіастів і навіть окремі програмісти успішно продовжили цю справу, створюючи цілком гідну заміну перевіреному компілятору Turbo Pascal. Так що якщо вам потрібен надійний компілятор і ви не хочете возитися з установкою та налаштуванням його самого і середовища, що додається до нього, а також якщо при вашій роботі пред'являються жорсткі вимоги до обсягу коду, то краще зупинити свій вибір на ТМТ. До речі, при застосуванні зовнішнього DOS-розширювача пам'яті, наприклад DOS4GW, мінімальний обсяг файлу, що виконується, можна скоротити до 3 Кбайт. Якщо ж вам не терпиться самому взяти участь у розробці компілятора Паскаля, якщо вам потрібен транслятор, який налаштовується на ваші конкретні завдання і ви згодні над ним попрацювати, слід віддати перевагу FPC. Втім, разом із вихідними текстами також поставляється Р32V, проте він, на відміну від FPC, компілюється в середовищі Borland Pascal. Правда, P32V - не повний компілятор, так як перекладає текст на Паскалі не в об'єктний код, а в текст мовою асемблера, і тому буде потрібний зовнішній асемблер. Якщо ж ви працюєте з OS/2, то доцільніше віддати перевагу Virtual Pascal.
Таблиця 1. 32-розрядні компілятори Паскаля