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

Lisp *

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

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

GIMP Script-Fu Первый Дан. Расширения к Script-fu

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров224

Если сравнить расширяемое приложение с коробочкой, то плагины, это полезные вещи, которыми можно наполнить эту коробочку, придающие новое содержание нашему приложению. В этом ряду стоит и такая вещь как Script‑fu. Но что если я скажу, что Script‑fu так же может быть такой же «коробочкой» и может иметь расширения, давайте разбираться. Но сразу скажу, счастливы будут не все.

Читать далее
Рейтинг0
Комментарии0

Новости

Почему Scheme?

Уровень сложностиСредний
Время на прочтение5 мин
Количество просмотров5.5K

Введение

Язык Scheme (произносится "ским"), которому в следующем году исполняется 50 лет, является языком программирования, занимающим необычное место среди прочих. Это язык, который гораздо больше изучают, чем потом на нём пишут. Скорее это язык для развития ума программиста, чем для написания коммерческого кода, хотя и примеры использования Scheme в коммерческой разработке тоже встречаются. На мой личный взгляд, Scheme идеален в качестве первого языка программирования в старшем школьном и институтском возрасте, а также идеально продолжает изучение Scratch в младших классах школы и Logo в средних классах.

Читать далее
Всего голосов 18: ↑17 и ↓1+17
Комментарии151

GIMP Script-Fu Первый Дан. Макросы. Первое знакомство

Уровень сложностиСредний
Время на прочтение10 мин
Количество просмотров912

Программисты: Разработчик, твой язык жалок, синтаксис беден и убог, как нам писать код?!?
Разработчик(языка lisp): Вот вам МАКРОС!!!

Разработчики языка Лисп(и Scheme тоже) были очень хитрые ребята, бессовестно воспользовавшись гомоиконичностью языка(т.е свойством подобия кода данным - знаменитая фраза в лиспе всё список, относится именно к этому свойству) они внедрили в язык макросы, средства синтаксической абстракции.
Таким образом в отличии от большинства ныне распространённых языков программирования(разработчики которых ночами не спят, пишут синтаксические анализаторы для всё новых и новых синтаксических форм своих языков), разработчики лиспов, обходятся минимальным набором синтаксических форм, что упрощает и ускоряет процесс интерпретации(да и компиляции тоже), а всё остальное богатство синтаксиса, передано на откуп макросам. Именно через макросы, являющиеся ортогональным средством абстрагирования, по отношению к функциональной абстракции, доступной во всех языках программирования, реализуется совершенствование и развития языков лисп. Это можно описать математической аналогией, когда в математике произошёл переход от рациональных чисел(в языке доступна только функциональная абстракция) к комплексным(в язык внедряется система синтаксической абстракции - макрос).

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

GIMP Script-Fu Первый Дан. Работа, Печать, Отладка

Уровень сложностиПростой
Время на прочтение3 мин
Количество просмотров712

GIMP Script-Fu Первый Дан. Работа,Печать,Отладка.

Работа с консолью Script-fu и универсальная функция печати.

Читать далее
Всего голосов 4: ↑4 и ↓0+6
Комментарии9

Истории

GIMP Script-Fu Первый Дан. Первое приветствие

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров751

Наша цель нарисовать приветствие на изображении в GIMP. Но для того что бы вывести что то на изображение, это изображение у нас должно быть. Мы можем создать его в ручную. Просто средствами GIMP, или же создать его прямо из плагина Script-fu.

Научим плагин создавать изображения, определив функцию создания изображений. Что надо знать, так это то что изображение состоит из слоев - layer, в нашем новом изображении будет изначально только один слой. Изображение будет создано и заполнено ТЕКУЩИМ цветом фона, установленного в Гимп, но мы могли бы вполне себе и задать цвет фона создаваемого изображения.

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

GIMP Script-Fu Первый Дан. Шаг первый

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров1.4K

