{"id":14284,"url":"\/distributions\/14284\/click?bit=1&hash=82a231c769d1e10ea56c30ae286f090fbb4a445600cfa9e05037db7a74b1dda9","title":"\u041f\u043e\u043b\u0443\u0447\u0438\u0442\u044c \u0444\u0438\u043d\u0430\u043d\u0441\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u0430\u043d\u0446\u044b \u0441 \u0441\u043e\u0431\u0430\u043a\u0430\u043c\u0438","buttonText":"","imageUuid":""}

Chialisp: язык для любителей олдскула?

Что вы знаете о Chialisp? Вот я о нём узнал больше, чем хотел бы, буквально недавно. Сижу спокойно, никого не трогаю. И тут коллега вбегает в комнату, размахивая ноутбуком:

- Смотри, нет ты посмотри! Этот @*&@$# Chialisp похож на Assembler!!!

Следующие полчаса мы разбирались, что происходит с округлением, если попробовать разделить натуральное число на отрицательное. Или отрицательное число на положительное.
Спойлер: результат округляется не как обычно в математике - или в одну, или в другую сторону, а всегда в сторону следующего наибольшего по модулю числа.

В голове крепло непонимание: почему в 2021 году, когда существует столько современных удобных языков, Chia предлагает писать смарт-коины на диалекте языка... КОТОРОМУ 60 ЛЕТ?!

Код на Chialisp выглядит вот так:

(mod (password new_puzhash amount)
(defconstant CREATE_COIN 51)

(if (= (sha256 password) (q . 0x2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824))
(list (list CREATE_COIN new_puzhash amount))
(x)
)
)

А вот так выглядит код на CLVM:

$ brun '(i (= (q . 50) (q . 50)) (+ (q . 40) (q . 30)) (q . 20))' '()'
70

CLVM - это версия Chialisp, которую непосредственно понимает сеть Chia. Собственно, вы пишете на Chialisp, а потом код компилируется в CLVM и в таком виде исполняется. Поэтому, если вы решили что-то написать на Chialisp, надо сначала приобщиться к CLVM.

Так почему Lisp?

На официальном сайте Chia разработчики пишут, что выбрали его "из-за нескольких уникальных особенностей, которые делают его удивительно хорошо подходящим для блокчейна Chia":

1) "Песочница"
Использование ресурсов Chialisp полностью контролируется. Язык должен быть запущен на полумиллионе компьютеров, поэтому важно, чтобы программа не могла охватить и непреднамеренно повлиять на машины каждого. Программа на Lisp оценивается и поэтому не может порождать новые процессы или взаимодействовать с системой, на которой она запущена.

2) "Матрёшка"
Программа на Lisp сама по себе является просто списком. Эта особенность позволяет использовать методы, позволяющие изменять исходный код во время выполнения программы. Например, можно позволить смарт-коину диктовать определённые правила другой монете. Можно создавать уровни смарт-коинов, в которых результаты "внутреннего" puzzle могут быть использованы для оценки "внешнего" puzzle.

3) Оперативная совместимость
Каждый смарт-коин в экосистеме Chia, независимо от его степени сложности, по своей сути является монетой, в которую заложен puzzle Chialisp. Входом любого puzzle всегда будет структура данных на языке Lisp, а выходом - список условий, которые все puzzle разделяют. Это означает, что всё в Chia взаимодействует со всем остальным. Любой смарт-коин должен иметь возможность взаимодействовать с любым другим смарт-коином, независимо от того, был ли он специально разработан для этого.

Звучит похоже на рациональные доводы. Но есть кое-что ещё.

Ведь Бог писал на Lisp...

Lisp - культовый язык программирования. Его создали в конце 50-х для исследований в области ИИ. Для своего времени это был прорыв!

Кроме того, Lisp (точнее - Scheme, его диалект) на протяжении почти 20 лет был первым языком программирования, с которым знакомились студенты Массачусетского технологического. Так что я бы не исключал сентиментальной привязанности... В общем, Lisp - это целое культурное явление. Мемасы рисуются до сих пор.

Голосуйте за Lisp! Сделаем программирование великим снова!
Что, если я скажу тебе... что, когда ты достигнешь lisp-просветления, ты больше не будешь видеть скобки

Ведь Бог писал на Lisp,
Когда заполнил листья зелёным.
Фрактальные цветки и рекурсивные корни:
Самый красивый хак из виденных мною.
А когда я изучаю снежинки,
И не нахожу двух одинаковых,
Я знаю, что Бог любит язык
Со своим собственным четырёхбуквенным названием
(...)
И Бог написал на Lisp все творения великие и малые.
Не ищите на диске файл man.c, когда список висит на стене.
И когда я вижу, как молния сжигает неверующих дотла,
Я знаю, что у Бога было шесть дней на работу.
Поэтому он написал все это на языке Lisp.
Да, у Бога был дедлайн. Поэтому он написал все это на языке Lisp.

Пародия Боба Канефского на песню «God Lives on Terra»

А вы пробовали Lisp?

0
1 комментарий
svetlyak40wt

Почему тут так мало лайков и ни одного коммента? Lisp крут. Постоянно использую его на своих проектах, но только Common Lisp.

Ответить
Развернуть ветку
-2 комментариев
Раскрывать всегда