МАРК РЕГНЕРУС ДОСЛІДЖЕННЯ: Наскільки відрізняються діти, які виросли в одностатевих союзах
РЕЗОЛЮЦІЯ: Громадського обговорення навчальної програми статевого виховання ЧОМУ ФОНД ОЛЕНИ ПІНЧУК І МОЗ УКРАЇНИ ПРОПАГУЮТЬ "СЕКСУАЛЬНІ УРОКИ" ЕКЗИСТЕНЦІЙНО-ПСИХОЛОГІЧНІ ОСНОВИ ПОРУШЕННЯ СТАТЕВОЇ ІДЕНТИЧНОСТІ ПІДЛІТКІВ Батьківський, громадянський рух в Україні закликає МОН зупинити тотальну сексуалізацію дітей і підлітків Відкрите звернення Міністру освіти й науки України - Гриневич Лілії Михайлівні Представництво українського жіноцтва в ООН: низький рівень культури спілкування в соціальних мережах Гендерна антидискримінаційна експертиза може зробити нас моральними рабами ЛІВИЙ МАРКСИЗМ У НОВИХ ПІДРУЧНИКАХ ДЛЯ ШКОЛЯРІВ ВІДКРИТА ЗАЯВА на підтримку позиції Ганни Турчинової та права кожної людини на свободу думки, світогляду та вираження поглядів Контакти
Тлумачний словник |
|
|||||||
Сучасний етап розвитку декларативних мов.Програма на Прологу складається з предикатів. Програма на Прологу і база знань – синоніми. Мета формулюється також у вигляді предикатів. Виконання програми на Прологу – це резолюція мети. Під інтерпретатором Прологу будемо розуміти механізм рішення задачі за допомогою мови Пролог. Інакше кажучи, інтерпретатор мови Пролог - це виконавець Пролог-програм, тобто та "активна сила", яка виконує програми, написані на Прологу. У кожної з мов програмування є своє коло задач, при розв'язку яких вони використовуються з найбільшою ефективністю. Для Прологу це задачі, пов'язані з розробкою систем штучного інтелекту (різні експертні системи, програми-перекладачі, інтелектуальні ігри). Використовується для обробки природної мови й має потужні принципово відмінні від традиційних засоби для вилучення інформації з баз даних. Пролог знайшов застосування й у ряді інших областей, наприклад, при рішенні задач складання розкладів. При цьому він не є універсальною мовою програмування й не призначений, зокрема, для розв'язку задач, пов'язаних із графікою або чисельними методами. Логічне програмування - це концепція, що дозволяє описувати предметну область проблеми без складання алгоритму пошуку розв'язку. Складність програмування нікуди не зникає, вона просто "перетікає" з області побудови алгоритму машинною мовою в область формулювання задачі для її розв'язку машиною. Пролог є не стільки мовою для програмування, скільки мовою для опису даних і логіки їхньої обробки. І рішення задачі записується не в термінах комп'ютера, а в термінах предметної області задачі, у дусі модного зараз об’єктно-орієнтованого програмування. Пролог дуже добре підходить для опису відношень між об'єктами. Тому Пролог називають реляційною мовою. Причому "реляційність" Прологу значно могутніша й розвинена, чим "реляційність" мов для обробки баз даних. Часто Пролог використається для створення систем керування базами даних, де є дуже складні запити, які досить легко записати на Прологу. У Прологу дуже компактно, порівняно з імперативними мовами, описуються багато алгоритмів. По статистиці, рядок тексту програми мовою Пролог відповідає чотирнадцяти рядкам тексту програми тої ж задачі імперативною мовою. Пролог-програму, як правило, дуже легко писати, розуміти й налагоджувати. Це приводить до того, що час розробки додатка мовою Пролог у багатьох випадках на порядок швидший, ніж на імперативних мовах. У Прологу легко описувати й обробляти складні структури даних. Прологу властивий ряд механізмів, відсутніх у традиційних мовах програмування: зіставлення зі зразком, вивід з пошуком і вертанням. Ще одна істотна відмінність полягає в тім, що для зберігання даних у Прологу використаються списки, а не масиви. У мові відсутні оператори присвоювання й безумовного переходу, покажчики. Природним і найчастіше єдиним методом програмування є рекурсія. Пролог вимагає відмови від стереотипів, стилю мислення імперативного програмування. Основні області застосування Прологу: § швидка розробка прототипів прикладних програм; § автоматичний переклад з однієї мови на іншу; § створення природно-мовних інтерфейсів для існуючих систем; § символьні обчислення для рішення рівнянь, диференціювання й інтегрування; § проектування динамічних реляційних баз даних; § експертні системи й оболонки експертних систем; § автоматизоване керування виробничими процесами; § автоматичний доказ теорем; § напівавтоматичне складання розкладів; § системи автоматизованого проектування; § базоване на знаннях програмне забезпечення; § організація сервера даних або, точніше, сервера знань, до якого може звертатись клієнтський додаток, написаний на якій-небудь мові програмування. Області, для яких Пролог не призначений: великий обсяг арифметичних обчислень (обробка аудио, відео й т.д.); написання драйверів.
Зріст продуктивності комп’ютерів при зниженні їхньої вартості в другій половині 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, якого вважають одним з «батьків-засновників» ООП, об'єктно-орієнтований підхід полягає в наступному наборі основних принципів. Усе є об'єктом. Обчислення здійснюються шляхом взаємодії (обміну даними) між об'єктами, при якому один об'єкт вимагає, щоб інший об'єкт виконав якусь дію. Об'єкти взаємодіють, посилаючи й одержуючи повідомлення. Повідомлення — це запит на виконання дії, доповнений набором аргументів, які можуть знадобитись при виконанні дії. Кожний об'єкт має незалежну пам'ять, яка складається з інших об'єктів. Кожний об'єкт є представником (екземпляром) класу, який виражає загальні властивості об'єктів. У класі задається поведінка (функціональність) об'єкта. Тим самим усі об'єкти, які є екземплярами одного класу, можуть виконувати ті самі дії. Класи організовані в єдину деревоподібну структуру із загальним коренем, називану ієрархією спадкування. Пам'ять і поведінка, пов'язані з екземплярами певного класу, автоматично доступні будь-якому класу, розташованому нижче в ієрархічному дереві. Таким чином, програма є набором об'єктів, що мають стан і поведінку. Об'єкти взаємодіють за допомогою повідомлень. Природним чином вибудовується ієрархія об'єктів: програма в цілому — це об'єкт, для виконання своїх функцій вона звертається до вхідних у неї об'єктів, які, у свою чергу, виконують запитане шляхом звертання до інших об'єктів програми. Природно, щоб уникнути нескінченної рекурсії у звертаннях, на якомусь етапі об'єкт трансформує звернене до нього повідомлення в повідомлення до стандартних системних об'єктів, надаваних мовою й середовищем програмування. Стійкість і керованість системи забезпечується за рахунок: § чіткого поділу відповідальності об'єктів (за кожну дію відповідає певний об'єкт), § однозначного визначення інтерфейсів міжоб'єктної взаємодії, § повної ізольованості внутрішньої структури об'єкта від зовнішнього середовища (інкапсуляції).
Важливо відзначити, що парадигма програмування не визначається однозначно мовою програмування — багато сучасних мов програмування є мультипарадигменими, тобто допускають використання різних парадигм.
Читайте також:
|
||||||||
|