NewLISP - NewLISP

newLISP
Nl logo libel side color 240X100.png
Новый LISP стрекоза логотип
ПарадигмаМультипарадигма
СемьяЛисп
РазработаноЛутц Мюллер
РазработчикЛутц Мюллер
Впервые появился1991; 29 лет назад (1991)
Стабильный выпуск
10.7.5 / 12 мая 2019 г.; 18 месяцев назад (2019-05-12)[1]
Предварительный выпуск
10.7.4 / 10 сентября 2018 г.; 2 года назад (2018-09-10)[1]
ОбъемДинамический
ПлатформаIA-32, x86-64
Операционные системыКроссплатформенность: Unix, Unix-подобный, Windows
ЛицензияGPLv3 +
Интернет сайтwww.newlisp.org
Под влиянием
C, Common Lisp, Perl, Схема

newLISP это язык сценариев который является диалект из Лисп семья языки программирования. Он был разработан и разработан Лутцем Мюллером.[2] newLISP - это бесплатное программное обеспечение с открытым исходным кодом выпущен под Стандартная общественная лицензия GNU, версия 3 или новее.

История

newLISP определяется двумя основными Лисп диалекты, Common Lisp и Схема, и на других языках, например Паскаль и C.[нужна цитата ] newLISP возник в 1991 году и изначально разрабатывался на Вс-4 рабочая станция.[3] Позже он переехал в Windows 3.0, где версия 1.3 была выпущена на CompuServe примерно в 1993 году, затем стал доступен как Windows графический интерфейс пользователя (GUI) графическое приложение и ДОС консольное приложение (обе 16 бит ). В 1995 году с выпуском Windows 95, newLISP перемещен в 32-битный.

В апреле 1999 года newLISP был перенесен на Linux; некоторые из его основных алгоритмов были переписан, и весь код, специфичный для Windows, удален. newLISP был выпущен как программное обеспечение с открытым исходным кодом проект под лицензией GPL, а разработка в Windows прекратилась после версии 6.0.25. В первой половине 2001 года newLISP был перенесен обратно в Windows на Cygwin платформа без графических возможностей. Во второй половине 2001 года кроссплатформенный Tcl /Тк интерфейс с именем newLISP-tk был выпущен примерно в версии 6.3.0. В 2006 г. 64-битный точность была введена для целочисленной арифметики и для некоторых операций с файлами в версии 9.0.

Начиная с выпуска 6.5 в середине 2002 года, разработка была очень активной, и было добавлено много новых функций.[4]

Философия

newLISP пытается предоставить быстрый, мощный, кросс-платформенный, полнофункциональная скриптовая версия языка Lisp при использовании только скромных системных ресурсов, таких как хранилище данных (например, дисковое пространство) и объем памяти.[5][6]

Он предоставляет функции Lisp, такие как списки, обработка символов, отображение функций, анонимные функции (лямбда-выражения), s-выражения (исключая неправильные списки) и макросы. Он также обеспечивает функции, ожидаемые от современного языка сценариев, включая поддержку обычные выражения, XML, Юникод (UTF-8 ), сеть через Протокол управления передачей (TCP), протокол Интернета (IP) и Протокол пользовательских датаграмм (UDP), матрица и множество обработка, продвинутая математика, статистика и Байесовский статистический анализ, математические финансы, и распределенные вычисления.

newLISP работает на операционные системы Распространение программного обеспечения Беркли (BSD), Linux, macOS, Солярис, и Windows.[1] Он поддерживает MYSQL, SQLite и ODBC доступ к базе данных, Общий интерфейс шлюза (CGI), Простой протокол передачи почты (SMTP), Почтовый протокол (POP) 3, протокол передачи файлов (FTP) и XML удаленный вызов процедур (XML-RPC ). Он может работать в режиме сервера как демон.

Особенности языка

Контексты

newLISP поддерживает пространства имен названный контексты, который можно присвоить переменные и перешел к функции, но которые связаны с глобально уникальными символами, что ограничивает их использование в качестве первоклассные граждане (объекты). А на основе прототипа объектно-ориентированный стиль программирования возможен в newLISP, используя контексты в качестве прототипов для построения объекты. Переменные внутри контекстов не мешают одноименным переменным в других контекстах, но внутри контекста переменные ведут себя в соответствии с правилами динамического обзор.

Определение объема

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

Управление памятью

newLISP использует метод автоматического управление памятью отличается от традиционных вывоз мусора схемы, называемые управлением памятью только с одной ссылкой (ORO). На каждую переменную ссылаются только по ее контексту, и на каждый контекст ссылаются глобально.

Распределение подобъектов между объекты, циклические структуры или несколько переменных, указывающих на один и тот же объект, не поддерживаются в newLISP. Объекты копируются, когда хранятся в структурах данных или передаются функциям, за исключением некоторых встроенных функций. Исключениями являются символы и контексты, которые используются совместно, а не копируются, и поэтому могут использоваться для косвенного обращения. Символы и контексты имеют глобальные имена и явно удаляются; удаление символа или контекста сканирует все другие объекты, чтобы заменить ссылки на них на ноль.

Параметры графического интерфейса

newLISP графический интерфейс пользователя (GUI) сервер (новый LISP-GS) - это Ява -основан Набор интернет-протоколов (TCP / IP) сервер, обеспечивающий графический интерфейс программирования. Среда разработки на основе newLISP-GS включена в двоичные дистрибутивы newLISP, и GTK-сервер, OpenGL, и Tcl /Тк доступны программные интерфейсы на основе.

Автономные двоичные файлы

Любая новая версия LISP позволяет создавать исполняемые файлы, портативные приложения, для развертывания, которые являются автономными и не требуют установки.

Взаимодействие с разделяемыми библиотеками

newLISP имеет функцию импорта, которая позволяет импортировать функции из библиотека с динамической компоновкой (DLL) на Windows API Win32 или из общая библиотека в Linux или Unix.

Каркасы

Веб-фреймворки доступно для newLISP включает Dragonfly[7] и ракеты.[8]

Рекомендации

  1. ^ а б c "newLISP". Получено 2018-11-20.
  2. ^ Уоллинг, Роб. "Интервью с Лутцем Мюллером, создателем newLISP". Softwarebyrob.com. Получено 2018-11-20.
  3. ^ Мюллер, Лутц. "newLISP - язык сценариев LISP". дон Лучио. Получено 2018-11-20.
  4. ^ Кобаяши, Сигэру. "кош04 / новыйлисп". GitHub. Получено 2018-11-20.
  5. ^ "Категория: newLISP". Код Розетты. Получено 2018-11-20.
  6. ^ Лазар, Александру (5 января 2009 г.). "Взгляд на newLISP". OSNews. Получено 2018-11-20.
  7. ^ Слепак, Грег; Hildmann, Марк. "Веб-фреймворк" Стрекоза ". AppTruck. Получено 2018-11-20.
  8. ^ Реймер, Джереми. "Блог newLISP о ракетах 2.0". Ракета человек. Получено 2018-11-20.

внешняя ссылка