В текущую версию внесен ряд изменений:
- В функцию read добавлен необязательный параметр. Если функция вызывается с параметром t, то возвращается полный введенный текст в виде строки. Это позволяет при необходимости читать ввод пользователя, содержащий пробелы. Вызов функции без параметра приводит к чтению одного корректного S-выражения, а остальная часть ввода игнорируется;
- Введена функция putinbuf, позволяющая программно формировать входной буфер для функции read;
- Строки, содержащие неграфические символы (с ASCII-кодами от нуля до 31) теперь корректно преобразуются функциями explode/implode;
- Исправлен ряд ошибок:
- Функция isnumber теперь корректно распознаёт все типы чисел HomeLisp – FIXED, FLOAR, RATIONAL, COMPLEX;
- Главное окно в режиме чтения (read) теперь ресайзируется корректно;
- Обеспечено корректность режимов COPY/PASTE как в обычном режиме, так и при вызове функции read;
– Прогресс-бар теперь корректно позиционируется в статус-баре главной формы;
Некоторые пользователи жалуются, что на их компьютерах не открывается прилагаемая документация (файл формата chm). Возможно также, что файл открывается, но содержимое не показывается. Опыт показывает, что это возможно, если система развёрнута на сетевом диске. При переносе chm-файла на локальный диск, симптом пропадает (характерно для win-10 и, возможно, для win-11).
С удовольствием сообщаю, что мой добрый друг М.Ю. Колодин ( @mykespb ) запустил портабельную версию HomeLisp в Linux под Wine!
К сожалению, я еще не переработал документацию. Это обязательно будет сделано в будущем.
Для использования портабельной версии права администратора не требуются. Просто скачайте архив в какую-либо директорию и распакуйте.
Tags: HomeLisp, Portable
В новую версию ядра внесен ряд изменений:
- добавлена функция backtrace. Эта функция позволяет включать (backtrace ‘on) или выключать (backtrace ‘off) протокол обратной трассировки при возникновении ошибки. По замыслу автора – это полезная возможность для отладки.
- добавлены функции создания и обработки массивов (контейнеров с фиксированным временем доступа к любому элементу).
- исправлен ряд ошибок.
Для использования портабельной версии права администратора не требуются. Просто скачайте архив в какую-либо директорию и распакуйте.
Tags: HomeLisp, Portable
Портабельная версия HomeLisp
Почти все вопросы, задаваемые автору за все время жизни проекта сводились к проблеме инсталляции. Конкретно – к регистрации компонентов. Предлагаемая вашему вниманию портабельная версия содержит ядро 1.13.53 и не требует для установки прав администратора. Просто скачайте zip-архив и распакуйте его в любую папку. Версия не содержит web-компоненты, а также не позволяет использовать HomeLisp как COM-сервер (для этого нужно устанавливать полную версию).
Tags: HomeLisp, Portable
В новое ядро HomeLisp внесены следующие важные изменения:
1. Поддержка рациональных чисел.
2. Поддержка комплексных чисел
3. Многозначные функции
4. Итераторы
5. Структуры
6. Интерфейс с WinAPI
Те пользователи, у которых уже установлена более ранняя версия могут не скачивать полную инсталляцию, а скачать только измененные файлы. После скачивания архива, его следует распаковать и заменить соответствующие файлы новыми. Следует обратить внимание на то, что новая версия библиотеки называется lib-k.lsp. При запуске среды разработки следует войти в режим конфигурации и изменить имя библиотеки.
HomeLisp 1.13.4
Ровно два года назад был опубликован HomeLisp 1.11.1. Вашему вниманию предлагается новая версия HomeLisp. Она КАРДИНАЛЬНО отличается от версии 1.11:
- Все переменные теперь по умолчанию лексические (динамические и глобальные переменные тоже существуют, но их нужно создавать специально);
- Добавлен целый ряд функций из стандарта Common Lisp (Let, if, do, dolist, dotimes и др.);
- HomeLisp 1.13.4 поддерживает замыкания;
- Реализована обратная блокировка;
- Реализована возможность сохранения/восстановления состояния Лисп-машины в двоичный файл;
- Реализован простой диалоговый отладчик;
- Реализован интервальный таймер;
- Переработан инсталлятор;
- Исправлено множество мелких ошибок (автор надеется, что при этом внесен минимум новых);
- Скриптовая часть Web-компоненты переписана на JScript-е, так что для работы можно использовать любой браузер (а не только IE);
- Актуализирована документация (хотя и не в полном объеме)
Скачать новую версию HomeLisp можно
здесь.
Версия 1.11.2 является промежуточной версией HomeLisp. Переменные в этой реализации остаются динамическими (лексические переменные будут реализованы в версии 1.13.1) В версию 1.11.2 внесены следующие изменения:
- Переработана программная логика COND (отличие от Nil, а не от T, как было в предыдущей версии).
- Реализована функция READ, читающая S-выражения из стандартного ввода при работе в IDE и консольном варианте.
- Реализованы функции ASSOLIST и OBJLIST, выводящие на печать ассоциативный список и список объектов;
- Реализована функция EQL (типа SUBR), сравнивающая два S-выражения на идентичность;
- Реализована функция UNSET, удаляющая глобальные переменные;
- Реализованы графические функции GRWSHOWALL, GRWHIDEALL, GRWDESTROYALL – показ, сокрытие и удаление всех графических окон соответственно;
- Реализована функция DLGDELITEM, позволяющая удалять элементы списков для LIST- и COMBO-боксов;
- Реализована функция COMINTERFACE, позволяющая получить интерфес COM-объекта;
- Обеспечен программный способ защиты любых констант от модификации;
- Обеспечена модификация свойств графических окон, диалогов и контролов путем модификации их списков свойств.
- Реализовано табличное размещение графических окон.
- Исправлена ошибка в реализации MACRO;
- Исправлена ошибка в реализации функции TRY;
- Функция GRWINKEY теперь возвращает не только scan-код клавиши, но и статус переключателей (Shift, Alt, Control);
- Скриптовая часть Web-компоненты переписана с VBscript на JavaScript, что обеспечило возможность использования популярных браузеров FireFox и Opera;
Разработчик выражает благодарность Л.В. Городней и Н.В. Шилову за ряд полезных идей, нашедших реализацию в предлагаемой версии.
Разработчик напоминает:
Установку HomeLisp во всех ОС (кроме Win-98)
нужно выполнять с административными правами!
HomeLisp – простой, свободно распространяемый Лисп на платформе Windows!
Среди языков программирования, разработанных к настоящему времени, имеется один совершенно уникальный. Это язык Лисп.
Идея, лежащая в основе Лиспа, чрезвычайно красива: все конструкции языка (программы и данные) представляются с помощью единой универсальной структуры – списка. Методология программирования на Лиспе в корне отличается от методологии программирования на традиционных языках (типа Си или Паскаля).
Лисп-программист не разбивает алгоритм на отдельные элементарные шаги, не использует циклы, ветвления, присвоения значений переменным, а строит функцию, решающую поставленную задачу. При этом структура функции почти дословно соответствует математической формулировке решаемой задачи.
Подобная методология сейчас называется функциональным программированием. Лисп – первый функциональный язык программирования и, вероятно, первый язык, который явно приветствовал использование рекурсии.
Языки, появившиеся после Лиспа, превзошли Лисп по изобразительным возможностям… но по соотношению «сила/простота» рекорд Лиспа не побит до сих пор!
Лисп – абсолютно не попсовый, элитарный язык программирования. И не удивительно, что хотя с момента его изобретения Дж. МакКарти прошло уже более 50 лет, Лисп жив по сей день! Далеко не каждому языку суждена столь долгая жизнь, – где сейчас Алгол-60 (которому пророчили большое будущее)? А по Лиспу издаются книги (к сожалению, не на русском языке…); появляются новые и новые реализации Лиспа на разных аппаратных платформах.
Одну из таких простых реализаций Лиспа и предлагает автор этих строк.
HomeLisp (домашний Лисп) – это 32-х битная реализация Лиспа в среде Windows.За основу была взята реализация Лиспа, описанная в книге С.С. Лавров, Г.С. Силагадзе «Автоматическая обработка данных. Язык Лисп и его реализация» М. 1978
HomeLisp является свободно распространяемым программым обеспечением (FreeWare). Допускается свободное копирование как программного обеспечения, так и документации. Изменение программного кода компонентов HomeLisp не допускается. Цитирование документации допускается только с указанием автора.
Авторские права на программный продукт и прилагаемую документацию принадлежат разработчику – Файфелю Борису Леонидовичу
HomeLisp включает в себя следующие независимые компоненты:
Среду разработки (IDE), содержащую ядро языка, текстовый редактор, конструктор диалогов (экранный дизайнер), построитель EXE-файлов и скромные средства отладки;
COM-библиотеку, позволяющую вызывать Лисп из любой программной среды, поддерживающей COM-автоматизацию (например, из Microsoft Excel), а также два скриптовых «движка», позволяющих писать скрипты на языке Лисп;
WEB-компоненту для работы на WEB-сервере IIS, позволяющую построить учебный класс для изучения Лиспа (при этом WEB-компонента инсталлируется только на сервере).
HomeLisp обрабатывает следующие типы данных:
целые числа практически неограниченной разрядности;
стандартные числа с плавающей точкой;
битовые шкалы;
строки.
HomeLisp поддерживает функции пользователя трех видов:
обычные функции Лиспа (вычисляющие значения аргументов);
специальные функции (не вычисляющие значения аргументов);
макросы.
К числу объектов, встроенных в ядро HomeLisp относятся:
COM-объекты, позволяющие вызывать из среды Лиспа объекты, поддерживающие COM-автоматизацию;
Файлы и BLOB-объекты (большие двоичные объекты), позволяющие обрабатывать произвольную двоичную информацию;
Графические окна , позволяющие использовать простую графику;
Диалоги, позволяющие строить программы с графическим пользовательским интерфейсом;
HomeLisp снабжен подробной документацией, содержащей не только описание всех функций,описание языка “с нуля”, а также приемов программирования на Лиспе (что может оказаться полезным для тех, кто впервые знакомится с языком). Имеется список литературы на руccком языке, включающий и ряд Интернет-ресурсов, посвященных Лиспу.