Язык программирования Лисп (Lisp): основные элементы, обучения, области применения
Опубликованно 26.08.2018 22:54
Lisp является аббревиатурой для LISt Processing Language — список основной в структуре языка. Эти языки семьи позволяют профессионалам записывать программы, которые работают быстрее, чем в других языках. Язык программирования Lisp и его диалекты, такие как Common Scheme / Clojure, способствуют созданию мощного и гибкого программного обеспечения, необходимого для сложных и быстро всех областях науки и техники.
Есть ключевые особенности, которые отличают языки этой семьи, других языков программирования и делает их идеальными инструментами для приложений искусственного интеллекта и машинного обучения. Lisp имеет ряд названий языков, DSL, которые специализируются в конкретной области, облегчают формулирование проблемы, поиск и помощь в создании стандартов и лучших практик программирования в конкретной области исследования. История
Lisp-второй старейший язык программирования высокого уровня (после FORTRAN), впервые разработана Джоном Маккарти (Massachusetts institute of technology). Хотя он используется в качестве языка программирования во многих областях науки, но после Куда-конференции 1956 года, которая считается местом рождения дисциплину искусственного интеллекта(ИИ), то в основном определены в этой области науки в течение многих лет.
В первые годы его неровным диалекты уважал, поскольку находили свое применение на различных платформах. В 1984 году, усилия ученых по стандартизации программного обеспечения языков, привели к разработке Common Lisp, который в 1994 году, стал стандартом ANSI. Сегодня, большинство прикладных направлений, стараются соблюдать этот стандарт.
Еще в начале диалект Лиспа-Scheme — сохранился до наших дней, является стандартным и широко используемым языком программирования с нуля. Хорошо, что он похож на Lisp, но отличается от него некоторыми элементами, которые позволяют рассматривать его как отдельный язык. Ключевые моменты программирования
Lisp позволяет программистам писать быстрее. Эмпирическое исследование показывает, что, когда эксперты решают те же проблемы в Lisp, C / C ++ и Java, программы на Лиспе меньше, и, следовательно, легче поддерживать, он требует меньше времени для разработки и запуска. Язык программирования Lisp облегчает создание макросов, которые облегчают создание расширения для блоков, чтобы помочь специалистам легко разрабатывать плагины для программного обеспечения. Это, в свою очередь, открывает путь к созданию отказоустойчивого домена языков в приложениях, в любой области исследования или специализации.
Текущее состояние поиска Lisp в области компьютерных наук и технологий находится в точке, когда предусмотреть создание универсальной базы языка, что очень важно, учитывая, в частности, документированы основные недостатки языков программирования, таких, как R и Python. Основные элементы языка имеют несколько другие функции, которые отличают его от других: В Lisp, программисты обычно работают в специальной инкрементной среды интерактивного программирования, называется цикл read-eval-print (REPL). Это означает, что система непрерывно считывает выражения, введенные пользователем, считает и выводит результаты. Common Lisp был разработан с нуля, чтобы создать более сложные и длительные приложений и поддерживает, а также «горячие» программы исполняемый программный код может быть изменен без перерыва. Язык программирования Lisp изобрел обработки исключений, имеет инструмент обработки ошибок - системы «условия», которое идет рядом с большинство других языков. В целом реализация Lisp, как правило, поставляются со сложным «интерфейс функции " внешнего» (FFI), которая позволяет прямой доступ к Lisp-код, написанный на C или C ++, а иногда и в Java-код. Это позволяет программистам использовать библиотеки, написанные на других языках, что делает эти библиотеки зависит от Lisp. Lisp позволяет программистам возможность выполнять сложные операции обработки данных, математика, дизайн, выразительные и естественного выражения. Основные концепции
Lisp является первым представителем парадигмы язык функционального программирования с нуля. В отличие процедурного и объектно ориентированных языках, является теоретическая модель, которая является машина Тьюринга, теоретической, модели вычислений Lisp-это Лямбда-исчисление, разработанное церкви Алонсо. Это различие может быть понято в следующих областях: В ванных языки, код работает с данными. В объектно-ориентированных языках, объекты инкапсулируют код и данные, которые взаимодействуют друг с другом. В языках данные передаются через функцию, но не имеют отдельного собственного существования. Чистые и функциональные, языки, это однодневка.
Тем не менее, большинство функциональных языков (в том числе Lisp) обеспечивают механизм для хранения некоторых данных, даже когда они не проходят через функции. Это принимает форму, что Common Lisp называется «специальные переменные», и эквивалент «глобальных переменных» на других языках программирования. Хотя то, что он является функциональным языком, он не является чисто функциональной, но может быть использован как один, избегая императивных конструкций. Интерактивность и гибкость
Скорость языки Lisp обычно эквивалентна интерпретации языков. Это также источник в старый миф, что, если он интерпретируется, и что, следовательно, должно быть медленным, но это не так. Компиляторы для языка Lisp, существует с 1959 года, и теперь все основные реализации Common Lisp, может быть составлен непосредственно с компьютерного кода, который часто совпадает с кодом C. Например, CL—PPCRE библиотека выражений, написанный на Common Lisp, быстрее, чем регулярных выражений Perl на некоторые тесты в C, и обучение Lisp намного проще.
Программисты, которые используют интерпретируемые языки, такие как Python или Perl, для удобства и гибкости должны использовать написание на C /C ++ для критических частей кода и имеют уникальные возможности. Было показано, прямой benchmark со стороны создателя языка программирования R, Росс Здесь, которая обеспечила тесты показывают, что необязательно декларации типа Lisp и компилятор машинного кода позволяют использовать их в 380 раз быстрее, чем R, и в 150 раз быстрее Python.
И не только код, сгенерированный компилятором по умолчанию, эффективно. Common Lisp, в частности, предлагает уникальные возможности для оптимизации куски кода, которые должны быть действительно очень быстрыми. Это включает в себя так называемые макросы компилятора, который может конвертировать вызовы функций в более эффективный код во время выполнения и обязательного дизассемблер, которая позволяет программистам уточнить критиков, в зависимости от времени, до того, что скомпилированный код не будет соответствовать их ожиданиям. Оценка форм и макросов
Если первый символ в списке, подлежащего оценке, это имя специальную форму или макрос, так как интерпретатор не оценивает аргументы. Однако, специальную форму или макрос может оценить некоторые из аргументов, как это обрабатывается, изменяется в специальной форме макроса. Например, специальная форма setq вычисляет второй аргумент, но не первый. Пример: рассмотрим второй строке листинга кода: (setq a 1) (setq a (+ 2 3)).
Потому что форма setq оценивает его второй аргумент (+ 2 3) оценивается, получая 5. Но форма не оценивается как 5, и связано. Если автомобиль был функции или определенной формы, который оценивал два аргумента, операции сообщается, что 5 должен быть равен 1, что, очевидно, абсурдно операции! Некоторые формы и функции
Вот некоторые из специальных форм, макросов и lisp. Некоторые специальные формы и макросы Цитате специальной формы, которая просто передает ваши ценные аргумент. Например, значение (quote a) характер а. Для удобства, считается, что выражение для формы anything эквивалент (цитата anything).
Setq-это специальная форма, которая оценивает его второй аргумент, а затем присваивает значение переменной от ее аргумента.
Пусть это специальной формы, которая создает переменные лексические. Она представлена в форме: (let ({( выражение, переменная )} *) { form } *). Формы оцениваются в контексте, в котором каждая из переменных является лексической переменной, связанной с первоначальной стоимости. Все выражения вычисляются до того, как любая из переменных связывается, таким образом, выражение не может использовать ранее объявленную переменную, пусть.
If специальной формы, который выбирает одно из двух выражений, чтобы оценить результаты какого-либо теста, и его значение является значением выражения. Это похоже на пробации, выражение C-семья. Обе формы должны быть простыми s-выражения, но progn вы можете использовать, чтобы сгруппировать несколько фигур (по аналогии с { ... }Java), но это, конечно, не чисто функциональный стиль.
Форма else может быть опущен, в этом случае, если тест является ложным, результатом является nil. Конд - это макрос, который выбирает ряд выражений в несколько для оценки. Он представлен в виде основных (cond {( test {form } *)} *). Каждый тест оценивается поочередно, пока не будет возвращено никаких результатов, кроме nil - в этот момент будет оценен форму ниже. Стоимость последних оценивается, форма становится значением cond.
And — макрос с любым числом аргументов, которые, как правило, все испытания - true.
Золото — макрос с любым числом аргументов, останавливается оценке аргументов, как только происходит истинное (не ноль).
Defun - макрос, чтобы определить, вызываемых функций. Базовый синтаксис (defun name ({ параметр } *) { form } *).
Лямбда — макрос для определения анонимных функций. Операции со списками
Функциональные языки программирования Лисп, означают, что аргументы вычисляются до выполнения операции cons - 2 аргумент любого типа. Создает пунктирную пара (cons cell), состоящий из 2 аргументов: (cons 'a 3) (a . 3) ибо - 1 аргумент, который должен быть истинным или пунктирными списка. Экстракт, так как в первую ячейку списка. (car '(a 3)) - это имеет. cdr - 1 аргумент, который должен быть истинным или пунктирными списка. Выдержка из cdr в первую ячейку списка. Если список состоит из более чем одной ячейки, cdr, сам список.
(cdr '(a 3)) - (3). каар, cdar, cadr, cddr и несколько - в любой комбинации из четырех элементов.
List - разное количество аргументов любого типа. Преобразует аргументы в данный список. Например, (list 'a 'b '(1 2)) (a b (1 2)) добавить любое количество аргументов, все, кроме последнего, должны быть реальные списки. Объединяет свои аргументы в список, который будет верно. Например, (append '(1 2) '(3 4)) - 1 2 3 4). Арифметические операции
Lisp-это язык программирования, который поддерживает арифметические операции, встречаются в большинстве языков программирования, а также многие частные лица. Большинство операций принимают произвольное количество аргументов, например:* 2 3 4 5) оцениваются в 120.
Все функции, у которых аргументы вычисляются до выполнения операции: Добавка — любое число аргументов, без аргументов, дает один элемент добавить, 0-отрицание аргумента, вычитание двух или более аргументов, незаконно, без аргументов. Размножение — любое число аргументов, без аргументов, дает только один элемент для умножения, 1. /взаимной — единственный аргумент. Разделение на два или несколько аргументов. Использование AutoCAD
Создание папки вне AutoCAD необходимо сохранить все файлы Autolisp и другие файлы пользователя. Перед запуском Лиспа, выполняют следующие действия: Создать папку для размещения файлов C: autocad_custom . Создать вложенную папку для Lisp. C: autocad_custom autolisp . Поместить пользовательский Lisp файл в папку autolisp. Запустите Lisp для autocad. Перейти в раздел «Инструменты "-> " Настройки» и выбрать вкладку «ФАЙЛЫ». Развертывание путь поиска файлов поддержки, а затем нажмите на кнопку «ДОБАВИТЬ» справа. Нажать кнопку «ОБЗОР», чтобы найти папку, autolisp, созданный ранее, а затем нажать кнопку, чтобы внести изменения.
Скачать файл Lisp, язык программирования: Ввести APPLOAD в командной строке и нажмите клавишу Ввод. Перейти в папку autolisp и нажать на файл Lisp, а затем нажмите на кнопку LOAD, а затем ЗАКРЫТЬ.
Использование файла Lisp: Обычно, после загрузки введите имя файла Lisp для его использования. Иногда, после загрузки, появляется сообщение, что нужно ввести предначертана для использования Лиспа. Если исключить расширения .lsp не работает, и сообщение, что, чтобы войти, надо открыть файл Lisp или в VLIDE или NOTEPAD и видеть, что часть defun c, чтобы определить это, вы должны ввести, чтобы запустить файл после скачивания. Искусственный интеллект Franz
Franz Lisp-это первое изобретение в области искусственного интеллекта, лидер в технологии Семантической Graph Database. AllegroGraph является сверхмасштабируемая, производительности и транзакций базы данных семантической графика, которая превращает сложные данные в бизнес-идеи. Allegro CL представляет собой среду программирования Lisp для создания критически важных приложений, которые позволяют решать проблемы реального мира.
Franz Inc. стремится разрабатывать продукты, основанные на рынке, высокий уровень качества продукции и гибкой поддержки и обслуживания клиентов. Клиенты Franz включают в себя десятки компаний из списка Fortune 500, которые охватывают здравоохранение, спецслужб, науки о жизни, электросвязи и исследовательской точки зрения организации, и ищут решения сложных проблем. Области применения
В 1980-х и 1990-х годов, были предприняты огромные усилия для объединения сфер применения Lisp. В результате нормализации Common Lisp, стандарт ANSI которой была опубликована в 1994 году, а также самый известный пользователям расширением ISO, выпущенное в 1997 году на основе своей ISLISP ISO и пересмотр 2007 ISO / IEC 13816: 2007 (E) .
Тогда Лисп был гораздо более популярным, чем сейчас. Несмотря на самые популярные языки рядом с машиной (C, C++, Lisp остается довольно язык, используемый, в частности, в качестве встроенного языка в приложениях, где он является языком расширения. Наиболее известный случай Lisp встроена в использовании текстовый редактор Emacs и язык AutoLISP в AutoCAD .
Lisp занимает четвертое место в строках кода, используемые для реализации пакета 8 600, имеющихся в операционной системе Debian, выпущенных в июне 2005 года. Первые восемь языков распределяются следующим образом: C (57 %) , C ++ (16,8 %), Shell (9 %), Lisp (3 %), Perl (2,8 %), Python (1,8 %), Java (1,6 %), Fortran (1,2 %). В июле 2013 года, Lisp был на 15-й позиции индекса TIOBE.
Сегодня, есть еще несколько популярных вариантов Lisp, например: Common Lisp. Scheme. EmacsLisp , для программирования редактора Emacs.
Кроме того, существуют библиотеки для различных языков программирования и реализовать подмножество Lisp или Scheme, или, по крайней мере некоторых функций. Автор: Иван 15 Июля 2018 Года
Категория: Техника