Как стать автором
Обновить
0
Рейтинг

Lisp *

Старейший высокоуровневый язык программирования

Сначала показывать
Порог рейтинга

Цитирование в языках программирования

.NET *Lisp *C# *F# *

Задачу я встретил, решая упражнения из книги Структура и Интерпретация Компьютерных Программ).

Раздел 2.3 посвящён цитированию в LISP и символическим вычислениям.

Обычные — несимволические — вычисления сводятся к расчётам с помощью арифметических операций. Если я попрошу вас вычислить производную функции x^2в точке x=17, вы можете сделать это по формуле при каком-нибудь не очень большом значении dx.

Подробнее о символических вычислениях
Всего голосов 23: ↑23 и ↓0 +23
Просмотры 8.5K
Комментарии 22

Новости

Язык-головоломка Marthue

Open source *Занимательные задачки Lisp *Алгоритмы *Разработка под Linux *
Tutorial

Предлагаю читателям Хабра "эзотерический" язык программирования, обобщающий нормальные алгоритмы Маркова (НАМ) и полусистемы Акселя Туэ (semi-Thue systems). В языке есть возможность интерактивного ввода и вывода, выбора поиска замены подстрок с начала, конца строки или случайным образом, условного рекурсивного вызова одного блока подстановок из другого, а также условного перехода между блоками. Это позволяет совмещать подстановку строк с элементами императивного и даже функционального программирования, а также исследовать недетерминированные алгоритмы.

Интерпретатор написан под Линуксом на языке Common Lisp, который я считаю одним из самых мощных и удобных, в том числе для экспериментальногого программирования. При желании большого труда не составит переписать его на любом популярном языке: например, сделать онлайновую версию в Javascript. Просто для запуска программ Лисп знать практически не нужно: достаточно инсталлировать любую версию Common Lisp и ввести нужный файл парой простых функций. Скачать репозиторий интерпретатора Marthue можно здесь.

Читать далее
Всего голосов 5: ↑4 и ↓1 +3
Просмотры 1.5K
Комментарии 0

Как начать писать приложения на ClojureDart

Разработка под iOS *Lisp *Разработка под Android *Clojure *Flutter *

16 апреля зарелизился ClojureDart, а это значит, что для любителей Clojure открылась возможность писать мобильные, веб- и десктоп-приложения на Flutter. Зачем использовать для этого Clojure, как бы очевидно это ни было, выходит за границы фокуса статьи.

На текущий момент инструменты еще не отшлифованы, нет репла(!) и автодополнений для dart-интеропа, но пользоваться можно, и некоторые плюшки кложуры уже показали себя (например, nest-макрос, убирающий проблему вложенности).

В этой статье хочу рассказать, как написать свое первое flutter-приложение на Clojure, какими инструментами удобно пользоваться, где искать ответы на вопросы. Статья для тех, кто имеет хотя бы минимальный опыт работы с Clojure.

Читать далее
Всего голосов 10: ↑9 и ↓1 +8
Просмотры 3.5K
Комментарии 2

Библиотека для создания веб-приложений OMGlib, как это работает?

Lisp *

В предыдущем посте я, немного сумбурно, рассказал про библиотечку OMGlib, которая позволяет создавать полностью динамические веб-приложения. Вкратце, идея состоит в следующем: приложение использует браузер для взаимодействия с пользователем, для этого браузер открывает WebSocket-соединение с сервером, после чего просто выполняет получаемый от него javascript-код, отправляя результаты обратно через это же соединение. Все DOM-элементы при этом создаются динамически, через соответствующие функции javascript, без использования HTML вообще. Также, сервер может создавать функции в браузере и вызывать их, сгружая, таким образом, всю логику и механику, связанную с интерфейсом, прямо в браузер. Библиотечка реализована на языке Common Lisp, развитая система макросов которого позволяет писать код единообразно, просто помечая часть функций как browser-side, а компиляция их в JS происходит при помощи JSCL прозрачно для программиста.

