Сучасний етап розвитку декларативних мов.



 

Зріст продуктивності комп’ютерів при зниженні їхньої вартості в другій половині 1990-х рр. з одночасним зростом складності розв'язуваних задач і вдосконаленням техніки реалізації компіляторів і інтерпретаторів привели до значного підвищення ефективності рішення задач на ПК саме за допомогою декларативних мов.

 

Так, застосовуючи методи глобального аналізу програм, творці систем Aquarius Prolog [3 Van Roy P. Can Logic Programming Execute as Fast as Imperative Programming? // http://www.info.ucl.ac.be/people/PVR/Peter.thesis/Peter.thesis.html] і Parma [4 Taylor A. LIPS on a MIPS: Results from a Prolog Compiler for a RISC. In ICLP, 1990.] змогли впритул наблизитись до кращих компіляторів імперативних мов. Маленькою сенсацією став компілятор для функціональної мови Sisal [5 Feo J. T et al. A Report on the SISAL Language Project. 1990., 6 Cann D. Retire FORTRAN? A debate rekindled. CACM 35(8), 1992.], орієнтованої на чисельні розрахунки, створеної в американському ядерному дослідному центрі (Lawrence Livermore National Laboratory). Він перевершив не тільки Си, але й Фортран, що був у цій області поза конкуренцією.

Інші напрямки досліджень в області декларативних мов в останнє десятиліття :

 

•підвищення "чистоти" мов, тобто усунення з них не декларативних засобів;

•створення спеціалізованих засобів для ефективного розв'язку певних класів завдань. Це, насамперед, мови "програмування в обмеженнях". Ці мови містять вбудовані "вирішувачі рівнянь" специфічних видів, наприклад, лінійні рівняння / нерівності й рівняння приналежності в скінчених областях. Такі засоби дозволяють практично вирішувати багато задач, які не реально розв'язати загальними методами;

•синтез різних стилів програмування. Зокрема, об'єднання функціонального й логічного програмування та, навіть, об'єднання їх з об'єктно-орієнтованим програмуванням. Важливий принцип цих досліджень – знайти просту теоретичну основу для такого синтезу.

 

об'єктно-орІЄнтованЕ програмУВанНЯ (надалі ООП) розглядає програму як набір взаємодіючих об'єктів. ООП, в основному, є по суті імперативне програмування, доповнене принципом інкапсуляції даних і методів в об'єкт (принцип модульности) і спадкуванням (принципом повторного використання розробленого функціонала). Це – мови Смолток, Си++, Java, Ada і ін.

Об'єктно-орієнтований підхід є зараз домінуючим і дозволяє скоротити час розробки й збільшити надійність великих проектів. Однак програми в даному стилі відрізняються громіздким синтаксисом; у цілому об'єктно-орієнтована ідеологія досить неочевидна, часто сприймається із труднощами (особливо це характерно для мови Си, яка і у своєму первісному виді відрізняється вкрай складним синтаксисом), і перехід до його використання важкий для багатьох програмістів.

На думку Алана Кея, творця мови Smalltalk, якого вважають одним з «батьків-засновників» ООП, об'єктно-орієнтований підхід полягає в наступному наборі основних принципів.

Усе є об'єктом. Обчислення здійснюються шляхом взаємодії (обміну даними) між об'єктами, при якому один об'єкт вимагає, щоб інший об'єкт виконав якусь дію. Об'єкти взаємодіють, посилаючи й одержуючи повідомлення. Повідомлення — це запит на виконання дії, доповнений набором аргументів, які можуть знадобитись при виконанні дії. Кожний об'єкт має незалежну пам'ять, яка складається з інших об'єктів. Кожний об'єкт є представником (екземпляром) класу, який виражає загальні властивості об'єктів. У класі задається поведінка (функціональність) об'єкта. Тим самим усі об'єкти, які є екземплярами одного класу, можуть виконувати однакові дії. Класи організовані в єдину деревоподібну структуру із загальним коренем, називану ієрархією спадкування. Пам'ять і поведінка, пов'язані з екземплярами певного класу, автоматично доступні будь-якому класу, розташованому нижче в ієрархічному дереві. Таким чином, програма є набором об'єктів, що мають стан і поведінку та взаємодіють за допомогою повідомлень.

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

Стійкість і керованість системи забезпечується:

§ чітким поділом відповідальності об'єктів (за кожну дію відповідає певний об'єкт),

§ однозначним визначенням інтерфейсів міжоб'єктної взаємодії,

§ повною ізольованістю внутрішньої структури об'єкта від зовнішнього середовища (інкапсуляцією).

 

Таким чином семантика мов різних парадигм:

 

Важливо зазначити, що парадигма програмування не визначається однозначно мовою програмування — багато сучасних мов програмування є мультипарадигменими, тобто допускають використання різних парадигм.


Дата добавления: 2022-01-22; просмотров: 15; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!