Здравствуй Читатель! Если ты хочешь научиться программировать расширения для GIMP с помощью Script-fu тебе сюда. Я планирую опубликовать серию статей по данной теме. И эта статья только первый шаг в увлекательный мир лайф-кодинга. Что это значит? Расширение GIMP Script-fu представляет собой обёртку над интерпретатором языка scheme, который позволяет не только загружать и интерпретировать скрипты пользователя, но и работать с ними в интерактивном режиме, давая команды интерпретатору в режиме REPL, когда интерпретатор читает код(Read), оценивает(или ещё говорят вычисляет) то что прочитал(Eval), печатает результат(Print) и повторят всё это заново(Loop), короче REPL.

Предисловие

Однажды изучая книгу, Структура и интерпретация компьютерных программ(SICP), я наткнулся на задание по созданию языка функциональной геометрии придуманного Питером Хендерсоном funcgeo2.pdf. И я решил повторить эту реализация в качестве задания, закрепляющего тему процедурной композиции. Обычно задания я делал используя реализацию языка scheme - racket. Отличный язык для обучения основам программирования. Более простой курс этого обучения, пригодный для школьников описан в книге HtDP — "Как разрабатывать программы", перевод которой недавно вышел в печатном виде в России, есть также моя неофициальная попытка перевода, в виде html страниц: htdp-rus . Более продвинутый курс изучения компьютерных наук на языке Scheme описан в уже упомянутой книге SICP, обычно изучаемой уже студентами ВУЗов. Но в языке racket уже реализованы элементы этого языка манипулирования изображениями, поэтому я решил обратить своё внимание на язык script-fu в GIMP, про который мне на тот момент было практически ничего не известно, кроме того что он также является одной из разновидностью реализаций scheme. Результаты попытки реализации этого задания из SCIP и представлены в настоящей работе.

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

Почему Racket? Почему Lisp?

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

Великолепный Racket и практичный Typography стали возможны благодаря издательской системе под названием Pollen. Я создал Pollen с помощью языка программирования Racket. Racket является потомком Scheme, который, в свою очередь, является потомком Lisp

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

Геймдев на Lisp. Часть 2: подземелья и интерфейсы

Уровень сложностиСредний
Время на прочтение66 мин
Количество просмотров2.8K

В первой части мы познакомились с архитектурным паттерном Entity-Component-System, часто используемым в разработке игр, и металингвистической парадигмой программирования, заключающейся в построении и использовании собственных языков, наиболее полно и точно описывающих предметную область создаваемой программы. На сей раз мы используем эти приёмы для создания небольшой, но полноценной игры на Common Lisp в жанре dungeon crawler (рус. надмозг. "подземное ползание") с пользовательским интерфейсом и рассмотрим на её примере системный дизайн реального игрового приложения с использованием ECS.

TL;DR: готовую к запуску демонстрацию (бинарники под все распространённые ОС) и её исходный код можно найти на github.

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

Сравним ruby, lisp и python

Уровень сложностиПростой
Время на прочтение4 мин
Количество просмотров4K

На примере простых алгоритмов (вычисление расстояния между точками, сумма членов геометрической прогрессии, формирование массива простых чисел по алгоритму Эратосфена, числа Фибоначчи) сравниваются три языка программирования - Lisp, Python и Ruby. Сравнение проходит по следующим параметрам: компактность и читаемость кода, скорость работы.

Читать далее
Всего голосов 10: ↑7 и ↓3+7
Комментарии28

Код как данные: пишем Python на Python

Уровень сложностиСредний
Время на прочтение4 мин
Количество просмотров17K
Идея о том, что язык программирования может реализовать сам себя, удивительна. Она вызывает сильное любопытство: «Как это вообще может выглядеть?» С момента своего появления в начале 60-х это мог делать Lisp.

В начале 60-х Джон Маккарти придумал серию примечательных идей, хорошо сочетающихся друг с другом и актуальных даже спустя десятки лет. Сначала он сформулировал их в статье о Lisp, а чуть позже — в руководстве по Lisp 1.5.


Джон Маккарти

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