Казалось бы, что тут может пойти не так?
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 3K
Комментарии 10

LISP-пакет OMGlib или вперёд к Web 3.0

Lisp *

Я довольно много программирую, но результатом моей работы обычно
является то, что программа выдает, а не сама программа, как таковая.
Потому, как правило, все мои программы консольные и не имеют никакого
интерфейса. Однако, иногда интерфейс всё же нужен и я в таких случаях
обычно конструирую простейший web-фроненд, бесконечно страдая в рамках
модели MVC. Однажды, размышляя над эволюцией мировой Сети я подумал, а
почему бы не довести идею сайта-как-приложения до логической
завершенности, отказавшись от HTML вообще?

И тут мне в руки попался Common Lisp...
Всего голосов 18: ↑17 и ↓1 +16
Просмотры 3.2K
Комментарии 13

Удивительное приключение в стране оптимизирующих компиляторов

Python *Программирование *C++ *Lisp *C *

Приглашаю вас в небольшое приключение выходного дня, в котором никто никому ничего не будет доказывать. Мы просто будем реализовывать один и тот же несложный алгоритм, разыскивающий простые числа в некотором диапазоне, на нескольких языках программирования: C, C++, Scheme и Python - и смотреть, что этим кодом могут сделать современные оптимизирующие компиляторы. В процессе приключения мы увидим, что «динамический» не означает «совсем уж медленный», и посмотрим на приёмы программирования на Scheme, что, как мне кажется, можно сравнить с путешествием на экзотический остров.

Читать далее
Всего голосов 66: ↑64 и ↓2 +62
Просмотры 23K
Комментарии 82

Delinking и Lisp

Программирование *Lisp *

Экономический термин delinking впервые (насколько я смог отследить) использовал Самир Амин в работе 1984-го года Delinking: Towards a Polycentric World для обозначения процесса выхода из системы глобального разделения труда. По многочисленными (для нашего немногочисленного Lisp сообщества) просьбам сообщников делюсь своим частным рассуждением о потенциале Lisp-систем в условиях delinking-а с более широкой аудиторией. Это мнение из категории «просто подумалось на досуге», оно не является абсолютно объективной истиной, но, вероятно, может представлять некоторый интерес.

Читать далее
Всего голосов 21: ↑17 и ↓4 +13
Просмотры 4.1K
Комментарии 47

Nanopass или как я писал компилятор этой осенью

Lisp *Компиляторы *Функциональное программирование *

image


Сразу прошу прощения за несколько надоевший всем стиль «lytdybr», но уж очень хочется поделиться крайне приятным опытом и рассказать о по-своему замечательном компиляторном курсе. И это ещё хорошо, что я пишу сейчас, когда эмоции подугасли, а не когда я только закончил вторую главу курса и от эйфории чувствовал себя как «хомячок, которого капля никотина разрывает на части»! Сразу предупреждаю, наверняка для кого-то эта заметка — «ребёнок познаёт мир», тех прошу сразу закрыть вкладку и не судить строго. Здесь и далее, всегда и всюду, во всех четырёх сферах прошу учитывать, что я не только не создаю компиляторы, но даже и не обучаю этому и не пишу методички! ;-)

Читать дальше →
Всего голосов 29: ↑29 и ↓0 +29
Просмотры 4K
Комментарии 25

Как заменить себя скриптом. Часть 1. Режимы коротких замыканий в электросети с применением OpenCL

Delphi *Lisp *Энергия и элементы питания Инженерные системы *


Длительная однообразная работа неизбежно вызывает приступы автоматизации. На этот раз предпримем попытку автоматизировать настройку устройств защиты электросетей напряжением 6 — 35 кВ.

Самозародившаяся задача требует расчёта коротких замыканий, а поскольку расчётов таких предвидится немало, выполнять их будем с помощью OpenCL, для должной утилизации имеющихся вычислительных мощностей.
Читать дальше →
Всего голосов 14: ↑14 и ↓0 +14
Просмотры 3.2K
Комментарии 17

