Как стать автором
Обновить
0

Lisp *

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

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

Расширение функционала меню в nanoCAD 8.5: макросы и LISP выражения

Время на прочтение6 мин
Количество просмотров5.7K


Файлы меню nanoCAD имеют расширение .cfg и структуру, отличающуюся от структуры меню (*.mnu, *.cui, *.cuix) других САПР. В версии 8.5 появилась поддержка макросов, которые могут содержать несколько команд и параметров, а также LISP-выражения.
Читать дальше →
Всего голосов 13: ↑13 и ↓0+13
Комментарии0

Новые возможности LISP в nanoCAD 8.5

Время на прочтение2 мин
Количество просмотров3.4K
Поддержка LISP в nanoCAD появилась давно и связывалась в первую очередь со специальной командой LSP, которая открывает LISP-консоль, предназначенную для ввода выражений и анализа переменных:


Рис. 1. Окно LISP-консоли

Релиз 8.5 сделал следующий важный шаг вперед, теперь ввод выражений LISP стал возможен в командной строке, кроме того, появилась поддержка символа PAUSE. Описываемые в статье изменения вошли в релиз 8.5, начиная с номера 8.5.4131.2629, сборка 4133.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии4

Настройка пользовательского интерфейса при установке приложений на nanoCAD Plus 8.5

Время на прочтение5 мин
Количество просмотров5.4K


Для значительного числа пользователей установка приложения равнозначна появлению ярлыка на рабочем столе или кнопки на панели инструментов. В данной статье мы рассмотрим механизм добавления меню и панелей инструментов для пользовательских приложений, устанавливаемых на nanoCAD Plus 8.5, а также разберём процедуру создания ярлыка, который позволит запускать конкретное пользовательское приложение в среде nanoCAD.

Для тех, кому интереснее попробовать, чем читать описание, сразу же приводим ссылку на дистрибутив приложения «Примеры nanoCAD SDK 8.5». После установки данного приложения при запуске nanoCAD Plus 8.5 будут автоматически загружаться примеры, созданные на LISP, C++, С#, VB.NET, JScript и VBScript, а в пользовательский интерфейс будут добавляться выпадающее меню и панель инструментов (как на заглавном скриншоте), позволяющие вызывать команды примеров.
Читать дальше →
Всего голосов 8: ↑8 и ↓0+8
Комментарии3

Генерация кода на Python при помощи Hy

Время на прочтение6 мин
Количество просмотров22K

1. Что такое Hy


Hy — диалект Лиспа, который встроен в питон.


Благодаря тому, что Hy трансформирует свой Лиспоподобный код в Абстрактное Синтаксическое Дерево (AST) питона, с помощью Hy весь прекрасный мир питона — на кончиках пальцев и в форме Лиспа.


image

Читать дальше →
Всего голосов 19: ↑14 и ↓5+9
Комментарии28

Истории

Объединяем Websockets, Lisp и функциональное программирование

Время на прочтение10 мин
Количество просмотров6.5K

Alt text


Объединяем Websockets, Lisp и функциональное программирование. Но как?

Читаем
Всего голосов 9: ↑8 и ↓1+7
Комментарии4

Liscript — web REPL: поцелуи, велосипеды и экскаваторы

Время на прочтение5 мин
Количество просмотров3.9K


Некоторое время назад я написал интерпретатор лиспоподобного языка, который назвал Liscript. Опубликовал несколько статей на Хабре, посвященных особенностям реализации ядра, TCO, GUI, REPL-ботов и т.п. Недавно добавил web-интерфейс REPL-у (ссылка в конце статьи).

