WikiSort.ru - Программирование

ПОИСК ПО САЙТУ | о проекте

newLISP
Класс языка Мультипарадигмальный язык программирования
Появился в 1991
Автор Lutz Müller
Разработчик Lutz Müller
Выпуск
Испытал влияние Common Lisp, Scheme
Лицензия GNU General Public License
Сайт newlisp.org

NewLISP— диалект лиспа, созданный в качестве скриптового языка.

Особенности

newLISP (v.10.7.0) editor

Реализацию newLisp отличает легковесность, а сам язык — простота изучения[2].

В состав дистрибутива newLISP входит простая среда программирования[3], в которой под областью редактирования исходного текста находится окно эмулятора терминала, где можно видеть результаты выполнения лисп-программы (см. REPL)[4].

В языке поддерживается псевдообъектно-ориентированное программирование в форме FOOP (функционально-объектного программирования)[5].

Язык поставляется в комплекте со средствами программирования GUI[6].

В NewLISP встроены средства веб-программирования (Httpd и CGI[7][7]), а также работы с такими сетевыми протоколами, как TCP/IP[7] или UDP[7][8].

В сравнение с другими диалектами

NewLISP имеет ряд особенностей, отличающих его от Common Lisp[9] и других диалектов лиспа, как в синтаксисе, так и в семантике[10]. Например, традиционные имена стандартных функций для работы со списками car и cdr заменены на first и rest, как в T-Lisp. Несколько отличаются детали поведения функций cons и last. Списки являются индексируемыми, можно получить i-й элемент списка myList, считая с нуля, с помощью выражения (myList i).[11]

В ряде особенностей newLISP похож на Scheme. Как и в Scheme, в newLisp принято энергичное вычисление передаваемых параметров функции. Для переменных, примитивов и определяемых пользователем символов тут так же используется единое пространство имён[11].

Значимое отличие newLisp состоит в том, что по умолчанию в нём используется динамическая область видимости переменных. Если нужна лексическая (статическая) область видимости, это достигается через механизм т. н. контекстов[11].

История

Немецкий учёный-компьютерщик Лутц Мюллер разработал NewLisp как простой в изучении диалект лиспа[12]. В отличие от традиционных версий лиспа, newLISP проектировался как скриптовый язык. Автор ссылается[10] на статью «In Praise of Scripting: Real Programming Pragmatism»[13], которая была написана в рамках дискуссии, вызванной статьёй разработчика Tcl Джона Остераута «Сценарии: высокоуровневое программирование для XXI века»[14].

Язык был впервые реализован на рабочей станции Sun4 в 1991 г.[15] В 1993 году он был перенесён на шестнадцатиразрядную Windows 3.0, а в 1995 — на тридцатидвухразрядную Windows 95. В апреле 1999 года NewLISP был портирован на Linux и открыт под свободной лицензией. Весь код, специфичный для Windows был удалён, и, начиная с версии 6.0.25, поддержка этой операционной системы была прекращена. В 2001 году работа под Windows становится возможной благодаря Cygwin, вначале win-версия работала только в консоли, но в версии 6.3 с использованием Tcl/Tk был реализован кроссоплатформенный графический интерфейс пользователя newLISP-tk. В 2007 году была разработана GUI-библиотека newLISP-GS на базе Java, в настоящее время являющаяся основной реализацией графического интерфейса для newLISP. Ниже дана хронология ключевых изменений с 1990 по 2014 год[16].