«Ижора»: клеточный автомат-компьютер

Open source *Занимательные задачки Lisp *Алгоритмы *DIY или Сделай сам
Из песочницы
Tutorial

Хотелось бы поделиться с читателями Хабра довольно необычной разработкой: настоящим компьютером, сделанном в виде клеточного автомата, действующего по простому правилу Fireworld2 с четырьмя состояниями клеток. Текущая базовая версия компьютера называется "Ижора 1". Еще с 1950-х годов существует такая традиция: давать компьютерам географические названия.

Паттерн, состоящий из более 6 миллионов клеток, содержит 256 килобайт памяти и снабжен монохромным экраном 128x64 пикселей, отражающим состояние экранного раздела ОЗУ, примерно как в ZX Spectrum и других популярных исторических моделях персональных компьютеров. Программы можно писать на ассемблере, компилировать в машинный код, тестировать на эмуляторе и вводить специальной утилитой в сам клеточный автомат. Другая утилита позволяет сохранять текущее состояние компьютера. Для запуска компьютера необходима программа Golly - лучшая на сегодня площадка для подобного рода исследований.

Ассемблер и эмулятор написаны на языке Common Lisp, скрипты для ввода программ в сам клеточный автомат и сохранения его состояния - в Python. Компьютер имеет 32-битную архитектуру и на данный момент в нем все один регистр и одна операция: вычитание с условным переходом в случае отрицательного или нулевого результата (Subleq). Несмотря на примитивность такой модели, давно доказана ее универсальность. Существует даже операционная система Dawn OS, написанная для эмулятора Subleq-процессора.

Итак, суммируем: виртуальный компьютер с экзотической моделью программирования и ресурсами уровня древних ПК 1980-х, исполняющий всего около 10 операций в секунду, требующий современный компьютер с несколькими гигабайтами памяти (рекомендуемый минимум - 8 гигабайт), с эмулятором и ассемблером на Лиспе. Зачем и кому это нужно? Очень краткий ответ: ради хака и ретрокомпьютинга. Ниже - более подробно.

Читать далее:
Всего голосов 40: ↑40 и ↓0 +40
Просмотры 7.7K
Комментарии 26

А вы знаете, где сейчас используется Лисп?

Блог компании Typeable Программирование *Lisp *Функциональное программирование *

Введение


Лисп — второй по старшинству из ныне живых высокоуровневых языков программирования (после Fortran) и первый функциональный язык. Он был разработан в 1958 году и сильно изменился с тех пор, породив множество диалектов и оказав значительное влияние на развитие других языков. На данный момент наиболее известные диалекты: Common Lisp, Scheme, Racket и Clojure.



Слева: Лисп-машина в музее MIT.
Справа: Лисп-машина Symbolics 3640, фото Michael L. Umbricht и Carl R. Friend (Retro-Computing Society of RI)


Лисп стал “первооткрывателем” многих идей, нашедших применение в современных языках программирования: древовидные структуры, динамическая типизация, функции высшего порядка и многое другое. В этом посте мы не будем углубляться во вклад Лиспа в теорию, а сосредоточимся на практической пользе.


Изначально Лисп предназначался для работ в области искусственного интеллекта, в частности как представление математической нотации для символьных вычислений. Но насколько широко диалекты Лиспа используются сейчас и в каких областях применяются?


Мы в Typeable любим и применяем функциональное программирование, а влияние Лиспа на функциональные языки всё ещё сильно, поэтому нам стало интересно разобраться в этом вопросе.

Читать дальше →
Всего голосов 48: ↑46 и ↓2 +44
Просмотры 27K
Комментарии 48

Мемоизация в Лиспе

Lisp *

В заметке подробно рассматривается суть понятия "мемоизация" и разбирается работоспособная версия мемоизации произвольных функций Лиспа. Предполагается, что читатель знаком с Лиспом. Тем не менее, "тонкие места" разбираются достаточно подробно.

