Официальная группа Вконтакте ателье по пошиву штор Lambrela на улице Кабдолова, 16
LISP: Scheme | Racket | etc6 февраля 2023 в 17:55
В этой диссертации мы представили наш компилятор Racket в WebAssembly. WebAssembly имеет стандартизированную реализацию во всех основных браузерах, при этом исполнительные механизмы существуют во во многих небраузерных средах. Мы внесли свою лепту в привнесение Racket в эту экосистему. Есть много аспектов WebAssembly, которые отличают его от традиционного языка ассемблера, такие как связь с окружением хоста, статическая типизация и структурированный поток управления. типизация и структурированный поток управления. В ходе разработки этого компил… — Читать дальше
ятора мы обнаружили и решили множество проблем, связанных с компиляцией современного функционального языка в WebAssembly. Мы также представили наши первоначальные результаты по добавлению WebAssembly к текущему бэкенду Racket Chez Scheme. Мы признаем трудности, с которыми могут столкнуться разработчики при переносе существующей архитектуры на Web-Assembly, и представляем решения, которые пытаются преодолеть разрыв между WebAssembly и другими потребностями в языке ассемблера. Мы считаем, что работа, которую мы здесь описали, и представленные решения будут полезны длябудущих команд, портирующих любой язык программирования и надеемся увидеть полную компиляцию Racket в будущем.
LISP: Scheme | Racket | etc13 ноября 2021 в 15:56
Михаил Бахтерев (13.11.2021): Реализовывал некоторую функциональность. Свёртки, развёртки, алгебры, коалгебры, в итоге, всё свелось к простой рекурсии с условием в 4 строчки и двумя переменными (вместо 70+ строчек). Тем языки семейства Lisp и хороши. Они своими скобочками тычут меня носом в излишне навороченную сложность и спрашивают: «кто это накодил!? кто это накодил!?». После чего у меня включается мозг, я беру карандашик и бумажечку, разбираюсь в сути алгоритма, выкидываю всё лишнее из потока данных, обобщаю детали и получаю компактное и кр… — Читать дальше
асивое выражение идеи. В этот момент срабатывает моя система внутреннего вознаграждения. Если судить по исходникам других людей, то они ощущают примерно то же самое. В этом может быть польза Lisp-ов в обучении. Они приучают думать над задачей и алгоритмом, обобщать детали, отсекать несущественное, получать в итоге чистое выражение идеи. По моим внутренним ощущениям, это больше похоже на математику, которой меня учили. Хотя, возможно, тут причинно следственная связь в другом направлении. Меня интенсивнее учили прикладной математике, поэтому мой мозг привык к такому образу мысли, и когда Lisp заставляет действовать привычным образом, мозги радуются этому. Ага-эффект! Возможно, если бы меня больше учили топологии, логике и абстрактной математике (а нас даже алгебре учили по книге «Прикладная абстрактная алгебра»), мне бы больше заходил Haskell.
LISP: Scheme | Racket | etc14 марта 2021 в 7:48
Древнейшая LISP программа была обнаружена на острове Пасхи:
LISP: Scheme | Racket | etc14 февраля 2021 в 8:16
Марк Уотсон выкладывает в паблик свои книжки, в числе которых — «Loving Common Lisp, or the Savvy Programmer’s Secret Weapon» — «A Lisp Programmer Living in Python-Land: The Hy Programming Language» — «Practical Semantic Web and Linked Data Applications, Common Lisp Edition»
LISP: Scheme | Racket | etc12 февраля 2021 в 11:47
Сделал перевод «Почему я остаюсь с лиспом (и вам тоже стоит)»
LISP: Scheme | Racket | etc9 февраля 2021 в 13:46
В пятницу, 12 февраля, в Спейсе (Воронцово поле, 5/7с8, Москва) в 20:00 Филипп Фоминых сделает доклад о Лисп Машинах, в двух частях. Первая часть. История лисп машин от МТИ CONS до Symbolics MacIvory. Техническая специфика разных реализаций. Лисп машины в контексте компьютерной истории, как появились, и почему вымерли. Лисп машины как двигатели раннего технологического прогресса: их роль в развитии теории программирования, аппаратных подходов, компьютерной графики, вычислительных сетей. Вторая часть. Что происходит с лисп машинами сейчас. Демо… — Читать дальше
двух имплементаций, МТИ CADR на базе ПЛИСа и Symbolics Genera в программном эмуляторе. Интерактивное программирование сетевого приложения на лиспе в среде Genera. Демонстрация уникальных возможностей среды, каким образом специфика языка Common Lisp помогает в системном программировании. Автор долгое время занимался профессиональным программированием на языке Common Lisp, а сейчас помогает в сохранении материалов связанных с лисп машинами. В презентации будут использованы неопубликованные материалы архивной работы. Также будет трансляция.
LISP: Scheme | Racket | etc27 января 2021 в 15:00
Хреновые программисты (24.01.2021):
Развернуть
LISP: Scheme | Racket | etc6 октября 2020 в 9:29
CODE BLOG (04.10.2020): Александр Попа Lisp жемчужины программирования К сожалению, многие учебники по Lisp затуманивают ответ на вопрос «А зачем он вообще нужен», пытаясь показать как Lisp похож на другие языки программирования, либо настолько подчеркивают исключительность Lisp, что всё повествование вращается вокруг написания Lisp на нем самом. Ни то ни другое не вызывает у программиста желания изучить этот язык для использования каждый день. Книга написана с целью ответить на этот важный вопрос и пробудить интерес к изучению Lisp
LISP: Scheme | Racket | etc13 апреля 2020 в 11:51
Zёсhe (13.04.2020): Впервые на русском, знаменитый доклад от создателя Clojure, Рича Хикки — Simple Made Easy (Простое сделать лёгким)
LISP: Scheme | Racket | etc15 марта 2020 в 20:32
LSX — альтернативная нотация для JSX, сделанная на базе Lisp-интерепретатора Lyad (). Примеры кода на LSX в Github проекта: LSX поддерживается расширяемым процессором документов Ménneu (), который позволяет создавать PDF или интерактивные HTML-документы из Markdown/MDX/LSX. Пример рендера Ménneu:
Развернуть
LISP: Scheme | Racket | etc13 марта 2020 в 20:46
Продолжает развиваться транспилятор Scheme-подобных выражений в JavaScript — sescript, базирующийся на Guile: (lambda () (if* a b c)) -> (function(){return(a?b:c)}); Сайт автора: По моей просьбе, автор любезно предоставил код на github:
LISP: Scheme | Racket | etc13 марта 2020 в 20:04
Hop.js — «Многоуровневый JavaScript» — платформа, позволяющая писать гибридные клиент-серверные приложения с поддержкой React, как на диалекте Javascript, так и на варианте Scheme. Сайт: Описание на Scheme: Github: service stateful() { return <html> ~{ var state = hop.reactProxy({ secondsElapsed: 0 }); setInterval(function() { state.secondsElapsed++; }, 1000); } <div>Seconds Elapsed: <react>~{ state.secondsElapsed }</react></div> </html> } Гибридность Hop.Js выражается в том, что код идущий за тильдой (~) выполняется на клиенте, а прочий -… — Читать дальше
на сервере.
LISP: Scheme | Racket | etc22 декабря 2019 в 15:20
Не допускай бесчестных мыслей. Путь — в упражнении. Познакомься с каждым искусством. Различай выигрыш и потерю. Развивай интуитивное понимание. Прозревай невидимое. Обращай внимание даже на заурядное. Не делай ничего бесполезного. (М. Мусаши — «Книга Земли», XV в.)
LISP: Scheme | Racket | etc3 мая 2019 в 8:57
Guix 1.0, товарищи, ура! Официальный релиз: О списке нового в дистрибутиве, по-русски уже можно прочитать на OpenNet: Русскоязычный канал о Guix в Telegram:
Показать
еще 1 фото
LISP: Scheme | Racket | etc10 апреля 2019 в 12:22
Lisp Game Jam начинается ч-з неделю и продлится 10 дней! После окончания, у всех есть 3 дня, чтобы поиграть и проголосовать за победителя.
LISP: Scheme | Racket | etc24 марта 2019 в 23:07
Лисп-машина в кармане
LISP: Scheme | Racket | etc24 марта 2019 в 19:09
Лисп на мобильной игровой консоли от SONY
LISP: Scheme | Racket | etc24 марта 2019 в 19:06
Введение в макросы на Racket — из курса Coursera (с хорошими субтитрами)
LISP: Scheme | Racket | etc27 января 2019 в 11:42
В 12—00 присоединяйтесь: deleted_link
LISP: Scheme | Racket | etc26 января 2019 в 22:39
Это мой новый проект. Интерпретатор лиспа на основе редукций (по типу лямбда-исчисления). В традиционном лиспе редукции невозможны, т.к. выражение (cdr '(a b c)) возвращает (b c), что в свою очередь означает применение функции b к аргументу c. Таким образом видно, что квот в обычном лиспе изменяет денотат выражения. Редукции в лиспе позволяют реализовать очень простую и визуальную систему программирования. Кто-нибудь завтра днем в 12—00 хотел бы поговорить об этом?
LISP: Scheme | Racket | etc10 августа 2018 в 7:07
nEXT — ориентированный на клавиатуру расширяемый веб-браузер, вдохновленный Emacs и предназначенный для опытных пользователей. Приложение имеет знакомые привязки клавиш, полностью настраивается и расширяется посредством Lisp и имеет мощные функции для продуктивных профессионалов.
LISP: Scheme | Racket | etc6 июня 2018 в 10:17
Physics.Math.Code.Books (05.06.2018): Структура и Интерпретация Компьютерных Программ. [EN + RU] Structure and Interpretation of Computer Programs — SICP ═══════════════════ Книга под названием «Структура и Интерпретация Компьютерных Программ» была выпущена в далёком 1979 году. Раньше по ней преподавали вводный курс в программирование среди студентов MIT. Сейчас книга находится в свободном доступе в Интернете, и любой желающий может скачать и изучать её в своё удовольствие. Помимо книги, в сети также есть цикл видео-лекций от авторов, они распо… — Читать дальше
ложены на ресурсе MIT OpenCourseware, мне кажется они могут неплохо дополнять друг друга по ходу изучения материала. Чем же примечательна эта книга? Да хотя бы отзывами на Amazon :) Среди рецензентов есть такие личности как Peter Norvig и Paul Graham. К слову, сейчас у книги рейтинг 3.8 из 5, отчего некоторые известные личности недоумевают. А если серьёзно, то это фундаментальный классический труд в области программирования (ничем не хуже небезызвестной книги The Art of Programming от Д. Кнута, которую никто не читал). Единственным непонятным моментом для меня является факт преподавания курса программирования для новичков по этой книге. Представляю как можно напугать новоиспечённых студентов её содержимым. Интересно, есть ли в сети статистика по которой можно узнать много ли людей, посещавших этот «адский» курс, предпочли в дальнейшем поменять свой major :) Если бы организаторы Code.org пропагандировали программирование по этой книге, получился бы знатный epic fail. Итак, по-моему мнению, книга явно не для новичков в программировании, так как концепции в ней сложны для восприятия людьми «не нюхавшими пороху», более того, понадобится недюжинный запас мотивации и терпения, так как упражнения после каждой секции сложны и требуют от читателя изрядно «попотеть». Но награда стоит того. Я прочитал лишь первую главу этой книги (их всего 5), проработал часть упражнений и, признаюсь, почувствовал как стал лучше разбираться в некоторых вещах (обрёл какой-никакой фундамент). ═══════════════════ Скачать в telegram: ═══════════════════ СИКП — не книга про языки программирования или разработку программного обеспечения, не книга по ООП, функциональному программированию или паттернам проектирования. СИКП — книга об информатике (computer science). Восприятии компьютеров как абстрактных машин, используемых для манипулирования данными. Несмотря на то, что книга впервые опубликована в 1979, она до сих пор не потеряла свою актуальность и не потеряет в будущем. СИКП неизменно находится в топе лучших книг по обучению программированию на протяжении десятков лет. Стоит ли её читать? Однозначно стоит всем разработчикам на любых языках программирования с любым опытом. СИКП — достаточно сложная книга, поэтому появилось руководство, которое вы прямо сейчас читаете. ═══════════════════ Очень краткое содержание ═══════════════════ Абстракция с помощью функций Элементы программ Выражения Вычислительные стратегии Подстановочная модель вычислений Функции и процессы порождаемые ими Линейная рекурсия и итерация Древовидная рекурсия Функции высшего порядка Функции как аргументы Функции как обобщения Функции как возвращаемые значения Абстракция с помощью данных Введение в абстракцию данных Барьеры абстракции Что такое данные? Иерархические данные и свойство замыкания Представление последовательностей Иерархические структуры Последовательности как стандартные интерфейсы Символьные данные Цитирование Множественные представления абстрактных данных Тегирование данных Программирование управляемое данными. Аддитивность. Модульность, Объекты и Состояние Присваивание и локальное состояние Преимущества присваивания Недостатки присваивания Модель с окружениями Правила вычисления Применение Фреймы как репозитории локального состояния Моделирование с изменяемыми данными Изменяемый список Представление очереди Представление таблиц Многозадачность Потоки Метаязыковые абстракции Вычисление с помощью регистровых машин ═══════════════════ Рекомендации ═══════════════════ Первое, что нужно понимать: СИКП — не просто книга. Это университетский курс, записанный в виде книги. Он сложный и объёмный, его бесполезно проходить без практики. Практику придумывать не придётся. После каждой главы есть блок задач, которые авторы просят выполнить. Некоторые из них сугубо математичесские (просят что-то доказать), либо подразумевают хорошую математическую базу. Их можно и даже нужно пропускать, иначе вы можете очень быстро потерять мотивацию. ═══════════════════ Сколько читать ═══════════════════ СИКП условно можно разделить на две части. В первую часть входят главы 1, 2 и 3. Во вторую — 4 и 5. Разница в том, что во вторую часть входят главы, копающие очень глубоко, и пройти сквозь них может только по-настоящему увлеченный человек. По этой причине Хекслет рекомендует поставить себе планкой прохождение первых трех глав. Остальное можно с легкостью отложить на потом. ═══════════════════ Язык ═══════════════════ Для примеров и практики в книге используется язык Scheme (Ским), созданный авторами курса. Это один из диалектов семейства Lisp. Как и полагается любому Lisp-языку, Scheme имеет примитивный синтаксис, который можно изучить буквально за несколько часов. Он очень необычен для тех, кто имел дело только с широко распространенными языками, но обладает рядом серьезных достоинств, о которых говорится в книге. Его выбор, в качестве основного языка для курса обоснован тем, что Scheme позволяет сосредоточиться на сути вещей вместо синтаксиса, увидеть чистые концепции в первозданном виде. Scheme как и любой Лисп, обладает невероятно высокой выразительностью благодаря тому, что в языке всё есть выражение, а инструкции отсутствуют вообще. Вторая причина — гомоиконность. Свойство языков, в которых данные и код — одно и тоже. Этот тезис сложно понять на словах, его нужно прочувствовать на практике. Есть еще и третья причина — макросы, но они в книге не используются. Однако, сам Scheme не развивается и уже не актуален. Его заменил язык Racket, который изначально был реализацией языка Scheme, но вырос во что-то большее. Другими словами, на базовом уровне Scheme и Racket выглядят идентично, что крайне удобно при прохождении СИКП. Хекслет рекомендует проходить СИКП именно на Racket. Специально для этого гайда мы подготовили репозиторий, который можно использовать как основу для кода. Не забудьте правильно настроить редактор. Lisp языки относятся к тем языкам, для которых нужна поддержка со стороны редактора для комфортной работы. ═══════════════════ Оформление ═══════════════════ На Гитхабе можно найти множество репозиториев, в которых лежат решения задач из СИКП на всех возможных языках программирования. Мы настоятельно рекомендуем поступать также: создать репозиторий в своем аккаунте и выкладывать в него все свои решения. Идеально, если каждое решение будет сопровождаться тестами. Такой подход хорош не только тем, что вы дополнительно прокачиваетесь в git и получаете дополнительную мотивацию, но и тем, что у вас появляется код, который можно показать при поиске работы. Более того, велика вероятность, что собеседовать вас будет человек, знающий про СИКП. Это добавит очков в карму и даст возможность продуктивно пообщаться. #теория@physics_math #программирование@physics_math #архитектура@physics_math
LISP: Scheme | Racket | etc6 июня 2018 в 9:08
В связи с «захватом» Github, многие репозитарии свободного кода, в тч на диалектах Лисп — переезжают на gitlab и savannah, например: Цитата целиком: » Since Jun 4th 2018, Microsoft has aquired GitHub, then GNU Artanis will never try to organize community on GigHub, include issues and PR. Please visit According to GNU Ethical Repository Criteria Evaluations. GNU Artanis as GNU official project is not proper to be maintained on GitHub. So I will not do maintenance work for GNU Artanis on github to show my position on free software. That means I w… — Читать дальше
ill not response to issues or pull requests on GitHub. Until GitHub show some respect to freedom of users on these issues: No other nonfree software is required to use the site (thus, no Flash). Does not discriminate against classes of users, or against any country. The maintenance repo will be these two: GNU official repo Accepts patches and issues on mailing-list artanis@gnu.org GitLab repo Accepts issues and pull requests. For historical reasons, GNU Artanis will maintain the site with gh-pages on GitHub since the pages service on GitLab is very different so I can't just move it simply. Before we have a better/modern Savannah, we have to endure this situation. »
LISP: Scheme | Racket | etc4 июня 2018 в 5:54
Наш любимый текстовый редактор неразрывно связан с историей и настоящим Lisp, начиная с MAC Lisp, а его код состоит из скобочек полностью, чуть более чем. Между тем, EMACS является одной из старейших, активно развивающихся программ на планете Земля. Встречаем новую версию: …теперь, с нативными лисп-тредами и генераторами! --- PS: Авторы остальных пабликов о EMACS самовыпилились из Втентакле, новые посты о EMACS разумно делать тут.
Показать
еще 1 фото
LISP: Scheme | Racket | etc18 мая 2018 в 19:35
Лисперы, занимающиеся теорией лиспа (такие как я, например), тоже хотят кушать. Чтобы покормить лиспера вы можете взять у него урок по реализации Лиспа и функциональных языков вообще. Вы узнаете про всякие SECD-машины, CPS-ы, редукции и тому подобную ерунду, которая еще никому для зашибания бабла не пригодилась. Преподаю по скайпу. Записаться на урок:
LISP: Scheme | Racket | etc13 мая 2018 в 8:49
PFDS — набор чисто-функциональных структур данных для R6RS Scheme. Они протестированы в Racket, Guile 2, Vicare Scheme и IronScheme. Библиотека постоянно пополняется и сейчас она включает: queues deques bbtrees sets dlists priority search queues (psqs) finger trees sequences heaps hamts … github проекта содержит документацию и ссылки на материалы по реализации отдельных структур данных.
LISP: Scheme | Racket | etc5 мая 2018 в 8:49
Fennel это язык программирования, который соединяет вместе скорость, простоту и богатство Lua, с гибкостью синтаксиса и макро-системой Lisp. Полная Lua-совместимость: Легкий вызов любой функции Lua из Fennel и наоборот Нулевые издержки: Скомпилированный код должен быть быстрым, самостоятельным и столь же или более эффективным, как написанный вручную код на Lua. Compile-time макросы: Макросы существуют только во время компиляции. Встраиваемость: Fennel как библиотека, также хорош, как и запускаемый. Везде, где вы можете запустить Lua, вы… — Читать дальше
можете запустить Fennel! Пример: (local dirs {:up [0 -1] :down [0 1] :left [-1 0] :right [1 0]}) (each [key delta (pairs dirs)] (when (love.keyboard.isDown key) (let [ [dx dy] delta [px py] player x (+ px (* dx player.speed dt)) y (+ py (* dy player.speed dt))] (: world :move player x y))))
LISP: Scheme | Racket | etc5 мая 2018 в 8:39
Итак, все скобочки закрыты и объявлены победители Lisp Game Jam! Первое место: EXO_encounter 667 Это игра об исследовании. Вы — беспилотная экспедиция к экзопланете Глисс-667Сс, которая терпит крушение рядом с руинами неизвестного происхождения. Что за тайны ждут вас? Написано на языке Fennel. Скачать: Исходники:
LISP: Scheme | Racket | etc19 апреля 2018 в 23:24
Сегодня Lisp Game Jam проходит в течение 10 дней, начиная с середины апреля каждого года. После того, как всё закончилось, каждому игроку дается 4 дня, чтобы опробовать игры и проголосовать за своих фаворитов. Правила — Игра должна быть написана на любом диалекте Lisp, включая Common Lisp, Scheme, Emacs Lisp и Clojure… — Вы можете использовать существующие библиотеки, сторонние или самостоятельно созданные, если у них есть лицензия с открытым исходным кодом. Вы можете использовать существующие активы, включая, но не ограничиваясь ими, художес… — Читать дальше
твенные работы, музыку и звуковые эффекты, если они имеют свободную лицензию. Но вы должны раскрывать то, что вы использовали, и давать ссылки на авторов там, где это необходимо. — Вы можете разработать свой собственный движок, инструменты и ресурсы общего назначения, до начала Джэма. Таким образом, вы можете начать с логики игры и соединить кусочки. Если вы выберете этот метод, попробуйте показать, что логика игры не работала до начала джэма, если вы хотите получить хорошую оценку. — Вы можете даже использовать существующую игру как основу, на которой можно опираться. Этот метод рекомендуется для новичков. Если вы выберете этот метод, сделайте попытку существенно изменить код, если хотите получить хорошую оценку. Вы также должны указать, что вы изменили.
LISP: Scheme | Racket | etc18 апреля 2018 в 14:17
Проект Cassius разрабатывает инструменты, которые «понимают», как делать веб-страницы. Используя современные решения уравнений, проект Cassius надеется разработать новый класс средств проверки, отладки и даже синтеза для веб-страниц. Например, VizAssert предоставляет математические гарантии того, что то ни один возможный размер устройства, не нарушит отображение вашей разметки. Если это не так, VizAssert показывает контрпример и указывает элемент, который нарушает оригинальное утверждение. Формализация CSS написана на Racket, под капотом ис… — Читать дальше
пользует библиотеку для доказательства теорем Z3 ()
LISP: Scheme | Racket | etc18 апреля 2018 в 8:45
В этой статье описывается добавление интерпретатора Scheme к движку Unity3D, что обеспечивает более быструю, гибкую и надежную разработку, чем использование оригинальной среды C# или Unityscript. Для игр характерно сложное, единовременное поведение во время выполнения, а также интепретация динамических структур данных. Высокоуровневая схема «данные как код» и стиль функционального программирования оказались тут очень кстати. …Графический интерфейс Unity3D полезен для создания простых сцен и задания поведения элементарных персонажей. Однако, о… — Читать дальше
н не масштабируется для больших проектов. Создание, редактирование и управление большим количеством объектов и скриптов, с соответствующим количеством подключений и взаимосвязей между ними, через графический интерфейс становится почти невозможным. Как уже отметили другие разработчики Unity, текстовая система конфигурации упрощает автоматизацию, настройку и управление ресурсами. Текстовые файлы предпочтительнее для совместной разработки, когда несколько разработчиков поддерживают текущее состояние проекта, используя систему контроля версий. Система, описанная в этой статье, выходит за рамки обычной текстовой конфигурации JSON или XML, добавляя в текстовые файлы сценарии, а также информацию о поведении персонажей. Используя LISP для этих текстовых файлов, мы позволяем объектам реализовывать поведение, без необходимости создавать иерархии сложных типов на более статичном языке.
Показать
еще 1 фото
LISP: Scheme | Racket | etc14 апреля 2018 в 18:04
SQLSourcery отображает структуры Scheme в записи SQL. Определения структуры соответствуют таблицам, экземпляры каждого определения — строкам соответствующей таблицы. Это позволяет изменять структуры в базе данных, удобными средствами самого языка. Основной язык позволяет определять плоские структуры и связываться с базой данных SQLite (как сохраненной, так и загруженной), допускать изменения в программе, которые распространяются на базу данных, в соответствии со спецификацией. Мы стремимся расширять язык с помощью полезных конструкций, чтобы пр… — Читать дальше
ограммисты могли писать семантические программы, с синтаксисом и парадигмами, соответствующими классическим соглашениям lisp, сохраняя при этом отображение структур базы данных. #lang racket (require »../lib/sql-sourcery.rkt») (sourcery-db «simple-example-1.db») (sourcery-struct user [(name STRING) (grade INTEGER)]) (define original-users (sourcery-load user)) (define new-users (list (user-create «Matthias» 1) (user-create «Ben L» 0))) (define users (append new-users original-users)) (define (is-passing? u) (> (user-grade u) 0)) (define (up-grade u) (user-update u (user-name u) (+ 1 (user-grade u)))) (define failures (filter (λ (u) (not (is-passing? u))) users)) (define winners (sourcery-filter-delete is-passing? users)) (map up-grade winners)
LISP: Scheme | Racket | etc8 апреля 2018 в 22:49
«Мы приводим обоснование расширения присутствия языка LISP в биоинформатике и исследованиях вычислительной биологии. Кратко говоря, языки семейства LISP позволяют быстрее писать программы, которые работают быстрее.»
LISP: Scheme | Racket | etc8 апреля 2018 в 20:32
Смарт-контракты Etherium на Scheme! Язык с юморным названием «Pyramid» написан в Racket. Он основан на коде интерпретатора из SICP. Репозитарий github: Автор подробно описал устройство компилятора в EVM, и обещает серию статей:
LISP: Scheme | Racket | etc31 марта 2018 в 22:17
В связи с наступлением AI-лета, открыта вакансия в «Скайнет». Лисперы, кому работу мечты? MIND.AI () работает над новой парадигмой в области искусственного интеллекта. Мы ищем инновации в сильном AI. Не только обработка естественного языка, но и «понимание» естественного языка. Нам нужны разносторонние таланты, которые заинтересованы в изменении мира. Это не «глубокое обучение», а нечто совершенно новое. И нам нужны люди с открытым и творческим умом. Описание вакансии: Specifically, the Lisp engineer will: Integrate with natural language librar… — Читать дальше
ies and packages such as the google parser to form structured data based on our proprietary model (similar to semantic networks) Build data structures and algorithms to acquire new information and relate it to existing ontologies (it learns how to learn) Work with computational linguist to build up knowledge bases and further define knowledge representation Develop persistence model (using database and object serialization) Implementation of logical reasoning based on abductive, inductive and deductive reasoning models Design and develop interactive learning interface Optimizing existing code base BASIC QUALIFICATIONS BS in Computer Science or equivalent. 3+ years experience in Lisp programming (5+ years programming), working in structured systems and/or software development teams (Common Lisp, LispWorks preferred) Thorough understanding of Lisp paradigms (eg, functional & object oriented) Familiarity with common software architectures, design patterns, and software development life cycles PREFERRED QUALIFICATIONS Experience with persistence (database & object serialization) Experience with GOFAI. Familiarity with formal logic. Working with ontologies and taxonomies Static and/or Dynamic Analysis Dynamic analysis, program instrumentation, and profiling
LISP: Scheme | Racket | etc28 марта 2018 в 6:29
Hackett — статически типизированный, чистый, ленивый, функциональный язык программирования в экосистеме Racket. Несмотря на значительные отличия от Racket, Hackett разделяет его синтаксис из S-выражений и мощную систему гигиенических макросов…
LISP: Scheme | Racket | etc26 марта 2018 в 20:23
Горячее обновление кода для Web-сервера Racket. Стандартный dynamic-rerequire работает, но нам нужен высокоуровневый механизм: (require reloadable) (define main (reloadable-entry-point->procedure (make-reloadable-entry-point 'start-program «features.rkt»))) (reload!) (main) — Разделите свой сервер на постоянную и обновляемую часть — Решите, какие части состояния в перезагружаемой части должны быть постоянными — Используйте непрямые ссылки для доступа к перезагружаемой части из постоянной
LISP: Scheme | Racket | etc26 марта 2018 в 8:04
Колонка юмора. Лисп для Java в виде IDE.
LISP: Scheme | Racket | etc24 марта 2018 в 21:43
Язык программирования в 7 строчек кода. ; eval получает выражение и окружение, возвращая значение (define (eval e env) (cond ((symbol? e) (cadr (assq e env))) ((eq? (car e) 'λ) (cons e env)) (else (apply (eval (car e) env) (eval (cadr e) env))))) ; apply получает функцию и аргумент, возвращая значение (define (apply f x) (eval (cddr (car f)) (cons (list (cadr (car f)) x) (cdr f)))) ; читаем и парсим ввод, затем выполняя (display (eval (read) '())) (newline)
LISP: Scheme | Racket | etc24 марта 2018 в 20:20
Индустрия всё больше нуждается в программируемом языке программирования: «В идеальном мире, программист анализирует задачу в терминах её предметной области и выдаёт решение в близких терминах. Таким образом, он может легко коммуницировать с экспертами в этой области, разделяя специфику задачи от специфики программной архитектуры. Однако сейчас, программисты чаще всего используют язык «общего назначения», который уже кто-то выбрал за них. Чтобы устранить этот конфликт, они прибегают к созданию своих собственных языков (DSL) К сожалению, многоязы… — Читать дальше
чное программирование DSL выполняется сегодня на разовой основе и довольно громоздко…»
LISP: Scheme | Racket | etc23 марта 2018 в 1:21
Scheme для программистов на Python (слайды)
LISP: Scheme | Racket | etc23 марта 2018 в 0:43
Коротко и ясно о взаимодействии с JSON API:
LISP: Scheme | Racket | etc21 марта 2018 в 13:40
Spin — новый фреймворк для создания REST API, поверх web-сервера Racket : (require (planet dmac/spin)) (get »/» (lambda () «Hello!»)) (run)
Развернуть и показать
еще 1 фото
LISP: Scheme | Racket | etc21 марта 2018 в 10:31
Джесси Алама, доктор философии, автор статьи о лямбда-исчислении () для «Стэнфордcкой Философской Энциклопедии», программист на Scheme с 1996 года. Недавно он написал книгу о практическом Web-программировании на Racket: Книга из двух частей: Часть 1 Сервлеты Роутинг Обработка ошибок Логирование Работа с JSON-данными HTML-шаблоны Обработка HTML форм Обработка AJAX запросов Куки Тестирование Часть 2 Использование реляционных баз данных (db, sql) Управление сессиями (redis) Переменные окружения (dotenv) Валидация JSON (argo) Реляционные модели (ra… — Читать дальше
cquel) Осправка HTTP запросов (http) Кэширование с memcached (memcached) Миграции БД — Phinx Racket и Docker CRUD HTTP API Деплой Racket за прокси-серверов Стоит это дело $39. Вот бы издать на русском! Также, автор ведёт блог на эту тему:
Развернуть
LISP: Scheme | Racket | etc18 марта 2018 в 19:12
«После 6 лет интенсивного программирования на Python, я погрузился в Guile Scheme. И, вопреки собственным ожиданиям, почувствовал себя дома!»
LISP: Scheme | Racket | etc17 марта 2018 в 10:55
Крэг Мэлони () показывает базовое функциональное программирование на Scheme (лямбды, map, reduce, filter итп) и рассказывает о современных окружениях Scheme — Racket и Guile:
LISP: Scheme | Racket | etc13 марта 2018 в 8:34
ZM1T (13.03.2018): Cyclone — новый компилятор Scheme в C для практического применения последнего стандарта ским: R7RS. Полная хвостовая рекурсия, продолжения, неблокирующая сборка мусора, треды. (+ Статья о его создании и устройстве '(“»))
LISP: Scheme | Racket | etc28 февраля 2018 в 0:09
— восхитительно-минималистичный сайт Scheme-хакера. Уже несколько лет наблюдаю этого комрада (или группу), что без шума и пыли пишет отличный, вплоть до гениальности, код на Guile Scheme. И уже написал почти всё, что нужно! Например, в числе прочего: sescript — лисп, транслирующийся в javascript (причём, именно так как ожидаешь) plcss — лисп, транслирующийся в css sph-sc — лисп, транслирующийся в С web-app — минимальный web-фреймворк аля express sph-cms — целая CMS на базе этого фреймворка sph-lib — сборник более 80 свободных библиотек для Guil… — Читать дальше
e Многое мне показалось уникальным, я попросил его выложить на github часть кода, для удобства взаимодействия: До сих пор не знаю, кто это делает — личной информации на сайте минимум. Зато, там есть масса любопытных систематизированных заметок на всевозможные темы, вплоть до философии минимализма (), идей развития в будущем (), или даже — способов чистить апельсин (). Рекомендую.
LISP: Scheme | Racket | etc26 февраля 2018 в 20:29
ZM1T (26.02.2018): Всё-таки существует пряморукий способ писать учебные программы для Arduino на Scheme! ASIP () — прошивка для управления Arduino с компьютера (гибкий и расширяемый аналог прошивки Firmata), плюс Racket-ASIP (), получаем:
LISP: Scheme | Racket | etc26 февраля 2018 в 16:50
ZM1T (26.02.2018): Snap! () — созданный в Беркли, аналог визуального языка для обучения — MIT Scratch. В отличии от старшего брата, Spap! использует семантику Scheme — со списками, функциями и континуациями — объектами первого класса. Оказалось, что на его базе уже появился фреймворк для Arduino, RaspberyPi и других платформ. И развивается масса интеграций: например, язык для графического 3d дизайна (), географической аналитики (), компилятор в Javascript (), собственный сервер, и многое другое: В своё время, мы использовали Google Blockly, дл… — Читать дальше
я создания DSL в системе управления чат-ботами, и часто можно увидеть детей, учащихся программированию в Scratch, работающем на устаревшем Flash… Теперь для этих целей лучше рассмотреть Snap!
LISP: Scheme | Racket | etc26 февраля 2018 в 14:44
ZM1T (10.02.2018): Artanis — Быстрый монолитный Web-фреймворк на Guile Scheme. Близок по архитектуре к Koa или Express с континуациями: (use-modules (artanis artanis)) (get »/hello» (lambda () «hello world»)) (run #:port 8080)
LISP: Scheme | Racket | etc26 февраля 2018 в 14:43
ZM1T (24.02.2018): Skribilo — свободный инструмент для создания документов, написанный на Guile Scheme. Принимает на входе структурированое представление в виде раличных форматов, включая наследник языка Scribe () и Org Outlines, рендерит на выходе различные форматы: HTML, XML, Info, Lout, LaTeX итп.
LISP: Scheme | Racket | etc26 февраля 2018 в 14:43
ZM1T (14.02.2018): uLisp® — диалект LISP, сделанный специально для запуска на процессорах с ограниченным объёмом памяти. Он поддерживает базирующиеся на ATmega платы Arduino, SAM/SAMD и LaunchPad. Вы можете использовать одну и ту-же программу на любой платформе: (defun b (x) (pinmode 13 t) (digitalwrite 13 x) (delay 1000) (b (not x))) И вот она — мини лисп-машина с этим интерпретатором на экране:
Показать
еще 1 фото
LISP: Scheme | Racket | etc30 декабря 2017 в 15:23
Джон Бэкус (3 декабря 1924 года — 17 марта 2007 года) — американский учёный в области computer science. Бэкус известен в основном как создатель фортрана, но мне хотелось бы поговорить о его эпохальной работе «Can Programming Be Liberated From The Von Neumann Style». Бэкус был одним из первых, кто осознал, что императивный стиль программирования ограничивает наши возможности в создании сложных систем. В этой работе описан язык функционального программирования FP, основной особенностью которого, отличающей его от лиспа и других функциональных язы… — Читать дальше
ков того времени, было отсутствие именования аргументов функций, как в комбинаторной логике. Бэкус хотел разработать настоящее исчисление программ, так, чтобы можно было доказывать их эквивалентность, поэтому удаление из языка локальных переменных — это плата за простоту этих самых аксиом преобразования программ. В интервью (ссылка ниже) Бэкус признает, что FP оказался неудачей, т.к. ему не удалось совместить функциональный стиль с вводом-выводом. Множество ученых ломали голову над этим, были явно неудачные решения типа монад, но мне кажется, проблема решается одной из реализаций FRP — библиотекой universe среды Racket. Язык Бэкуса лучше всего гуглить как Backus' FP.
LISP: Scheme | Racket | etc24 ноября 2017 в 11:39
Ted Nelson — интересный персонаж, хотя и не связанный напрямую с Лиспом. Когда-то давно, когда все думали, что компьютеры — это про вычисления, Тед разглядел потенциальные возможности этих машин. В 1974 году он опубликовал книгу «Computer Lib», которая до сих пор считается классикой в области социального влияния компьютеров. Теду уже пошел девятый десяток, но он все еще прекрасный оратор with so fluent and eloquent English. Если вы легко понимаете буржуйский язык, то зацените его ютуб-канал (TheTedNelson), где он рассказывает о истории компьюте… — Читать дальше
ров и своем участии в становлении интернета (именно он изобрел понятие «гипертекст»). Особенно я бы отметил его лекцию о биткоине, что, конечно, удивительно, учитывая возраст Нельсона. Интересный момент, который меня задел, когда я прослушивал его серию «Computers for Cynics» — он считает, раз компьютеры созданы людьми, то все это произвольно (made-up) и нет никакого закона или правила высокого порядка, на основе которого было бы правильно построить компьютер. Все, как говорит Нельсон, сводится к решениям конкретных людей. Как лиспера, меня такая мысль не устраивает, ведь я верю в то, что Джон Маккарти именно открыл Лисп, а не изобрел его или выдумал. Также я верю, что все последующее продвижение в этой области находится в рамках аттрактора заданного самой природой Лиспа, а не Маккарти. Да, такой взгляд на вещи похож на попытки типа тех, предпринятых Тейяр де Шарденом и другими, соединить естественную эволюцию с религией, когда эволюция — это лишь средство для достижения вершины — человека.
LISP: Scheme | Racket | etc21 октября 2017 в 17:41
Matthias Felleisen — ученый в области computer science с немецкими корнями. Эмигрировал в США в возрасте 21 года. Известен своими выдающимися работами в области семантики языков программирования. Заложил основы delimited continuations. Для тех, кто не в теме, delimited continuation — это продолжение, которые больше похоже на функцию, чем на черную дыру, возврата из которой нет. Но самая интересная, на мой взгляд, разработка Маттиаса — это universe. Это библиотека для среды Racket, которая позволяет делать интерактивные графические программмы в… — Читать дальше
чистом функциональном стиле без всяких монад-шмонад, как выразился сам Маттиас. Про universe можно почитать в книгах «How to Design Programs» и «Realm of Racket». Последнюю я запиратил для вас в приложении к посту.
LISP: Scheme | Racket | etc5 октября 2017 в 16:28
Я не всегда программирую, но когда припрет, я предпочитаю Racket!
LISP: Scheme | Racket | etc23 ноября 2016 в 19:27
Хреновые программисты (20.11.2016): Учебник по LISP
LISP: Scheme | Racket | etc19 ноября 2016 в 19:41
Вот замечательное видео о JS… Нет, нет, не о JS, а об абстракции, так горячо любимой нами, лисперами. Нет, не о JS, а о теории парадигм Куна и о принятии текущих абстракций в программировании за само собой разумеющееся. Девушка как пулемет фигачит замечательными цитатами из Сагана, Фейнмана, Мартина Хайдеггера (при чем тут вообще программирование? — можно подумать), Томаса Куна, SICP. Ее оригинальные мысли тоже довольно интересны. Например, что синтаксический сахар часто затуманивает что-то концептуальное под ним. Я тут сразу вспоминю алгебра… — Читать дальше
ический синтаксис, который обфусцировав концепцию AST отодвинул ее на advanced level обочину программирования.
LISP: Scheme | Racket | etc26 октября 2016 в 14:37
Так как группа не предполагает коммерческой основы, в следствии чего напоминаем, что энтузиастов мы берем в админы. Пишите в комменты, кто алчет
LISP: Scheme | Racket | etc23 августа 2016 в 22:21
Есть мнение, что Lisp пал жертвой AI winter. Последний термин означает потерю первоначального энтузиазма и потока инвестиций в исследования AI. Разочарование в AI стало причиной коллапса бизнеса Lisp машин, как сопутствующей технологии. Хотя AI winter мог внести вклад в значительное падение популярности Lisp, тут был, безусловно, еще один фактор. Этот фактор, приведший к общей деградации программирования — появление персоналок. Вот, что пишет Эдсгер Дейкстра: «И что же случилось сейчас? Технологии так «усовершенствовались», что программирование… — Читать дальше
побуждается сделать гигантский скачек, скачек на 25 лет назад! Парадоксально, но факт, мы перемещаемся в точку, где мы были 25 лет назад. Снова, арифметика слишком медленная или память слишком мала; машины снова имеют хаотические, несистематизированные инструкции, на дизайн которых больше повлияли соображения технологий компьютерного железа, чем вопрос сможет ли мудрый программист ими воспользоваться. Недавно кто-то показал мне номер одного ежемесячного журнала для любителей микропроцессоров и, скажу я вам, это был шок увидеть возрождение всех наших прошлых ошибок. Это было ужасающе, это вызывало уныние, это было отвратительно, и я надеюсь никогда больше не увидеть такой журнал снова.»
LISP: Scheme | Racket | etc17 апреля 2016 в 16:12
Хреновые программисты (17.04.2016):
LISP: Scheme | Racket | etc15 апреля 2016 в 12:21
Принято считать, что у языков программирования есть ниша. Дескать каждой задаче свой инструмент. В этом не было бы ничего крамольного, если бы народная молва не закрепила за большинством алгоритмических языков их нишу по историческим соображениям. Да, Python и Ruby применяются в основном для веба, но лишь потому, что для программ на интерпретируемых языках сложно скрыть исходники (что не проблема для веба). Точно такие же случайности исторического развития повлияли на ассоциацию Лиспа с искусственным интеллектом. Да, для систем искусственного и… — Читать дальше
нтеллекта нужен выразительный язык с широкой палитрой средств символьных вычислений. Но, очевидно, такое же требование можно предъявлять и к любому языку общего назначения. Logo — широко известный язык для обучения детей программированию. Черепашка и все такое… Тем не менее есть люди, несогласные с такой трактовкой нишевости Logo. Среди них Brian Harvey, написавший книгу «Computer Science Logo Style», в которой показано, что Logo — диалект Лиспа с сопоставимой с ним мощностью в области символических вычислений. Интересно, что черепашка появилась в Logo как позднее дополнение и, как любой вид свистелок и перделок, оттянуло внимание общественности от других достоинств Logo. Я и сам не воспринимал его всерьез, пока не обратил внимание на книжку Harvey.
LISP: Scheme | Racket | etc27 марта 2016 в 15:18
Энтони Хоар — английский учёный, специализирующийся в области computer science. Наиболее известен как разработчик алгоритма qsort. Хоар на вручении ему премии Тьюринга прочитал лекцию (см. прикрепленный файл) о важности бритвы Оккама в разработке языков программирования. В своей лекции Хоар сетует на чрезмерную сложность современных ему языков — Algol 68, PL/I, Ada. Ход рассуждений Хоара прост — если мы хотим иметь надежные программы, то нам нужен надежный язык программирования. Надежный язык в первую очередь прост, это тот язык, который можно… — Читать дальше
полностью понять. Сложность — это признак недостаточного осознания. Хоар отмечает, что надежный язык должен быть рекурсивен по своей природе (тут можно вспомнить eval Джона Маккарти, хотя в тексте статьи про Lisp ни слова). Если человечество хочет обезопасить мир от техногенных катастроф произошедших из-за сбоев в ПО, необходимо разрабатывать надежные, а следовательно, простые языки программирования. К сожалению, даже столь выдающийся человек чувствует свою беспомощность перед IT-индустрией в ее стремлении усложнять (которое является простым следствием обскурантизма): «Вначале я надеялся, что такой дефектный проект [PL/I] провалится, но вскоре я осознал, что он был приговорен к успеху. Почти все в IT-индустрии может быть реализовано, продано, и даже использовано, если есть достаточно решимости. Простой ученый не может ничего сказать, что сможет противостоять потоку в 100 миллионов долларов. Но есть одно качество, которое не может быть куплено таким образом — и это надежность. Цена надежности — стремление к крайней простоте. Это та цена, которую очень богатому сложнее всего заплатить.»
Развернуть
LISP: Scheme | Racket | etc7 марта 2016 в 19:55
Изучаем #racket с Артьомом
LISP: Scheme | Racket | etc5 марта 2016 в 15:33
Примерчики #haskell для начинающих
Развернуть
LISP: Scheme | Racket | etc28 февраля 2016 в 21:53
Вместо споров на тему археологии и палеоконтакта (палеоконтакт — утверждение, что Джон Маккарти был послан нам инопланетянами или сам был из их числа), предлагаю насладиться перелистыванием замечательной книги по Лиспу, которую я только что откопал.
LISP: Scheme | Racket | etc26 февраля 2016 в 16:02
Переименовать группу в Археологическое программирование или иже с ним
LISP: Scheme | Racket | etc25 февраля 2016 в 17:31
что еще по тематикам добавим
LISP: Scheme | Racket | etc25 февраля 2016 в 16:21
Господа, какие направления кодинга вы хотели бы добавить в паблик? на одном лиспе аудитории не сделаешь, походу)
LISP: Scheme | Racket | etc31 декабря 2015 в 12:38
Господа, поздравляем вас всех с наступающим Новым Годом, всем удачи, не терять пакеты, нормально называть переменные, а так же прочей скучной и нудной ерунды.
LISP: Scheme | Racket | etc31 декабря 2015 в 12:32
Ежели есть еще желающие поделиться своим скиллом и новостями о лиспе, став админом, пишите +
LISP: Scheme | Racket | etc1 сентября 2015 в 14:51
Одной из самых неудачных черт CL являются сложные лямбда-списки. Все эти &optional, &rest совсем не похожи на LISP. Точечные лямбда-списки Scheme можно также отнести к плохим решениям. Между тем, существует альтернатива — сопоставление с образцом. Причем механика сопоставления не обязательно должна быть вшита в вызов процедуры, как это сделано в функциональных языках типа ML или Haskell. Достаточно иметь раздельно лямбды, которые принимают произвольное количество аргументов и оператор-сопоставитель. Такой подход элегантнее сложных лямбда-списко… — Читать дальше
в еще и тем, что в сопоставлении с образцом не возникает проблем, когда в опциональный агрумент передано значение, но оно совпадает с дефолтным. К посту прикреплена одна из первых работ, посвященных связи сопоставления с образцом и процедур с опциональными аргументами. Пример на Racket:
LISP: Scheme | Racket | etc30 августа 2015 в 18:20
Дорогие подписчики и поситители группы — пожалуйста не пишите ваши вопросы (и предложения) на стене сообщества, заводите для них тему в обсуждениях сообщества.
LISP: Scheme | Racket | etc16 августа 2015 в 1:57
Интерпретатор скимы (scheme) для микроконтроллеров ARM, работает на «голом железе»)
LISP: Scheme | Racket | etc16 августа 2015 в 1:55
Заброшенный, но интересный проект по реализации LISP-Machine на FPGA архитектуре (verilog hdl,xilinx).
LISP: Scheme | Racket | etc11 июля 2015 в 10:29
Одно из препятствий на пути создания Lisp-машины — это необходимость монополии языка. Lisp-машина по умолчанию будет Lisp-центрична. Смогут ли программисты принять единый универсальный язык программирования и может ли он вообще существовать? Или же схема Unix с множеством языков и минимальным обменом данных (строками) между программами будет доминировать вечно? Конечно, речь не идет о замене всех DSL одним языком, а о едином языке общего назначения.
LISP: Scheme | Racket | etc21 июня 2015 в 20:29
Презентация, повествующая об создании Си-подобного языка программирования с нуля, используя только язык ассемблера, так же автор разрабатывает скриптовый Лисп-подобный DSL. Позновательно и круто!
LISP: Scheme | Racket | etc21 июня 2015 в 19:35
Текущая версия моего диалекта Lisp. Он еще не закончен, там скорее всего много багов, но основная концепция из этого материала должна быть понятна. Приглашаю к сотрудничеству.
LISP: Scheme | Racket | etc31 мая 2015 в 10:15
Безусловно, McCarthy был знаком с лямбда-исчислением, однако Лисп, позаимствовав некоторые идеи, в основных чертах совсем не похож на лямбда-исчисление. Вот как вычисляется применение функции (комбинация): (1) вычисляются фактические аргументы, (2) полученные результаты связываются с формальными параметрами и (3) производится вычисление тела функции. В лямбда-исчислении бета-редукция не является рекурсивной в этом смысле. Бета-редукция не выполняется автоматически над аргументами комбинации. Редукции применяются к выражению до тех пор, пока пос… — Читать дальше
ледующие редукции станут невозможными. Говорят, что выражения, над которыми невозможно больше произвести редукции (или редукции не изменяют выражение) находятся в нормальной форме. Концепция нормальной формы связана с тем фактом, что лямбда-исчисление не является алгоритмическим языком, а «формальной системой», что и отражено термином «исчисление». Тот, кто производит редукции может выбрать их порядок по своему усмотрению. Можно ли идею нормальной формы и редукций перенести в Лисп? Такие попытки были, но можно ли их назвать удачными (смотри операцию hold в Mathematica)? В самом деле, выражение (list '+ 2 3) возвращает список, который может быть интерпретирован в свою очередь как комбинация. В Лиспе делается только одни шаг вычислений и в этом заключается принципиальное различие идеи редукций от вычисления форм.
LISP: Scheme | Racket | etc28 мая 2015 в 10:23
Если кому-то тяжело понять метациклический интерпретатор Лиспа сходу, то есть простая подпорка. Называется она The Great Mother of All Functions (tgmoaf) и была опубликована в замечательной книге John Allen «Anatomy of LISP» (стр. 91). В заданном этим интерпретатором диалекте Lisp, отсутствует специальный оператор lambda и, вследствии этого, интерпретатор не использует окружения. Очевидно, этот диалект не Тьюринг-полный. Ниже приведена немого измененная версия на CL. Оригинал был написан на M-выражениях, как и все программы книги «Anatomy of LI… — Читать дальше
SP». Обратите внимание, что в книге John Allen допустил ту же ошибку, что и McCarthy в процедуре evcond (отсутствие терминальной ветви). Задача для пытливых умов: добавить в интерпретатор процедуру list.
LISP: Scheme | Racket | etc26 мая 2015 в 11:10
Joseph Weizenbaum (1923–2008) известен винрарнейшей программкой ELIZA. Когда компьютеры еще не стали обыденным устройством, люди часто наделяли их мистическими свойствами. Вейценбаум наблюдал, как люди пообщавшись с довольно примитивной программкой ELIZA, которая имитировала некоторые черты разговора с психотерапевтом, антропоморфизировали компьютер. На основе этих наблюдений Вейценбаум сделал выводы, что компьютеры могут быть опасны и кинулся предостерегать человечество в своей книге «Возможности вычислительных машин и человеческий разум». Кни… — Читать дальше
жка эта во многом устарела. Примечательно с каким презрением Вейценбаум отзывается о хакерах в главе «Наука и одержимый программист», сравнивая их с патологическими игроками. До превращения в унылого морализатора, Вейценбаум написал не только первый чат-бот, но и статью «The FUNARG Problem Explained», в которой проблема funarg была продемонстрирована при помощи красивой графической нотации окружений.
LISP: Scheme | Racket | etc25 мая 2015 в 10:37
Создатели популярных ныне динамических языков плохо усвоили уроки Лиспа. Ни в Python, ни в Ruby нет предопределенного типа список. Списки Python — это на самом деле динамические массивы. Но самый неосвоенный урок — разделение операций связывания (binding) и присваивания (assignment). В Python и Ruby привязка переменной создается при первом присваивании. В Lisp объявление переменной (создание привязки) и присваивание являются различными операциями — let и setq (set! в Scheme). Не буду объяснять, почему так правильно — для любого лиспера это очев… — Читать дальше
идно. Считается, что современные динамические языки эволюционируют в сторону Лиспа. Возможно, но все эти шероховатости нужно еще шлифовать и шлифовать, прежде чем получится что-то похожее на Lisp, который был открыт более пятидесяти лет назад. Казалось бы, почти все ингредиенты уже есть в Python (и Ruby), но приготовлены они людьми, которые не знают о существовании кулинарной книги. Почему, например, eval в Python вычисляет строки, а не AST? И так извращен каждый ингредиент…
LISP: Scheme | Racket | etc24 мая 2015 в 11:02
Известно, что с опытом программирования на Lisp пропадает концентрация внимания на скобках. Программист начинает видеть скобки как бы в затемнении. Конечно, это происходит только благодаря правильной идентации и поддержке редактора, который подсвечивает парные скобки. Т.е. для опытного программиста все скобки представляют собой второй план, кроме пары текущих. Именно поэтому лисперы не расставляют закрывающие скобки лесенкой, как это делают программисты на языках с Си-подобным синтаксисом. Но что происходит, если лиспер использует несколько тип… — Читать дальше
ов скобок? Внимание вновь концентрируется на деталях. Поэтому, различные типы скобок — глупость. Но что делать в тех случаях, когда помощь редактора недоступна, например, в книге или на учебной доске? В старых диалектах (INTERLISP, например) была такая фича — супер скобки. Последние закрывают или все открытые скобки или все до последней открывающей супер скобки. В CL такой фичи нет (и не надо), но в некоторых случаях к ней стоит прибегнуть.
Показать
еще 1 фото
LISP: Scheme | Racket | etc23 мая 2015 в 11:01
Книга Брайна Хигмана «Сравнительное изучение языков программирования» — очень старое, но в некоторых местах до сих пор не потерявшее актуальность исследование. Хигман не проникся идеями Лиспа, считая последний лишь специализированным языком обработки списков. Вот что он пишет (стр. 129): «По-видимому, следует считать, что проблематика специальных языков обработки списков, по существу, к настоящему времени себя исчерпала». Возможно, разработчики стандарта CL обиделись и не прислушались к Хигману, когда добавляли в стандарт логические побитовые о… — Читать дальше
перации и битовые сдвиги (стр. 23): «Считается, что программист не обязан знать вид представления чисел в машине, и вследствие этого в языке, видимо, ему будет запрещено использование логических функций от численных данных, так что он будет вынужден для определения четности прибегать к крайне неэффективной проверке равенства удвоенной целой части половины числа и самого числа! Одним из решений этой проблемы, является включение в множество определенных системой функции odd(n), реализуемой по-разному на разных машинах. Однако потребуется значительное время, прежде чем мы окончательно выявим все те процессы, эффективность которых настолько зависит от системы, что их следует определять именно таким образом.»
LISP: Scheme | Racket | etc22 мая 2015 в 10:48
Существует широко распространенное заблуждение, что машины Тьюринга и другие алгоритмические модели описывают современные ПК. Peter Wegner был первым, кто заметил проблемность этого утверждения. Он показал, что компьютеры по факту делают больше, чем моделирование математических функций. У любого алгоритма есть аргументы и результат а, зацикленные процессы, не приводящие к какому-то результату по определению считаются некорректными. Очевидно, требование рассматривать только конечные процессы может иметь смысл только тогда, когда алгоритмическая… — Читать дальше
модель используется для моделирования функций. По факту, современный ПК — это машина, непрерывно взаимодействующая с окружением, тогда как Тьюринг описал машину, отключенную от внешнего мира до момента останова. Интересно, связано ли это заблуждение с радикальным функциональным программированием, которое пытается объявить изменяемое состояние вне закона и тем самым упростить теорию? В лямбда-исчислении порядок редукций не важен, если у терма есть нормальная форма, но, очевидно, результат важнее процесса — это формула алгоритмических систем, а не компьютеров вообще. Так что вовне контекста теории алгоритмов теорема Чёрча-Россера не имеет оснований.
LISP: Scheme | Racket | etc21 мая 2015 в 9:19
Peter Landin (1930–2009) был не только бисексуалом (немного ЛГБТ-пропаганды нашей группе не помешает), но и одним из первых, кто осознал взаимосвязь языков программирования и лямбда-исчисления. Landin показал, что для механизации вычисления выражений на таких языках как Lisp, нужен стек. Его разработка — SECD машина — имеет 4 регистра — Stack, Environment, Control, Dump. Примечательно, что вскоре после публикации его статьи (1964 год) было показано, что стек Dump лишний, но в литературе все равно приводится оригинальная машина Ландина. Реализац… — Читать дальше
ия Lisp на SECD машине хорошо разобрана в книге Хендерсон «Функциональное программирование. Применение и реализация». Хотя в учебных целях SECD машина все еще заслуживает внимания, т.к. позволяет визуализировать процесс вычислений, современный подход к реализации языков программирования основан на CPS-преобразовании.
LISP: Scheme | Racket | etc20 мая 2015 в 10:57
Richard Gabriel (1949 год рождения) — ученый в области computer science, известный своими работами по Лиспу. В статье «The Evolution of Lisp» он обсуждает подсахаренные Лиспы. Как и многие в Lisp-сообществе, Richard Gabriel полагает любой синтаксис поверх S-выражений излишним (стр. 85): «…именно потому, что Lisp позволяет легко играть с репрезентациями программ, новичкам не составляет труда экспериментировать с альтернативными нотациями. Поэтому мы ожидаем, что будущие поколения Lisp программистов продолжат изобретать Алгольный синтаксис для… — Читать дальше
Lisp снова и снова и снова, и мы точно так же уверены, что после начального периода увлечения они будут отбрасывать его. (Возможно, этот процесс следует рассматривать в качестве обряда перехода в Lisp хакеры.)» Есть основания полагать, что этот обряд перехода первооткрыватель Лиспа, John McCarthy, прошел не до конца. Начав с M-выражений, McCarthy перешел к S-выражениям, но так и не оставил идеи двухуровневого синтаксиса (M-выражения для программиста и S-выражения для внутреннего представления).
Развернуть
LISP: Scheme | Racket | etc19 мая 2015 в 10:20
Кристофер Стрейчи (1916—1975) — одни из основателей денотационной семантики и пионер в разработке языков программирования. Кристофер известен своими работами над языком CPL (Combined Programming Language). Сейчас этот язык не используется, но его наследником стал язык BCPL — один из предшественников языка Си. Стрейчи одним из первых сформулировал принцип иррелевантности синтаксиса в исследовании языков программирования. Вот, что он пишет в работе «Fundamental Concepts in Programming Languages»: «I also regard syntactical problems as essentially… — Читать дальше
irrelevant to programming languages at their present stage of development». В настоящее время этот принцип осознается в основном только в Lisp-сообществе, за пределами которого обсуждение языков программирования часто сводится к обсуждению синтаксиса. И самое печальное, что сложный для восприятия синтаксис — основной мотив критики и отвержения Лиспа.
Развернуть и показать
еще 1 фото
LISP: Scheme | Racket | etc18 мая 2015 в 18:06
Хреновые программисты (14.05.2015):
LISP: Scheme | Racket | etc14 мая 2015 в 2:36
Есть желающие поадминить? Времени нет, да и к лиспу поохладели админы)
LISP: Scheme | Racket | etc5 апреля 2015 в 0:20
Хреновые программисты (03.04.2015):
Развернуть
LISP: Scheme | Racket | etc3 апреля 2015 в 1:24
Хреновые программисты (01.04.2015):
LISP: Scheme | Racket | etc19 ноября 2014 в 3:50
Лекция Романа Попова залита на лекториум
LISP: Scheme | Racket | etc6 ноября 2014 в 23:39
Лисперы, живущие в С-Пб, не пропустите в это воскресенье лекцию Романа Попова (): «Программируемые языки программирования: введение в системы с открытой реализацией» Лекция состоится в Computer Science клубе 09.11.2014 - 15:35 - 17:10 Вход свободный, как добраться смотрите на сайте CS-клуба. Место: Санкт-Петербург: ПОМИ РАН (наб. р. Фонтанки, 27), Мраморный зал, второй этаж.
LISP: Scheme | Racket | etc6 ноября 2014 в 15:25
28 ноября 2014 с 17.00 до 23.00 в С-Пб на мероприятии, которое называется «IT Global Meetup» будет секция про Лисп, где я расскажу о нескольких моих проектах, реализованных на Common Lisp и о том, с чем приходится сталкиваться разработчику при работе с Лиспом в коммерческой разработке. Интересно?
LISP: Scheme | Racket | etc5 ноября 2014 в 16:36
Все еще актуально. Кто хочет паблик повести за собой в светлое будущее?
LISP: Scheme | Racket | etc30 июля 2014 в 18:56
кто хочет паблик повести за собой в светлое будущее?
LISP: Scheme | Racket | etc20 июня 2014 в 2:36
Хреновые программисты (19.06.2014):
Развернуть
LISP: Scheme | Racket | etc19 июня 2014 в 15:00
Хреновые программисты (19.06.2014): Врезапно^_^ с пикабу
WebAssembly к текущему бэкенду Racket Chez Scheme. Мы признаем
трудности, с которыми могут столкнуться разработчики при переносе существующей архитектуры на Web-Assembly, и представляем решения, которые пытаются преодолеть разрыв между WebAssembly и другими потребностями в языке ассемблера. Мы считаем, что работа, которую мы здесь описали, и представленные решения будут полезны длябудущих команд, портирующих любой язык программирования и надеемся увидеть полную компиляцию Racket в будущем.