Такая унификация кода и данных глубоко укоренилась в Lisp, она обеспечивает уровень выразительности, позволяющий языку естественным образом быть выраженным в самом себе.
Читать дальше →
Всего голосов 23: ↑21 и ↓2+27
Комментарии10

Проектная, конструкторская или технологическая документация. Основные системы стандартов

Уровень сложностиСредний
Время на прочтение8 мин
Количество просмотров6.7K

Правовая основа стандартизации в России заложена в ст. 71 Конституции Российской Федерации — «В ведении Российской Федерации находятся: … р) метрологическая служба, стандарты, эталоны, метрическая система и исчисление времени; геодезия и картография; наименования географических объектов; метеорологическая служба; официальный статистический и бухгалтерский учет; …»

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

— Федеральный закон «О стандартизации в Российской Федерации» от 29.06.2015 N 162-ФЗ;
— Федеральный закон «О техническом регулировании» от 27.12.2002 N 184-ФЗ.

Читать далее
Всего голосов 2: ↑2 и ↓0+3
Комментарии24

Дайте мне точку опоры…

Уровень сложностиПростой
Время на прочтение7 мин
Количество просмотров1.2K

...и я переверну землю.

Заметка о том, как перевернуть мир в отдельно взятом SVG-файле (на Common Lisp).

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

Ветераны IT: Как найти программистов прошлых поколений языков

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

При словосочетании «Ветераны IT» вы наверное представили себе сразу же старичков в пиджаках с нашивками из микросхем и шумным стационаром. Но это не совсем то, что мы подразумеваем под Ветеранами IT.


Читать далее
Всего голосов 11: ↑6 и ↓5+4
Комментарии25

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

15 – 16 ноября
IT-конференция Merge Skolkovo
Москва
22 – 24 ноября
Хакатон «AgroCode Hack Genetics'24»
Онлайн
28 ноября
Конференция «TechRec: ITHR CAMPUS»
МоскваОнлайн
25 – 26 апреля
IT-конференция Merge Tatarstan 2025
Казань

Книга «Основы компиляции: инкрементный подход»

Время на прочтение14 мин
Количество просмотров5.8K
image Привет, Хаброжители!

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

Вместо этого в «Основах компиляции» выбран инкрементный подход: компилятор совершенствуется последовательно, и читатель может написать весь код самостоятельно. Книга помогает создать собственный компилятор для небольшого, но достаточно мощного языка программирования, постепенно, шаг за шагом вводя все более сложные языковые средства.

Джереми Сик объясняет важнейшие концепции, алгоритмы и структуры данных, лежащие в основе современных компиляторов, и закладывает основу для изучения более сложных тем. Это краткое, но доступное руководство уже давно используют студенты и профессионалы.
Читать дальше →
Всего голосов 19: ↑19 и ↓0+19
Комментарии6

Язык Janet для смертных. Часть 2 — Компиляция и создание образов

Уровень сложностиПростой
Время на прочтение10 мин
Количество просмотров4.1K

Это перевод небольшой книги о языке Janet за авторством Иана Генри (Ian Henry). В этой небольшой книге подробно раскрываются различные аспекты работы с языком, обьяснение синтаксиса и некоторых приемов программирования.

Внимание, в этой публикации содержатся скобочки! Люди с непереносимостью Лисп-подобных языков, вас предупредили.

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

Что вы знаете о символьном программировании?

Уровень сложностиСредний
Время на прочтение15 мин
Количество просмотров17K

Кликбейтный заголовок, риторический вопрос и обещание раскрыть тайну! Не самый лучший набор, но нормального названия для статьи мне в голову не пришло. Что же здесь все таки будет? Речь пойдет о реализации символьного программирования в Wolfram Language (WL). Я не буду рассказывать про отличия от других парадигм. А также здесь точно не будет общих определений. Вместо этого я попытаюсь ответить на несколько вопросов исходя из своего личного опыта и наблюдений.

Внимание! Я не математик и не знаю haskell и lisp! И буду рад если меня поправят настоящие математики, которые с ними знакомы.

