Портабельная версия 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ком языке, включающий и ряд Интернет-ресурсов, посвященных Лиспу.