Лісп мова функціонального програмування

Реферат на тему:

Лісп – мова функціонального програмування




1. Місце Ліспу у класифікації мов програмування



За однією з класифікацій мови програмування діляться на процедурні, які також називаються операторними або імперативними, та декларативні мови. Більшість мов, які сьогодні використовуються – Бейсік, Фортран, Паскаль, Сі, відносяться до процедурних мов. До класу декларативних мов відносяться функціональні або апплікативні – Лісп, Лого, та логічні мови, відомим представником якого є Пролог. На практиці мови програмування не є чисто процедурними, функціональними чи логічними. На процедурній мові можна написати функціональну програму і навпаки.

Процедурна програма складається з послідовності операторів та виразів, які керують її виконанням. Типичними операторами є оператори присвоєння, ввода-виводу, керування та циклу.

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



Далі в якості інтерпретатора мови Лісп будемо використовувати muLisp. muLisp працює на комп’ютері з операційною системою MS-DOS або PC-DOS. Програма mulisp.com є інтерпретатором мови програмування muLisp, яка має потужні функціональні засоби для обробки структур даних, створених користувачем. muLisp є символьною мовою програмування, яка призначена для обробки списків. Слово Lisp виникло з перших літер фрази List Processing. 



Робота з Ліспом нагадує роботу з карманним калькулятором: користувач вводить вираз (він обов’язково повинен закінчуватися символом <RETURN> та мати збалансовану кількість дужок), який читає машина, потім обчислює (інтерпретує), та видає результат. Цей процес введення-читання-обчислення-видачі результату буде відбуватися в циклі доти, доки користувач не введе команду (SYSTEM), яка завершує роботу з muLisp і передає керування операційній системі.



2. Особливості мови програмування Лісп



1) Більш ніж 260 функцій мови Лісп визначено на машинній мові для більшої ефективності виконання програм. Ці функції забезпечують побудову структур даних, включаючи повний набір перемикачів, конструкторів, розпознавачів та порівнянь.

2) Цілі числа нескінченно великої точності та раціональна арифметика, віизначені у кожній проектованій основній системі числення від 2 до 36, та підтримка повної множини числових функцій.

3) Колектор, який збирає мусор, здійснює автоматичне динамічне керування пам’ятю в усіх областях даних. Час роботи колектора як правило, менша за секунду.

4) Динамічний перерозподіл границь областей даних відбувається автоматично при найбільш ефективному використанні усіх доступних ресурсів пам’яті ( максимально до 512 К ).

5) До конструкцій контролю відносяться функції COND, LOOP, IF, PROGN та RETURN. Ці конструкції дозволяють створювати програми у простому та елегантному Лісп - стилі.

6) Функції CATCH, THROW та UNWIND-PROTECT забезпечують структурний загальний механізм выходів, який значно спрощує контроль помилок та виняткових ситуацій у програмах користувача.

7) Повна множина первинно визначених функцій відображення та предикатів відображення може використовуватися для тестування елементів списків.

8) Функції Ліспу можуть бути визначені або як обчислювані (EVAL) або необчислювані (NORMAL), або як розгорнуті (SPRED) та нерозгорнуті (NOSPRED). Макрос, який визначається користувачем, може характеризуватися або часом компіляції, або часом виконання.

9) Відладка програм полегшується використанням резидентного дисплейно-орієнтованого редактора Ліспу та пакету відладки, який включає в себе засоби трасування, преривання та сбору статистики.

10) Послідовний та випадковий методи доступу, послідовний файл вводу-виводу повністю підтримуються системою. Окрім того, можуть бути створені файли образу пам’яті для збереження середовища Ліспу, з метою можливості його перезагрузки у довільний час.

11) Відносно маленький розмір Ліспу дає можливість залишити ділянку пам’яті ЕОМ вільною, достатньою для структур даних користувача. Мінімально система займе не меньш ніж 128 К пам’яті, хоча Лісп може використовувати і до 512 К.

12) Швидкість виконання програм досягається завдяки використанню такої технології, як малі зв’язки змінних, адресні структури даних та замкнені простори вказівників.

13) Визначення функцій автоматично переводяться на "чистий" код або D-код. Процес зворотнього переводу відбувається також автоматично після повернення визначення.

14) Можливості обробки тексту та мови були збільшені шляхом додання ефективних функцій рядків.

15) Написання звичайних шаблонів полегшено за допомогою таблиці сканера Ліспу.

16) Функція сортування SORT використовує надійне, стабільне сортування списків, яке вимагає кількість часу пропорційно nlogn, де n - довжина списку, що сортується.

17) muLISP-символи можуть бути зв’язані, а область пам’яті може бути розподілена для підпрограм на машинній мові.

18) muLISP може бути тимчасово призупинено для того, щоб стартувати який-небудь інший процес, наприклад, редактор текстів, або навіть іншу версію muLISP. Коли цей процес припинає своє виконання, muLISP відновлює роботу.