При чем здесь поцелуи и экскаваторы? Думаю, большинству известны такие аббревиатуры, как KISS (keep it simple stupid — делай это проще, дурачок), YAGNI (You ain't gonna need it — Вам это не понадобится), а также высказывания людей разной степени великости про архитектурных астронавтов, «все должно быть сделано так просто, насколько возможно, но не проще», и т.п.

Допустим, перед вами стоит задача — выкопать яму. Какие есть варианты решения? Взять лопату и выкопать самому — дешево и сердито, но долго и возможно неоптимально (зависит от вашего уровня владения лопатой и размеров ямы). Отдать на аутсорс таджикам (не будем рассматривать здесь этот вариант, хотя я должен был его упомянуть). Взять экскаватор — быстро и эффективно, но затратно: бензин/аренда, плюс не факт, что он проедет в вашу садовую калитку, значит надо сносить/восстанавливать забор и т.д. Также, необходимо определиться с моделью (порой из 100500 вариантов), а если вы будете управлять им самостоятельно, надо разобраться во всех его рычагах и педалях.

Разумеется, если вы — профессиональный экскаваторщик, копаете по 200 ям за день, или вы стремитесь им стать, а изначальная задача (вырыть яму) нужна вам не сама по себе, а как тренировка или демонстрация ваших умений, тогда выбор очевиден (остается разве что вопрос модели). Но даже профессионал возьмет лопату, сажая цветы.

В общем, про выбор инструментов под задачи, и конкретные (подозреваю, что спорные) решения, которые я выбирал в процессе реализации проекта, под катом.
Читать дальше →
Всего голосов 8: ↑6 и ↓2+4
Комментарии24

Игры на Scheme(Lisp) в среде DrRacket

Время на прочтение4 мин
Количество просмотров7.4K
Для запуска программ, приведённых в статье, можно использовать DrRacket. Для начала рассмотрим связь конечного автомата и игрового процесса. Объект управления в игре можно представить в виде конечного автомата. Рассмотрим программу, моделирующую светофор. Этот пример был описан в предыдущей статье.

Переходом в другое устойчивое состояние является переключение сигнала светофора. Диаграмму состояний можно изобразить в следующем виде.

image
Читать дальше →
Всего голосов 17: ↑17 и ↓0+17
Комментарии6

Как проектировать программы (HtDP)

Время на прочтение6 мин
Количество просмотров17K
Следующая статья о том, как писать игры на Scheme

Учебник HtDP (How to Design Programs), посвящен программированию на языке Scheme в среде drRacket.
drRacket можно скачать с сайта.
Вводная часть учебника содержит описание функции empty-scene, предназначенной для работы с изображениями. Например, эта программа создает пустую сцену

#lang racket  
(require 2htdp/image)      ;библиотека для работы с изображениями 
(empty-scene 100 60)     ;сцена (канвас) размером 100х60 

Читать дальше →
Всего голосов 7: ↑7 и ↓0+7
Комментарии5

Как я "<" моноидом делал

Время на прочтение6 мин
Количество просмотров8K
image Некоторое время назад в одном уютном камерном собрании я делал доклад о своей разработке — скриптовом лиспоподобном языке Liscript. Начал с азов — семантики вычисления списков, префиксной нотации… Дошел до произвольной арности стандартных операций:

+ 1 2 3
=> 6

все интуитивно понятно, вопросов не возникает. Рассказываю про булевские значения, привожу пример:

< 1 2
=> true

тоже все понятно. И тут вопрос из зала: «а если 3 аргумента передать, как будет вычисляться?» Я решаю, что это хороший повод выпендриться умными терминами, и отвечаю: «точно так же — как свертка по моноиду» :) И тут же поправляясь — «хотя операция сравнения не является моноидом», пишу пример:

< 1 2 3
=> true
< 1 2 3 4 1 2
=> false

Все так же интуитивно понятно, вопросов не возникает и продолжаем дальше (благоразумно оставляя без рассмотрения вычисления примитивных операций на одном аргументе и вообще при отсутствии оных, а также вычитание/деление и прочие немоноидальные операции :)). Успешно миновав в докладе подобных камней, через некоторое время я подумал — а можно ли как-то изловчиться, и все-таки сделать операцию сравнения моноидом (в каком-либо смысле)? И мне кажется, мне это удалось. Заинтересовавшихся темой прошу под кат.
Читать дальше →
Всего голосов 33: ↑29 и ↓4+25
Комментарии13

