stringtranslate.com

новыйLISP

newLISPязык сценариев , который является диалектом семейства языков программирования Lisp . Его спроектировал и разработал Лутц Мюллер. [2] Из-за небольших требований к ресурсам newLISP отлично подходит для приложений встраиваемых систем. Большинство функций, которые вам когда-либо понадобятся, уже встроены. Сюда входят сетевые функции, поддержка распределенной и многоядерной обработки, а также байесовская статистика. newLISP — это бесплатное программное обеспечение с открытым исходным кодом, выпущенное под лицензией GNU General Public License версии 3 или более поздней.

История

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

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

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

Философия

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

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

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

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

Контексты

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

Обзор

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

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

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

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

Опции графического интерфейса

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

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

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

Взаимодействие с общими библиотеками

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

Рамки

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

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

  1. ^ abc "newLISP" . Проверено 20 ноября 2018 г.
  2. ^ Уоллинг, Роб. «Интервью с Лутцем Мюллером, создателем newLISP». Программное обеспечениеbyrob.com . Архивировано из оригинала 31 октября 2007 г. Проверено 20 ноября 2018 г.
  3. ^ Мюллер, Лутц. «newLISP – язык сценариев LISP». Дон Лусио . Проверено 20 ноября 2018 г.
  4. ^ Кобаяши, Сигэру. "кош04/newlisp". Гитхаб . Проверено 20 ноября 2018 г.
  5. ^ «Категория: newLISP». Розеттский кодекс . Проверено 20 ноября 2018 г.
  6. Лазар, Александру (5 января 2009 г.). «Взгляд на newLISP». ОСНовости . Проверено 20 ноября 2018 г.
  7. ^ Слепак, Грег; Хильдманн, Марк. «Веб-фреймворк Dragonfly». AppTruck . Проверено 20 ноября 2018 г.
  8. ^ Реймер, Джереми. «Блог newLISP on Rockets 2.0». Ракета человек . Проверено 20 ноября 2018 г.

Внешние ссылки