Lisp
Материал из Поле цифровой дидактики
| Краткое описание языка | LISP (от англ. LISt Processing language — «язык обработки списков», современное написание: Lisp) — семейство языков программирования, программы и данные в которых представляются в виде списков. |
|---|---|
| Компетенции в каких сферах формирует | Computational Thinker |
| Парадигмы программирования | Функциональное программирование |
| Возрастная категория | 17 |
| Назначение языка (Общее / Учебное) | Язык общего назначения |
| Visual_Text_Blocks | Текст |
| Измерение (2D/3D/Tangible) | 2D |
| Область знаний | |
| Открытость продукта | Открытый |
| Address | https://common-lisp.net/ |
| Предки (Ancestors) | IPL |
| Потомки (Descendants) | Scheme, Clojure, Лого, Julia, Snap!, Lua |
| Активность в данный момент | Project is active |
| Доступны ремиксы? | Нет |
| Год создания | 1960 |
| Создатели | Маккарти, Hal Abelson |
| Поясняющее видео | |
| Используется для создания мобильных приложений? | Нет |
- Lisp упоминается в свойствах следующих страниц
- Structure and Interpretation of Computer Programs, Искусственный интеллект, Программирование на языках высокого уровня, Рекурсия, Функциональное программирование
Создавался как язык для работы в области искусственного интеллекта
Основная структура данных Лиспа — динамический список атомов, определяемый рекурсивно как головной объект и присоединённый к нему список-хвост. Поскольку голова списка тоже может быть списком, список является формой представления произвольного дерева (сам список верхнего уровня — корень, входящие в него подсписки второго и следующих уровней — узлы, атомы — листья).
Видео пояснение
https://www.youtube.com/watch?v=-J_xL4IGhJA
Lisp - Snap!
- Snap! позволяют сохранять свои блоки команд в виде команд Lisp
(
(receiveOnClone)
(set ID
(data [length]
(my "[other sprites]")
)
)
(goto "[random position]")
(say
(get ID)
)
)
Перевод между языками
| Lisp | Snap! |
|---|---|
(
(receiveOnClone)
(goto Alonso)
(head
(attribute [direction] Alonso)
)
(show)
(until
(touch [edge]) (
(move 1)
(if
(touch cat) (
(set Alonso_Energy
(+
(get Alonso_Energy) 1
)
)
(wait 0.1)
(removeClone)
)
)
)
)
(removeClone)
)
|
Пояснения к синтаксису
(* (+ 1 2) (- 3 4))
(defun my-copy-tree (D)
(cond ((null D) nil)
((atom D) D)
(t (cons (my-copy-tree (car D))
(my-copy-tree (cdr D))))))