Заклиная техническое интервью

Время на прочтение10 мин
Количество просмотров23K

Предлагаю читателям "Хабрахабра" перевод (возможно лучшей) статьи Kyle Kingsbury, a.k.a "Aphyr".


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


Видрун, зачатая от морских ветров в верхушках елей,
Видрун, зелень моих ветвей, радость и ноша моих дней,
Видрун, всех вдохновенней и умней, да станет мудрость нашего клана твоей:
Никогда не читай Hacker News
Читать дальше →
Всего голосов 78: ↑62 и ↓16+46
Комментарии27

Создание кнопки LISP-приложения в nanoCAD

Время на прочтение2 мин
Количество просмотров10K


Выход восьмой версии платформы nanoCAD Plus стал, на мой взгляд, самым крупным и масштабным обновлением за всю историю ее существования. Появилось множество новых возможностей, были доработаны и переосмыслены уже реализованные функции, учтены пожелания и замечания активных пользователей. Одно из важных изменений восьмой версии – это переработанные настройки пользовательского интерфейса (НПИ). О них и пойдет речь в этой статье, – а именно о том, как создать в nanoCAD кнопку и привязать к ней LISP-приложение. Создавать нашу кнопку мы будем в nanoCAD Plus 8.1, но метод работает и в других приложениях на базе восьмой версии.
Читать дальше →
Всего голосов 15: ↑12 и ↓3+9
Комментарии0

Как я стал лучше программировать

Время на прочтение6 мин
Количество просмотров48K
Автор статьи — Джеймс Лонг, один из создателей Firefox Developer Tools

Несколько человек на React Conf спросили у меня совета, как программировать лучше. По какой-то причине люди видят во мне продвинутого программиста, к советам которого стоит прислушаться. Я подумал, стоит записать «ментальную модель» того, как я подходил к программированию на протяжении всех лет.

Некоторая информация: мне 32 года и 10 лет твёрдого опыта. Наверное, только в последние пару лет я приобрёл уверенность в том, что делаю. Но даже теперь я продолжаю сомневаться в себе. Дело в том, что это чувство никогда не уходит, так что старайтесь не обращать на него внимания, продолжайте хаки и накапливайте опыт.

Сразу скажу, что здесь всего несколько советов для улучшения своих способностей. В итоге вам нужно самим выяснить, что лучше всего подходит именно вам. Это просто те вещи, которые я посчитал полезными.
Читать дальше →
Всего голосов 43: ↑37 и ↓6+31
Комментарии33

Liscript — REPL боты онлайн

Время на прочтение10 мин
Количество просмотров5.7K


Некоторое время назад, вдохновившись прочтением SICP, я написал пару своих реализаций интерпретаторов лиспоподобного языка со строгой семантикой, добавил десктопный GUI, консольный интерфейс, написал на нем Тетрис и много чего еще, и опубликовал пару статей на Хабр об этом.

Недавно я добавил возможность широкой аудитории познакомиться с данным языком — написал REPL-ботов для следующих мессенжеров: IRC, Telegram, Slack, Gitter. Боты располагаются на специально созданных для них каналах, но в большинстве случаев их можно добавлять/приглашать на другие каналы и вести с ними личную переписку. Такой формат позволяет проводить текстовые онлайн-доклады на тему основ функционального программирования, сопровождая их демонстрацией интерпретатора в реальном времени.

Конечно, графические окна с анимацией можно создавать только в десктопном варианте приложения. Поэтому для большего раскрытия возможностей языка и РЕПЛа я написал текстовую реализацию игры Лабиринт, в которую могут играть с ботом любое количество человек. Подробности и немного лирики под катом.
Читать дальше →
Всего голосов 15: ↑15 и ↓0+15
Комментарии0

