
- •Домашнє завдання з дисципліни " Обчислювальна техніка та програмування" на тему: "Мова програмування clojure"
- •Можливості мови
- •Основні типи даних
- •Коллекції Clojure
- •Функції:
- •Макроси:
- •Шаблони
- •Робота зі змінними даними
- •Складання блок-схем
- •Основні поняття мови: числа, рядки, ідентифікатори, описи, оператори.
- •Методологія процедурно-орієнтованого програмування
Міністерство освіти і науки України
Національний авіаційний університет
Інститут Інформаційно - Діагностичних систем Кафедра біокібернетики та аерокосмічної медицини
Домашнє завдання з дисципліни " Обчислювальна техніка та програмування" на тему: "Мова програмування clojure"
Виконав:
Студент ІІДС, групи БМ-162
Хонько Олександр Юрійович
Перевірив: Асистент Оникієнко Юрій Юрійович
Київ 201
Зміст:
Мова програмування 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
boxed integers - немаэ підтимки повного набору типів чисел , які є в Сommon Lisp
Система виключень як в Java
Використовуэться погодження про виклики, як в Java
Регістрозалежні ідентифікатори
Незмінна більша частина даних
Користувач не може змінювати синтаксис мови шляхом вводу власних макросів в процедурне читання коду
Спеціальний синтаксис для векторів, регулярних виразів і т.д
Є можливість зв’язання метаданих зі змінними та функціями
Можна реалізувати функції з одним ім’ям і різним набором аргументів
Підтримка лінивих колекцій[5]
З чого складається мова Clojure
Синтаксис мови Clojure схожий до стандартних Lisp мов з підходом коду як даних, коли дані і код мають спільний синтаксис.
Код заисується у вигляді списків, використовуючи префіксну нотацію та представляючи собою синтаксичне дерево. По зрівнянню з Lisp в Clojure введені додаткові сутності:
В мову введений додатковий синтаксис для векторів, відображень та множин(які представляють з себе об’єкти першого класу)
Процедура зчитання коду розпізнає специфічні для Clojure конструкції:
@ - для доступу до змінних даних і різних конструкцій
# - анонімні функції, метадані
Процедура читання також розглядає пробіли і коми між елементами мови як один символ, що розділяє ці елементи.