Читать далее
Всего голосов 18: ↑18 и ↓0 +18
Просмотры 4K
Комментарии 16

Тернистая история Лисп-машин: первый бум AI, война Столлмана и удивительный интерфейс

Блог компании Яндекс Lisp *Компьютерное железо История IT Старое железо
Привет! Меня зовут Павел Анохин, я сооснователь и один из кураторов музея Яндекса. Хочу поделиться историей, связанной с нашим экспонатом — редкой платой с Лисп-процессором Symbolics. История эта уходит корнями в далёкое прошлое компьютерной эры — 70-е, времена огромных ЭВМ и первого бума интереса к искусственному интеллекту, продолжается в 80-е, когда Ричард Столлман воевал с компанией Symbolics за право открытого доступа к софту, и заканчивается в 90-х, когда ниша для применения Лисп-машин стала совсем узкой, а небольшие производители компьютеров пали под натиском крупных корпораций. Надеюсь, вам будет интересно узнать обо всём этом больше, а также посмотреть, как работает главный интерфейс Лисп-машины — Listener. Специально для статьи я записал видео с примерами создания несложных программ.


Лисп-плата из музея Яндекса
Читать дальше →
Всего голосов 57: ↑57 и ↓0 +57
Просмотры 14K
Комментарии 41

Lisp для микроконтроллеров

Блог компании Маклауд Lisp *Программирование микроконтроллеров *Лайфхаки для гиков
Перевод


Lisp для плат Arduino, Adafruit M0/M4, Micro:bit, ESP8266/32, RISC-V и Teensy 4.x.

Новость!


ARM версия 3.6b теперь поддерживает save-image (сохранение образа) на всех платах ATSAMD21 

В последнем релизе ARM uLisp, версия 3.6b, можно сохранять образ всего вашего рабочего пространства Lisp во флэш-память плат ATSAMD21, на которых не предоставляется отдельный чип DataFlash.

Таким образом, поддержка save-image добавляется к Adafruit Neo Trinkey, Adafruit Gemma M0, Adafruit Feather M0, Arduino Zero, Arduino MKRZero и Seeedstudio Xiao M0.

uLisp — это версия языка программирования Lisp, специально спроектированная для работы на микроконтроллерах с ограниченным объемом ОЗУ, от Arduino Uno на основе ATmega328 до Teensy 4.0/4.1. Независимо от платформы, можно использовать ровно одну и ту же программу на uLisp.

Поскольку uLisp – это интерпретатор, в него можно вводить команды и сразу наблюдать результат, без необходимости сначала компилировать программу, а потом загружать. Таким образом, эта среда идеально подходит для обучения программированию или для подготовки к работе простых электронных устройств.

Кроме того, язык Lisp идеально подходит для изучения фундаментальных концепций программирования. В нем предусмотрена работа со строками, обработка списков и сборка мусора, а также этот язык отлично подходит для выражения сложных идей – например, научить робота выбираться из лабиринта или найти кратчайший путь на карте. uLisp не только поддерживает базовый набор функций Lisp, но и содержит расширения для Arduino, поэтому данный язык идеально подходит для управления Arduino.
Читать дальше →
Всего голосов 39: ↑37 и ↓2 +35
Просмотры 5.7K
Комментарии 0

Анонсирован Scheme Workshop 2021

Lisp *Функциональное программирование *Исследования и прогнозы в IT *Образование за рубежом Научно-популярное
Перевод

Этот пост представляет собой перевод анонса Международной Научно-Прикладной конференции Scheme Workshop 2021.

Для тех, кто не ходит под кат:

Тема конференции -- Lisp, Scheme, Emacs, и другие родственные языки, а также преподавание программирования.

Приём и рецензирование докладов продлится до 26 июня.

Сама конференция состоится 27 августа 2021 года, одновременно с Международной Конференцией по Функциональному Программированию.

Допускаются как научные доклады, так и практические отчёты, и обзоры.