Ближайшие события

Weekend Offer в AliExpress
Дата20 – 21 апреля
Время10:00 – 20:00
Место
Онлайн
Конференция «Я.Железо»
Дата18 мая
Время14:00 – 23:59
Место
МоскваОнлайн

Как делать больше, уставая меньше. Emacs pomidor

Время на прочтение2 мин
Количество просмотров24K

Вступление


С возрастом моя работоспособность не становится выше. Теперь я не могу сидеть по 6 часов не вставая: спина, шея, глаза — все это начинает рано или поздно болеть.


Сейчас эта проблема особенно актуальна, потому что наша игра уже запущена в раннем доступе, и нужно сломя голову нестись к релизу.

Читать дальше →
Всего голосов 15: ↑13 и ↓2+11
Комментарии21

Готовим многопоточность с core.async

Время на прочтение4 мин
Количество просмотров12K
image


Всё больше набирает популярность паттерн использования каналов при создании
многопоточных приложений. Идея не нова, ее дизайн заложен ещё в далёком 1978 году
в виде CSP.Наиболее известная реализация сейчас повсеместно используется в Golang.


Мы же в статье рассмотрим реализацию CSP в core.async для Clojure, если интересно, добро пожаловать под кат.


Читать дальше →
Всего голосов 22: ↑17 и ↓5+12
Комментарии11

Гейзенбаг, или как Луна портит код

Время на прочтение6 мин
Количество просмотров24K
Луна убывает, такое бывает… ©Земфира

Гейзенбагом называют ту разновидность программных глюков, которая возникает не пойми откуда, не поддается отладке и обнаружению. Словом, ведет себя как тот самый Неуловимый Джо или кроковский кот из недавнего поста. Мне по работе приходилось сталкиваться с такими и про себя я называл это эффектом квантовой механики до тех пор, пока не узнал, что близкое по смыслу название уже давно придумали. Бывает, посылаешь заказчику отладочный бинарник, который всего лишь записывает в журнал больше событий вокруг предполагаемого источника проблемы и после этого проблема исчезает!

heisenbug /hi:'zen-buhg/ n.
A bug that disappears or alters its behavior when one attempts to probe or isolate it.




Предлагаю вашему вниманию свою небольшую познавательную коллекцию квантовых эффектов в программировании.


Эпизод I, OpenOffice не печатает во вторник


Историю этого замечательного багрепорта можно почитать на Ubuntu Launchpad, а я вкратце изложу суть для тех, кому не сподручно читать по ссылке. В системной утилите file был баг из-за которого, файлы содержащие в 4-м байте Tue определялись как Erlang JAM. Дефект присутствовал в версиях file 4.21 и 4.24 и был вызван ошибкой в magic файле.

Читать дальше →
Всего голосов 41: ↑38 и ↓3+35
Комментарии86

Алан Кэй, создатель ООП, про разработку, Лисп и ООП

Время на прочтение5 мин
Количество просмотров60K
image

Если вы никогда не слышали про Алана Кэя, то как минимум слышали его знаменитые цитаты. Например, это высказывание 1971 года:
The best way to predict the future is to invent it.
Лучший способ предсказать будущее это изобрести его.


У Алана очень яркая карьера в информатике. Он получил Премию Киото и Премию Тьюринга за работу над парадигмой объектно-ориентированного программирования. Он был одним из первопроходцев в области персональных компьютеров и графического интерфейса, он разработал Smalltalk — один из первых самых влиятельных языков программирования всех времен.

У нас в Хекслете, особенно в чате, постоянно поднимается вопрос «что такое ООП» и «что имел ввиду Алан Кэй на самом деле». В этой заметке собраны интересные цитаты Алана о состоянии современной разработки, ООП и языке Лисп.
Читать дальше →
Всего голосов 42: ↑37 и ↓5+32
Комментарии139

