Из Википедии, бесплатной энциклопедии
Перейти к навигации Перейти к поиску

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

История [ править ]

newLISP дизайн под влиянием двух основных лисповских диалектов, Common Lisp и Scheme , а также других языков , как Pascal и C . [ необходима цитата ] newLISP возник в 1991 году и изначально разрабатывался на рабочей станции Sun-4 . [3] Позднее он перешел на Windows 3.0 , где версия 1.3 была выпущена на CompuServe примерно в 1993 году, а затем стала доступна как графическое приложение с графическим интерфейсом пользователя (GUI) Windows и консольное приложение 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 году 64-битная точность была введена для целочисленной арифметики и некоторых операций с файлами в версии 9.0.

Начиная с выпуска 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- RPC ). Он может работать в режиме сервера как демон .

Особенности языка [ править ]

Контексты [ править ]

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

Обзор [ править ]

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

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

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

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

Параметры графического интерфейса [ править ]

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

Автономные двоичные файлы [ править ]

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

Взаимодействие с общими библиотеками [ править ]

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

Фреймворки [ править ]

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

Ссылки [ править ]

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

Внешние ссылки [ править ]

  • Официальный веб-сайт
  • newlisp на GitHub