Перевод анонса
Всего голосов 2: ↑2 и ↓0 +2
Просмотры 830
Комментарии 2

Effective Programs (10 Years of Clojure) — Rich Hickey (с русским переводом)

Java *Анализ и проектирование систем *Lisp *Проектирование и рефакторинг *Конференции
Перевод
Всем привет!

Я сделал перевод и набил субтитры на доклад Рича Хикки — Effective Programs (10 Years of Clojure) — Эффективные программы (10 лет Clojure). Впервые на русском языке.

Доклад был представлен в 2017 году на конференции Clojure Conj.
Читать дальше →
Всего голосов 4: ↑4 и ↓0 +4
Просмотры 2.1K
Комментарии 2

Рисуем фракталы Мандельброта с помощью языка GIMP Script-Fu

Блог компании SkillFactory Ненормальное программирование *Lisp *Математика *
Перевод
Tutorial


Программа GNU Image Manipulation Program (GIMP) – моё решение проблемы редактирования изображений. Набор инструментов у этого редактора очень мощный и удобный, за исключением инструментов, чтобы генерировать фракталы, которые нелегко нарисовать вручную. Фракталы – увлекательные математические конструкции, обладающие свойством самоподобия. Другими словами, если их увеличить в любой области, они будут удивительно похожи на картину до увеличения. Помимо того, что они интересны, они также делают очень красивые картинки!

Приятного чтения!
Всего голосов 10: ↑10 и ↓0 +10
Просмотры 3.2K
Комментарии 0

Что не так с Лиспом?

Программирование *Lisp *Emacs *Clojure *
Перевод

Я попытаюсь проанализировать некоторые часто повторяющиеся критические замечания в адрес Lisp, чтобы пролить свет на этот вопрос и на то, почему его так часто задают.

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

Так что же не так с лиспом?
Всего голосов 29: ↑20 и ↓9 +11
Просмотры 15K
Комментарии 207

Почему я остаюсь с Лиспом (и вам тоже стоит)

Программирование *Lisp *История IT
Перевод

Зрелый язык может использоваться немногими. Но он остаётся частью моей кодовой базы.

Как давнего пользователя (и активного сторонника) Scheme/Common Lisp/Racket, меня иногда спрашивают, почему я предпочитаю их. К счастью, я всегда возглавлял собственные инженерные организации, поэтому мне никогда не приходилось оправдывать это перед руководством. Но есть еще более важная аудитория - мои собственные коллеги-инженеры, которые никогда не имели удовольствия использовать эти языки. Хотя им не требуются оправдания, они все же спрашивают из интеллектуального любопытства, а иногда и из-за удивления, почему я не схожу с ума по поводу следующей крутой функции, которая будет в этом месяце добавлена в Python или Scala, или что бы там ни было в их вкусе.

Читать далее
Всего голосов 40: ↑32 и ↓8 +24
Просмотры 12K
Комментарии 136

Итоги двух лет изучения «Structure and Interpretation of Computer Programs»

Lisp *Функциональное программирование *Профессиональная литература *Учебный процесс в IT Читальный зал
Из песочницы
✏️ Технотекст 2021


Я считаю, что разработка ПО в значительной степени заключается в программировании на псевдокоде. Если ты представил псевдокод, то перевести его на Python, C, что угодно — не проблема. Основная сложность заключается вот в этой концептуальной деятельности, а не в кодировании. Нужно знать, как подходить к тем или иным вопросам. Модульность, абстракция. Гибкость, надёжность, простота. Шаблоны проектирования. Юнит-тестирование. Ю ноу.

Есть на свете курс «Структура и Интерпретация Компьютерных Программ» (далее СИКП), который позиционируется как введение в Computer Science и ранее использовался в MIT для обучения первокурсников. Два года назад я с удовольствием одолел курс лекций по нему и взялся за книгу.
Читать дальше →
Всего голосов 14: ↑13 и ↓1 +12
Просмотры 9.7K
Комментарии 5

Вклад авторов