Введение в продолжения и макросы на Scheme

Время на прочтение10 мин
Количество просмотров12K
Если вы не слышали о call/cc, то вам определённо стоит познакомиться с этим мощным инструментом! Поговорим о продолжении (call/cc), простой, но трудно понимаемой конструкции, обладающей огромной силой в правильных руках. Реализуем с их помощью механизм yield/next/for… in, аналогичный таковому в Python. Обернём внутренности с помощью макроса — ещё одного интересного механизма Scheme.

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

image

call-with-current-continuation
Всего голосов 15: ↑15 и ↓0+15
Комментарии20

Пол Грэм: Глава 2. Хакеры и художники (Habr edition)

Время на прочтение18 мин
Количество просмотров14K
image

Сейчас Пол Грэм учит правительства и университеты как создавать стартап-хабы, а а вот раньше… он провел замечательную аналогию между высококлассными программистами и художниками.

За 13 лет глава, одноименная с названием книги, затерялась в сети. Для удобства, хочу опубликовать ее, собранную по кусочкам из различных архивов.

Перевод Анастасии Грызуновой, Яны Щекотовой. Приведение текста в порядок — CaptainCrocus.

Оригинал — Hackers and Painters (May 2003)


Закончив аспирантуру по computer science, я пошел на художественный факультет изучать живопись. Многие удивились, что компьютерщик вдруг заинтересовался живописью. Эти люди, видимо, считали, что хакерство и художество — очень разные занятия: хакерство — холодное, точное и методичное, а художество — яростное выражение некого первобытного порыва.

Оба представления неверны. У хакерства и художества масса общего. Из множества различных типов людей хакеры и художники — едва ли не самые похожие.
Всего голосов 17: ↑14 и ↓3+11
Комментарии4

«Хакеры и Художники». Как мы 13 лет всем рунетом Пола Грэма переводили

Время на прочтение5 мин
Количество просмотров48K
«Это началось как желание, стало приключением, а закончилось как уникальное дорожное путешествие.»
— к/ф «Трасса 60»



Пол Грэм написал книгу «Hackers and Painters» (оригинал в PDF на английском) когда еще был больше программистом, чем инвестором. С тех пор некоторые моменты устарели (да и arc не взлетел), но большинство мыслей остались актуальными (роль и место ботанов «хакеров» в современном мире, свободомыслие, критическое мышление, способность бросать вызов большим системам и пр). Лично я планирую перечитать всю книгу еще пару раз.

Спасибо Байраму Аннакову за «наводку» на Пола Грэма и Николаю Кононову, который подтвердил, что я на правильном пути.

Содержание


Глава 1 Why Nerds Are UnpopularЗа что не любят ботанов.
Глава 2 Hackers and PaintersХакеры и художники (Habr edition)
Глава 3 What You Can't SayО чем вы не можете сказать.
Глава 4 Good Bad AttitudeСлово «хакер».
Глава 5 The Other Road AheadДругая дорога в будущее, Другая дорога в будущее, продолжение.
Глава 6 How to Make WealthКак стать богатым.
Глава 7 Mind the GapОсторожно, разрыв.
Глава 8 A Plan for SpamПлан для спама.
Глава 9 Taste for MakersВкус — созидателям.
Глава 10 Programming Languages Explained — Языки программирования «в разрезе».
Глава 11 The Hundred-Year LanguageЯзыки программирования через сто лет.
Глава 12 Beating the AveragesLisp: побеждая посредственность.
Глава 13 Revenge of the Nerds — Месть ботанов 1, 2, 3.
Глава 14 The Dream LanguageБыть Популярным, часть 2.
Глава 15 Design and ResearchПроектирование и исследование.

Под катом хронология переводов и благодарности.
Читать дальше →
Всего голосов 28: ↑27 и ↓1+26
Комментарии25