Студопедия
Новини освіти і науки:
МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах


РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання


ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ"


ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ


Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків


Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні


Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах


Гендерна антидискримінаційна експертиза може зробити нас моральними рабами


ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ


ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів



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

Програма на Прологу складається з предикатів. Програма на Прологу і база знань – синоніми. Мета формулюється також у вигляді предикатів. Виконання програми на Прологу – це резолюція мети.

Під інтерпретатором Прологу будемо розуміти механізм рішення задачі за допомогою мови Пролог. Інакше кажучи, інтерпретатор мови Пролог - це виконавець Пролог-програм, тобто та "активна сила", яка виконує програми, написані на Прологу.

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

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

Логічне програмування - це концепція, що дозволяє описувати предметну область проблеми без складання алгоритму пошуку розв'язку. Складність програмування нікуди не зникає, вона просто "перетікає" з області побудови алгоритму машинною мовою в область формулювання задачі для її розв'язку машиною.

Пролог є не стільки мовою для програмування, скільки мовою для опису даних і логіки їхньої обробки. І рішення задачі записується не в термінах комп'ютера, а в термінах предметної області задачі, у дусі модного зараз об’єктно-орієнтованого програмування.

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

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

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

Пролог вимагає відмови від стереотипів, стилю мислення імперативного програмування.

Основні області застосування Прологу:

§ швидка розробка прототипів прикладних програм;

§ автоматичний переклад з однієї мови на іншу;

§ створення природно-мовних інтерфейсів для існуючих систем;

§ символьні обчислення для рішення рівнянь, диференціювання й інтегрування;

§ проектування динамічних реляційних баз даних;

§ експертні системи й оболонки експертних систем;

§ автоматизоване керування виробничими процесами;

§ автоматичний доказ теорем;

§ напівавтоматичне складання розкладів;

§ системи автоматизованого проектування;

§ базоване на знаннях програмне забезпечення;

§ організація сервера даних або, точніше, сервера знань, до якого може звертатись клієнтський додаток, написаний на якій-небудь мові програмування.

Області, для яких Пролог не призначений: великий обсяг арифметичних обчислень (обробка аудио, відео й т.д.); написання драйверів.

 

 

Зріст продуктивності комп’ютерів при зниженні їхньої вартості в другій половині 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, якого вважають одним з «батьків-засновників» ООП, об'єктно-орієнтований підхід полягає в наступному наборі основних принципів.

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

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

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

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

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

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

 

 

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

 

 


Читайте також:

  1. III.Цілі розвитку особистості
  2. III.Цілі розвитку особистості
  3. III.Цілі розвитку особистості
  4. Iсторiя розвитку геодезичного приладознавства
  5. V Потреби та мотиви стимулюють пізнання себе та прагнення до саморозвитку.
  6. VІІІ. Проблеми та перспективи розвитку машинобудування.
  7. А. В. Петровський виділяє три стадії розвитку особистості в процесі соціалізації: адаптацію, індивідуалізацію і інтеграцію.
  8. Агроекологічні проблеми розвитку і шляхи їх розв'язання
  9. Альтернативність у реалізації стратегії розвитку підприємства
  10. АНАЛІЗ ПЕРСПЕКТИВНИХ НАПРЯМІВ|направлень| РОЗВИТКУ МЕТОДІВ РОЗПІЗНАВАННЯ
  11. АНАЛІЗ ПЕРСПЕКТИВНИХ НАПРЯМІВ|направлень| РОЗВИТКУ МЕТОДІВ РОЗПІЗНАВАННЯ
  12. АНАЛІЗАТОРІВ У ПРОЦЕСІ РОСТУ ТА РОЗВИТКУ ЛЮДИНИ.




Переглядів: 743

<== попередня сторінка | наступна сторінка ==>
Концепція функціонального програмування. | Поняття про уяву та її роль на ранніх етапах розвитку культури

Не знайшли потрібну інформацію? Скористайтесь пошуком google:

  

© studopedia.com.ua При використанні або копіюванні матеріалів пряме посилання на сайт обов'язкове.


Генерація сторінки за: 0.032 сек.