Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
мова програмування Clojure. Процедурна парадигм...docx
Скачиваний:
0
Добавлен:
01.07.2025
Размер:
185.47 Кб
Скачать

Міністерство освіти і науки України

Національний авіаційний університет

Інститут Інформаційно - Діагностичних систем Кафедра біокібернетики та аерокосмічної медицини

Домашнє завдання з дисципліни " Обчислювальна техніка та програмування" на тему: "Мова програмування clojure"

Виконав:

Студент ІІДС, групи БМ-162

Хонько Олександр Юрійович

Перевірив: Асистент Оникієнко Юрій Юрійович

Київ 201

Зміст:

  1. Мова програмування CLOJURE

1,1)Загальні відомості про мову ст.. 2-4

1,2)Можливості CLOJURE та відмінності мови від LISP ст.. 4- 5

1,3)Базові типи даних та конструкції мови ст. 5-7

1,4)S вирази, можливості мови ст.. 7-8

1,5)конструкції мови ст. 9-15

2)Процедурна парадигма програмування

2,1) Структурний підхід до алгоритмізації ст 16-17

2,2)Процедурні мови програмування ст.. 17

2,3) Характеристика процедурних мов програмування. Алфавіт

Ст..17-20

2,4)Методологія процедурно-орієнтованого програмування ст..20-22

Висновки ст.. 31

Список використаної літератури ст.. 32

Рис 1.1 Логотип фірми Clojure

Clojure (вимовляється приблизно клоджер, так само як англ. closure - Замикання) — сучасний діалект мови програмування Lisp , розроблений для Java Virtual Machine. Автором мови є Річ Хікі, який власноруч розробляв цю мову декілька років, вплоть до випуску першої публічної версії.[2]

Робота з CLOJURE

Все, що вам потрібно для роботи з Clojure, - це JDK і бібліотека Clojure, яка міститься в одному JAR-файлі. Існує два стандартних способу розробки і запуску програм на Clojure. Найбільш поширений спосіб - це використання простої інтерактивного середовища розробки REPL, циклу «читання-обчислення-друк».

Запуск Clojure REPL

Запуск Clojure REPLфКоманда повинна виконуватися в директорії, де розташований JAR-файл Clojure. Якщо вам це незручно, додайте шлях до відповідного JAR-файлу до своїх стандартним шляхах пошуку. Замість «ручного» запуску команди REPL ви можете написати скрипт, який буде виконувати цю команду, і просто запускати свій скрипт. Для цього вам треба буде викликати Java-клас clojure.main.

$ java -cp clojure-1.0.0.jar clojure.lang.Repl

Clojure 1.0.0-

user=>

Виклик clojure.main.

$ java -cp clojure-1.0.0.jar clojure.main /some/path/to/Euler1.clj

233168

Не забудьте визначити шлях до JAR-файлу Clojure і до вашого скрипту. Нарешті, існує інтегрована середовище розробки для

. Користувачі Eclipse можуть завантажити і встановити плагін clojure-dev. Після встановлення плагіну перемкніться в Java-перспективу. Тепер ви можете створити новий Clojure-проект і додати в нього файли з вихідним кодом Clojure, як показано на малюнку:[4]

\

Мал. 1.2 Запуск Clojure

Можливості мови

1)Компільована мова, що генерує байткод для JVM

Компільована мова програмування — мова програмування, в якій сирцевий код перед виконанням повністю перетворюється в машинний код, і записується в файл, з особливим заголовком і/або розширенням, для ідентифікації цього файлу, як виконуваного, операційною системою. Основою реалізації компільованої мови є компілятор, який переводить сирцевий код в форму машинного коду.

2) Тісна інтеграція з Java: відкомпільовані в байткод JVM, програми на Clojure можуть пакуватися та запускатися на JVM-серверах без додаткових ускладнень. Мова також надає макроси, які полегшують використання існуючих Java API.

3) Динамічна розробка з використанням REPL

REPL (Read-eval-print loop — цикл читання-обчислення-друку) — просте інтерактивне середовище програмування. В такому середовищі користувач може вводити вирази, які середовище одразу обчислить, а результат обчислень відобразить користувачеві. Назва read-eval-print loop походить від імен примітивів мови Lisp, що реалізують таку функціональність:

4) Функції як об'єкти першого класу

Об'єкт називають "об'єктом першого класу" коли він :

А) може бути збережений в змінної або структурах даних

Б)може бути переданий в функцію як аргумент

В) може бути повернений з функції як результат

Г) може бути створений під час виконання програми

Д) внутрішньо самоідентифікуєма (незалежний від іменування)

5) Наголос на рекурсії замість циклів з побічним ефектом

Рекурсія (лат. Recursion)— виклик функції чи процедури з неї самої (звичайно з іншими значеннями вхідних параметрів) безпосередньо чи через інші функції (наприклад, функція А викликає функцію B, а функція B — функцію A).

6) Ліниві послідовності

Ліниве програмування - узагальнене поняття для відстрочки обробки функції або запиту до тих пір, поки не знадобляться результати

7) Надає широкий набір незмінюваних персистентних структур даних.Персистентність в програмуванні означає здатність стану існувати довше, ніж процес, що створив його.

8) Паралельне програмування з використанням software transactional memory, система агентів, система динамічних змінних[3]

Відмінності від Lisp

  1. boxed integers - немаэ підтимки повного набору типів чисел , які є в Сommon Lisp

  2. Система виключень як в Java

  3. Використовуэться погодження про виклики, як в Java

  4. Регістрозалежні ідентифікатори

  5. Незмінна більша частина даних

  6. Користувач не може змінювати синтаксис мови шляхом вводу власних макросів в процедурне читання коду

  7. Спеціальний синтаксис для векторів, регулярних виразів і т.д

  8. Є можливість зв’язання метаданих зі змінними та функціями

  9. Можна реалізувати функції з одним ім’ям і різним набором аргументів

  10. Підтримка лінивих колекцій[5]

З чого складається мова Clojure

Синтаксис мови Clojure схожий до стандартних Lisp мов з підходом коду як даних, коли дані і код мають спільний синтаксис.

Код заисується у вигляді списків, використовуючи префіксну нотацію та представляючи собою синтаксичне дерево. По зрівнянню з Lisp в Clojure введені додаткові сутності:

В мову введений додатковий синтаксис для векторів, відображень та множин(які представляють з себе об’єкти першого класу)

Процедура зчитання коду розпізнає специфічні для Clojure конструкції:

@ - для доступу до змінних даних і різних конструкцій

# - анонімні функції, метадані

Процедура читання також розглядає пробіли і коми між елементами мови як один символ, що розділяє ці елементи.