новыйЛИСП
Эта статья нуждается в дополнительных цитатах для проверки . ( март 2013 г. ) |
Парадигма | Мультипарадигмальность |
---|---|
Семья | Лисп |
Разработано | Лутц Мюллер |
Разработчик | Лутц Мюллер |
Впервые появился | 1991 год |
Стабильная версия | 10.7.5 / 12 мая 2019 г [1] |
Предварительный выпуск | 10.7.4 / 10 сентября 2018 г [1] |
Объем | Динамический |
Платформа | ИА-32 , x86-64 |
ТЫ | Кроссплатформенность : Unix , Unix-подобный , Windows. |
Лицензия | GPLv3+ |
Веб-сайт | www |
Под влиянием | |
C , Common Lisp , Perl , Схема |
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 году, а затем стала доступна как приложение с графическим интерфейсом пользователя (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]
1958 | 1960 | 1965 | 1970 | 1975 | 1980 | 1985 | 1990 | 1995 | 2000 | 2005 | 2010 | 2015 | 2020 | ||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
ЛИСП 1, 1.5, ЛИСП 2 (заброшенный) | |||||||||||||||
Маклисп | |||||||||||||||
Интерлисп | |||||||||||||||
леев | |||||||||||||||
Лисп-машина Лисп | |||||||||||||||
Схема | Р5РС | Р6РС | R7RS маленький | ||||||||||||
НОЛЬ | |||||||||||||||
ЗИЛ (язык реализации Zork) | |||||||||||||||
Франц Лисп | |||||||||||||||
Общий Лисп | стандарт ANSI | ||||||||||||||
Лисп | |||||||||||||||
Схема СО | |||||||||||||||
XLISP | |||||||||||||||
Т | |||||||||||||||
На схеме | |||||||||||||||
Эмакс Лисп | |||||||||||||||
АвтоЛИСП | |||||||||||||||
ПикоЛисп | |||||||||||||||
Гамбит | |||||||||||||||
EuLisp | |||||||||||||||
ИСЛИСП | |||||||||||||||
ОпенЛисп | |||||||||||||||
Схема PLT | Ракетка | ||||||||||||||
новыйЛИСП | |||||||||||||||
GNU Коварство | |||||||||||||||
Визуальный ЛИСП | |||||||||||||||
Кложур | |||||||||||||||
Дуга | |||||||||||||||
ЛФЭ | |||||||||||||||
Он | |||||||||||||||
Хиалисп |
Философия [ править ]
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 графического пользовательского интерфейса Сервер Java, (TCP/IP) на основе (newLISP-GS) — это сервер набора протоколов Интернета обеспечивающий графический интерфейс программирования. Среда разработки на основе newLISP-GS включена в бинарные дистрибутивы newLISP, а также GTK-сервера , OpenGL и Tcl / Tk доступны программные интерфейсы на основе .
Автономные двоичные файлы [ править ]
Любая новая версия LISP позволяет создавать исполняемые файлы, портативные приложения для развертывания, которые являются автономными и не требуют установки.
[ править ]
newLISP имеет функцию импорта, которая позволяет импортировать функции из библиотеки динамической компоновки (DLL) в Windows API Win32 или из общей библиотеки в Linux или Unix .
Фреймворки [ править ]
Веб-фреймворки, доступные для newLISP, включают Dragonfly. [7] и Ракеты. [8]
Ссылки [ править ]
- ^ Jump up to: Перейти обратно: а б с «новыйЛИСП» . Проверено 20 ноября 2018 г.
- ^ Уоллинг, Роб. «Интервью с Лутцем Мюллером, создателем newLISP» . Программное обеспечениеbyrob.com . Архивировано из оригинала 31 октября 2007 г. Проверено 20 ноября 2018 г.
- ^ Мюллер, Лутц. «newLISP — язык сценариев LISP» . Дон Лусио . Проверено 20 ноября 2018 г.
- ^ Кобаяши, Сигэру. "kosh04/newlisp" . Гитхаб . Проверено 20 ноября 2018 г.
- ^ «Категория:новыйLISP» . Розеттский кодекс . Проверено 20 ноября 2018 г.
- ^ Лазар, Александру (5 января 2009 г.). «Взгляд на newLISP» . ОСНовости . Проверено 20 ноября 2018 г.
- ^ Слепак, Грег; Хильдманн, Марк. «Веб-фреймворк Dragonfly» . AppTruck . Проверено 20 ноября 2018 г.
- ^ Реймер, Джереми. «Блог newLISP on Rockets 2.0» . Человек-ракета . Проверено 20 ноября 2018 г.