Lisp: различия между версиями

Материал из Поле цифровой дидактики
Нет описания правки
 
(не показано 6 промежуточных версий этого же участника)
Строка 1: Строка 1:
{{Карточка языка программирования
{{Карточка языка программирования
|Description=LISP (от англ. LISt Processing language — «язык обработки списков», современное написание: Lisp) — семейство языков программирования, программы и данные в которых представляются в виде списков.
|FieldActivity=Computational Thinker
|FieldActivity=Computational Thinker
|Programming paradigm=Функциональное программирование
|Возрастная категория=17
|Возрастная категория=17
|Dimension=2D
|Dimension=2D
Строка 7: Строка 9:
|Openness=Открытый
|Openness=Открытый
|Address=https://common-lisp.net/
|Address=https://common-lisp.net/
|Descendants=Scheme, Clojure, Лого, Julia
|Ancestors=IPL
|Descendants=Scheme, Clojure, Лого, Julia, Snap!, Lua
|ActiveNow=Project is active
|ActiveNow=Project is active
|Remixing=Нет
|launch year=1960
|Inventor=Маккарти, Hal Abelson
|ForMobileApps=Нет
|Год создания=1958
|Год создания=1958
|Inventor=Маккарти
|Ages=25
|Ages=25
|Remixing?=No
|Remixing?=No
Строка 18: Строка 24:
Основная структура данных Лиспа — динамический [[список]] атомов, определяемый рекурсивно как головной объект и присоединённый к нему список-хвост. Поскольку голова списка тоже может быть списком, список является формой представления произвольного дерева (сам список верхнего уровня — корень, входящие в него подсписки второго и следующих уровней — узлы, атомы — листья).
Основная структура данных Лиспа — динамический [[список]] атомов, определяемый рекурсивно как головной объект и присоединённый к нему список-хвост. Поскольку голова списка тоже может быть списком, список является формой представления произвольного дерева (сам список верхнего уровня — корень, входящие в него подсписки второго и следующих уровней — узлы, атомы — листья).


=== Видео пояснение  ===
https://www.youtube.com/watch?v=-J_xL4IGhJA
=== Lisp - Snap! ===
* [[Snap!]] позволяют сохранять свои блоки команд в виде команд Lisp
<syntaxhighlight lang="lisp">
(
    (receiveOnClone)
    (set ID
        (data [length]
            (my "[other sprites]")
        )
    )
    (goto "[random position]")
    (say
        (get ID)
    )
)
</syntaxhighlight>
==== Перевод между языками ====
{| class="wikitable"
|-
! Lisp !! Snap!
|-
| <syntaxhighlight lang="lisp">
(
    (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)
)
</syntaxhighlight> ||
[[Файл:Alonso pattern keys.png|400px]]
|-
|}
=== Пояснения к синтаксису ===
<syntaxhighlight lang="Lisp" inline>
<syntaxhighlight lang="Lisp" inline>
(* (+ 1 2) (- 3 4))
(* (+ 1 2) (- 3 4))
</syntaxhighlight>
----
<syntaxhighlight lang="lisp">
(defun my-copy-tree (D)
  (cond ((null D) nil)
        ((atom D) D)
        (t (cons (my-copy-tree (car D))
                (my-copy-tree (cdr D))))))
</syntaxhighlight>
</syntaxhighlight>


[[Категория:Язык программирования]]
[[Категория:Язык программирования]]

Текущая версия от 15:22, 7 марта 2025


Краткое описание языка 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))))))