Версия Год Основные изменения
1.0 1990 Первая версия, работала на Sun-4 под управлением SunOS/BSD 4.1
1.3 1993 Перенос на Windows 3.0
3.0 1995 Перенос на Windows 95
6.0 1999 Open source (GPL) версия для Unix/Linux
6.3 1999 newLISP-tk Tcl/Tk IDE
6.5.8 2002 Регулярные выражения PCRE
7.1-4 2003 Поддержка MacOS X и Solaris, PDF-руководство, catch и throw, контекстные переменные, Win32 DLL
8.0-3 2004 Массивы, поддержка UTF-8, запуск (fork) процессов, семафоры, разделяемая память, функция по умолчанию
8.4-7 2005 Неявная индексация массивов, поддержка локалей с разделением чисел запятыми, сигналы и таймеры, распределённые вычисления посредством net-eval
8.8-9 2006 Унификация в стиле Пролога, раскрытие переменных в стиле макросов, доработка поддержки неявного индексирования
9.0 2006 Поддержка 64-разрядной арифметики и обращения к файлам, дополнительные функции работы с массивами, режим HTTP сервера
9.1 2007 Компиляция для 64-разряднвх платформ, режим HTTP/CGI сервера, функторы в ref, ref-all, find, replace
9.2 2007 newLISP-GS — корссплатформенная GUI-библиотека для разработки пользовательских интерфейсов на newLISP
9.3 2008 FOOP — Функционально-Объектно-Ориентированное Программирование
9.4 2008 Cilk — API параллельного программирования для newLISP
10.0 2009 Общая очистка API, передача по ссылкам, новое унифицированное деструктивное API с использованием setf
10.1 2009 API взаимодействия между акторами на Mac OS X, Linux и других UNIX
10.2 2010 FOOP переделано на использование изменяемых (мутабельных) объектами
10.3 2011 Возможность переключать интернет протокол между IPv4 и IPv6
10.4 2012 Переписан интерфейс очереди сообщений и расширено API импорта с использованием libffi[en]
10.5 2013 Целочисленная арифметика неограниченной точности
10.5.2 2013 KMEANS кластерный анализ
10.5.7 2014 Компиляция в достаточно быстродействующий JavaScript, исполняемый на стороне браузера
10.6.0 2014 Нативное раскрытие макрофункций

Применение

Для веб-программирования c использованием newLisp может использоваться веб-фреймворк newLISP on Rockets[17][18], использующий на стороне браузера Bootstrap и jQuery и сохраняющий данные в SQLite[8]. На создание этого фреймворка автора вдохновил[19] более ранний фреймворк — Dragonfly[20][21].

На базе NewLisp реализован FuzzyLisp[22], библиотека для работы с нечёткой логикой[23].

Примечания

  1. http://www.newlisp.org/downloads/newLISP-10.7.0-Release.html
  2. Смедли, 2014.
  3. В операционных системах linux-семейства запускается командой newlisp-edit
  4. Mendez, 2015, 1.5 A Quick Start Using NewLisp, pp. 8—13.
  5. Смедли, 2015, с. 25.
  6. Mendez, 2015, 4.2.4 Building a Simple User Interface, pp. 102—104.
  7. 1 2 3 4 Lutz Mueller. newLISP Code Patterns. §13. UDP communications. www.newlisp.org. Проверено 30 мая 2016.
  8. 1 2 Смедли, 2015, с. 24.
  9. Mendez, 2015, Appendix A. NewLisp Versus Common Lisp, pp. 347—352.
  10. 1 2 newLISP - Differences to Other LISPs. www.newlisp.org. Проверено 30 мая 2016.
  11. 1 2 3 Lazar, 2009, newLISP: the language.
  12. Mendez, 2015, 1.4 The NewLisp Implementation, p. 7.
  13. Ronald P. Loui. In Praise of Scripting: Real Programming Pragmatism // Computer. — 2008. — Июнь (т. 41, № 7). С. 22—26. DOI:10.1109/MC.2008.228. Архивировано 23 сентября 2015 года.
  14. Остераут, 1998.
  15. Смедли, 2015, с. 22.
  16. Lutz Mueller. Programming Language Projects. NewLISP. newLISP History. www.donlucio.net. Проверено 30 мая 2016.
  17. The newLISP on Rockets Blog. newlisponrockets.com. Проверено 29 мая 2016.
  18. Проект newLISP-on-Rockets на сайте GitHub
  19. Rocket Man. Converting other newLISP code to Rockets. Post #: 85. newlisponrockets.com (21 февраля 2013). Проверено 30 мая 2016.
  20. Marc Hildmann, Greg Slepak. Welcome - Dragonfly web framework. dragonfly.apptruck.de. Проверено 30 мая 2016.
  21. Проект Dragonfly на сайте GitHub
  22. Luis Argüelles. FuzzyLisp. www.fuzzylisp.com. Проверено 29 мая 2016.
  23. Mendez, 2015.

Литература

Ссылки

Данная страница на сайте WikiSort.ru содержит текст со страницы сайта "Википедия".

Если Вы хотите её отредактировать, то можете сделать это на странице редактирования в Википедии.

Если сделанные Вами правки не будут кем-нибудь удалены, то через несколько дней они появятся на сайте WikiSort.ru .




Текст в блоке "Читать" взят с сайта "Википедия" и доступен по лицензии Creative Commons Attribution-ShareAlike; в отдельных случаях могут действовать дополнительные условия.

Другой контент может иметь иную лицензию. Перед использованием материалов сайта WikiSort.ru внимательно изучите правила лицензирования конкретных элементов наполнения сайта.

2019-2024
WikiSort.ru - проект по пересортировке и дополнению контента Википедии