Читать далее
Всего голосов 40: ↑40 и ↓0+40
Комментарии98

Язык Janet для смертных. Часть 1 — Значения и ссылки

Уровень сложностиПростой
Время на прочтение13 мин
Количество просмотров3.6K

Это первая глава перевода небольшой книги о языке Janet за авторством Иана Генри (Ian Henry). В этой книге раскрываются различные аспекты работы с языком, обьяснение синтаксиса и некоторых приемов программирования.

Внимание, в этой публикации содержатся скобочки! Люди с непереносимостью Лисп-подобных языков, вас предупредили.

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

Геймдев на Lisp. Часть 1: ECS и металингвистическая абстракция

Уровень сложностиСредний
Время на прочтение30 мин
Количество просмотров6.7K

В данной серии практических руководств мы подробно рассмотрим создание несложных 2D-игр на Common Lisp. Результатом первой части станет настроенная среда разработки и простая симуляция, отображающая двумерную сцену с большим количеством физических объектов. Предполагается, что читатель владеет некоторым языком программирования высокого уровня, в общих чертах представляет, как на экране компьютера отображается графика, и заинтересован в расширении своего кругозора.

Common Lisp — язык программирования с богатой историей, предоставляющий эффективные инструменты для разработки комплексных интерактивных приложений, каковыми являются видеоигры. Данная серия руководств ставит перед собой задачу наглядно продемонстрировать ряд возможностей CL, отлично вписывающихся в контекст разработки игровых приложений. Общий обзор таковых возможностей и особенностей Common Lisp приводится в статье Юкари Хафнер "Использование высокодинамичного языка для разработки".

Многие возможности, впервые появившиеся в Lisp, такие, как условный оператор if/then/else, функции как объекты первого класса, сборка мусора и другие давно перекочевали в мейнстримные языки программирования, однако есть одна уникальная возможность, которую мы рассмотрим сегодня, и это — металингвистическая абстракция.

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

LISP в космосе

Уровень сложностиПростой
Время на прочтение22 мин
Количество просмотров4.2K


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


Эта история о том, что произойдёт, если человек, страстно увлечённый LISP, попадёт в организацию, где на нём не принято писать софт.


Эта история о том, как LISP попал в космос.


На дворе 1988 год. СССР всё ещё существует. Рональд Рейган — президент США. А Рон Гаррет под началом своего научного руководителя работает над прототипом первого марсохода.

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

LISP — исследование оригинального языка ИИ

Уровень сложностиПростой
Время на прочтение12 мин
Количество просмотров4.3K

Откройте для себя один из первых языков программирования, который, по мнению Майка Бедфорда, не мог быть более непохожим на своих ранних собратьев.

В предыдущей части нашей серии, посвященной классическим языкам программирования, мы рассмотрели ALGOL, а в этом месяце мы углубились в изучение другого архаичного языка - LISP. Однако то, что оба они появились в 1950-х годах, - это практически единственное, что их объединяет; в большинстве других аспектов они не могут быть более разными. Скорее всего, практически все языки, которыми вы когда-либо пользовались, относятся к типу императивных. LISP же является декларативным языком. Проще говоря, программирование на императивном языке предполагает определение набора операций, которые при последовательном выполнении обеспечивают требуемую функциональность. требуемую функциональность. Тот факт, что существует альтернатива, может вызвать удивление, но в декларативном языке конечный результат определен, а система сама решает, как достичь поставленной цели.

Эти два подхода можно сравнить с инструкциями, прилагаемыми к мебели для самостоятельной сборки. При императивном подходе инструкция представляет собой подробный перечень указаний, а при декларативном методе вам просто показывают картинку собранной мебели. На самом деле, это не первое знакомство с декларативным программированием за последние месяцы. Чуть ранее мы познакомились с языком Prolog, который практически канул в Лету в 1980-х годах, а затем вновь стал популярным благодаря Al-революции.

Читать далее
Всего голосов 10: ↑8 и ↓2+6
Комментарии8
1
23 ...