Вход

Области применения языка LISP

Рекомендуемая категория для самостоятельной подготовки:
Курсовая работа*
Код 206152
Дата создания 08 мая 2017
Страниц 39
Мы сможем обработать ваш заказ (!) 22 апреля в 12:00 [мск]
Файлы будут доступны для скачивания только после обработки заказа.
1 600руб.
КУПИТЬ

Описание

Заключение

В нашем исследовании мы рассмотрели разные отрасли, которых целесообразно использование языка программирования LISP и активно используется в данных отрослях. Из исследования видно что, язык программирования имеет разные диалекты. Хотя изначально создавался как язык обработки списков, данный язык может быть использован не только для обработки списков. Были попытки применения языка LISP для создания систем искусственного интеллекта. Хотя как в мысленном эксперименте с «Китайской комнате» мысленно было показано, что интеллект это не только манипуляции с символами, но данная парадигма дала возможность создавать разумные машины. Если обратить внимание на современные производства, которые состоят из множества промышленных роботов, станков с программным управлением, систем безопаснос ...

Содержание

Оглавление

Введение 3
1. Особенности языка LISP 9
2. Экспертные системы 13
3. Логическое программирование, доказательство решения. 16
4. Веб технологии. 21
5. Программирование игр. 22
6. Моделирование систем. 27
7. Обработка сигналов и распознавание образов. 29
8. Точное машиностроение, робототехника, проектирование систем. 31
9. Военная отрасль. 32
10. Банковская сфера. 34
Заключение 35
Список Литературы. 38



Введение

Введение

Одна из первых версии языка LISP была придумана Джоном Мак-Карти в 1956 году.
Сформулированная Джоном Мак-Карти концепция предполагала символьную обработку данных, которая в свою очередь восходит к идеям лямбда –исчислении начала 20 века.
Язык LISP – является аббревиатурой, дословно переводится как язык обработки списков . Как видно из наименования языка, основным предназначением языка первоначально являлось обработка линейных списков.
Пройдя долгий путь развития, на сегодняшний день язык LISP имеет несколько ответвлений. Одним из основных стандартизованных видов языка является Common LISP стандартизованный ANSI .
Common LISP поддерживает различные парадигмы: процедурное, функциональное, объектно-ориентированное программирование. Что позволяет создавать на данном языке п рограммы различной степени сложности.
Scheme – один из известных диалектов LISP. Scheme – была придумана Гай Стилом и Джеральдом Сассменом в середине 1970 годов в Массачусетском технологическом институте. В отличие от Common Lisp диалект Scheme является более простым в освоении. Одновременно с этим можно сказать, известны еще несколько десятков диалектов LISP, которые создавались под конкретные задачи. Поэтому из развитых и поддерживаемых диалектов хорошо известны только Common LISP виду поддержки американского института стандартизации и Scheme - поддерживаемая Массачусетским технологическим институтом и сообществом разработчиков Open Source Foundation .

Clojure – диалект LISP являющийся сравнительно новым диалектом LISP созданный в 2007 году. Является альтернативным языком для платформы Java и .Net. Отличительными особенностями данного языка можно выделить, что язык может использовать программную транзакционную память, что уже показывает, что язык хорошо приспособлен для написания программ, в которых используются транзакции, а именно это платежные системы, банковских приложения. Транзакционная память необходима в тех отраслях, где требуется контроль переменных, и требуется целостность всей операции. Одним из примеров может являться платежная система, где в силу различных факторов, может произойти программный сбой. Но программный сбой не должен вести к потере средств клиента, поэтому возникает необходимость в отслеживании атомарности операции, функции.
Reduce – диалект Common Lisp является– свободной системой компьютерной алгебры. По сути является бесплатным и свободно развиваемым аналогом платных пакетов алгебры как – Marthematica, Maple, Mathсad. По возможности также сопоставим с возможностями данных пакетов. Позволяет находить численные решения, производить аналитические решения, строить графики посредством пакета GNUplot .
MacLISP помимо символьной обработки, широко использовался в традиционных числовых вычислениях, применяемых, например, в обработке речи и изображений. Кроме исследователей ИИ и разработчиков алгебраической системы Максима на Маклисп оказали влияние и работы групп в МИТ по робототехнике, обработке речи и изображений. Исходя из требований, предъявляемых этими областями, в Маклисп были включены новые математические типы данных, такие как матричная и битовая обработка, а также широкий набор арифметических функций и средств. Быть может, важнейшая из них - возможность вычислений с неограниченной точностью, основывающаяся на созданных Кнутом в 1969 году алгоритмах. MacLISP был также первой LISP-системой для которой создан хороший транслятор. Транслятор генерирует машинную программу в форме списков. Машинный код в виде списка легко обрабатывать и результирующий код для числовых задач получался эффективнее, чем у лучших трансляторов фортрана.Однако большую часть своих свойств MacLISP приобрел под влиянием стоящих перед исследователями ИИ проблем и накопленного опыта. Так в язык попали макросы чтения и таблицы чтения, позволяющие легко изменять и расширять структуру языка. Таким же образом из требований к программам и окружению возникли управляющие структуры, механизмы обработки прерываний и ошибок, а также использование управляющих символов, создан и интегрирован в систему экранный редактор, появились управление и взаимодействие параллельных процессов
Основное внимание разработчики MacLISP сосредоточили на эффективности. Этому служат указания, уточняющие способы обработки аргументов функций, а также экранирование от вмешательства программиста внутренних механизмов системы. За счет этих мер скорость работы Маклиспа в 1,5 - 2,5 раза выше, чем Интерлисп.Всего в Маклиспе используется около 400 функций. Самым большим недостатком системы является то, что ее никогда не документировали должным образом. Документация по этой системе разбросана по различным отчетам и руководствам. MacLISP был исследовательской системой и не предназначался для обучения и промышленного использования.
Интерпретатор MuLISP-85, разработанный для ПЭВМ серии IBM PC -удачный вариант реализации диалекта языка, включающий сравнительно ограниченный набор базовых функций (около 260) и оказавшийся вследствие этого более простым для изучения.
По сравнению с CommonLISP диалект MacLISP не имеет такого широкого спектра доступных типов данных. В нем обеспечивается работа только с двумя типами числовой информации: целыми числами с любым основанием и рациональными. В диалекте отсутствуют средства работы со структурами, массивами, потоками и другими типами данных, указанная реализация языка LISP имеет одно существенное преимущество - возможность пополнения базового набора функций путем подключения подпрограмм, написанных на языке ассемблера, что позволило повысить гибкость использования интерпретатора и эффективность прикладного программного обеспечения, создаваемого на его основе. Возможность такого пополнения отсутствует в большинстве других Лисп - систем, являющихся в этом смысле замкнутыми программными продуктами. Среди других, вероятно, менее существенных, особенностей системы можно указать на реализацию специального механизма, позволяющего не заботиться о присваивании начальных значений литеральным атомам, получающих изначальное значение, равное "печатному" имени самого атома. Еще одной особенностью диалекта является возможность использования новой синтаксической конструкции "встроенный COND", существенно сокращающей тексты описаний функций пользователя и применяемой при записи тел функций и лямбда - выражений.
Набор базовых функций MuLISP-интерпретатора включает ряд функций, обеспечивающих доступ практически ко всем функциям ОС ЭВМ через соответствующие прерывания. Наконец, указанная Лисп-система обеспечивается библиотеками Лисп-функций, дополняющими базовый набор функциями, имеющимися в диалектах CommonLISP и InterLISP, что облегчает решение проблемы переносимости исходных текстов программных модулей, а также библиотеками, позволяющими выполнять манипулирование окнами на экране дисплея и обрабатывать управляющие воздействия через устройство типа "мышь". В комплект дополнительного программного обеспечения к интерпретатору входят интерактивный редактор текстов и простая обучающая система, написанные на диалекте языка MuLISP .
InterLISP появился в 1972 году из ББН-Лиспа. К 1978 году, когда вышло описание InterLISP, язык и система уже достаточно стабилизировались. Интерлисп уже не был языком в том же смысле, что и MacLISP или другие LISP-системы или обычные традиционные системы программирования. Он представлял собой интегрированную среду программирования, в которую вошло множество различных вспомогательных средств. InterLISP стал классическим примером хорошо развитых программных средств и средств в системах разделения времени.
Этот диалект наряду с CommonLISP один из наиболее распространенных, имеет достаточно развитый аппарат представления и манипулирования различными структурами данных, включая массивы. Среди общих особенностей данного варианта языка следует отметить использование для обозначения встроенных функций нетрадиционных имен, что порой затрудняет перенос готовых программных продуктов на другие диалекты и другие
В 1974 году Xerox начала разработку для InterLISP персональной лисповской рабочей станции под названием Alto. В реализации LISP для Alto впервые применили спроектированную специально для языка LISP и программируемую систему команд и мини-ЭВМ, способную с более высокой производительностью, чем универсальные ЭВМ, интерпретировать программы LISP. Из этой машины Alto впоследствии развились LISP-машины серии 1100 фирмы Xerox. На основе версии Интерлиспа, работавшей в системе разделения времени, была создана совместимая снизу вверх версия LISP InterLISP-де, используемая на LISP - машинах серии 1100. В ее пользовательский интерфейс входили многооконное взаимодействие, графика с высокой разрешающей способностью, средства выбора из меню и мышь, а также ориентированный на использование экрана инспектор структур данных. Идея разделения экрана на многие независимые окна родилась в XLG. Алан Кэй уже в конце 60-х годов предложил такую идею подхода к компьютерам будущего и интерфейсу между человеком и машиной. Работа XLG привела к созданию в 70-х годах разработки языка программирования Smalltalk и объектного программирования.При создании InterLISP работа велась весьма тщательно. Система хорошо документирована и более новые версии совместимы с более ранними. Так преимуществом системы стало непрерывно пополняющееся большое количество переносимого программного обеспечения. С другой стороны, ограничение системы старым, зафиксированным уже в конце 70-х годов, диалектом сделало систему отчасти устаревшей и трудно расширяемой. В InterLISP среди прочего отсутствуют иерархические типы данных, объекты и замыкания. К тому же он базируется на динамическом связывании, тогда как новые версии LISP - статические. Однако из InterLISP берет начало новая версия - CommonLISP. Для программирования на более высоком уровне в InterLISP разработаны такие средства, в которых уже присутствовали объекты. InterLISP - столь замкнутая система, что доступна только ее оттранслированная версия в машинных кодах. В некоторых других системах, таких как, например Зеталисп, поддерживается версия LISP на исходном языке, которая доступна пользователю и может модифицироваться им. Развитие закрытых систем, похожих на InterLISP, связано с ресурсами, имеющимся у создавших их лабораторий.
InterLISP использует свыше 500 функций и большое количество системных имен и флажков, с помощью которых можно настроить и подогнать систему.
InterLISP реализован в системе разделения времени на многих больших ЭВМ. В Интерлиспе основное внимание было уделено удобству системы для пользователя. Главный принцип разработчиков этого диалекта: все, что может иметь место в системе, должно естественно выражаться в терминах ее входного языка. Поэтому в Интерлисп программисту доступно все. Он может переопределять любые, в том числе и встроенные, функции; задавать и переопределять реакции на ошибки; работать непосредственно с уровня входного языка с внутренними структурами интерпретатора и т. д. При этом система поддерживает свою целостность и работоспособность.

Фрагмент работы для ознакомления

Интересен подход в данных играх в том, в зависимости от выбора пользователя меняется конечный результат, тем самым игры становятся более интересными, так как нелинейный сюжет добавляет дополнительную динамику в игровой процесс.
В частности программирование игр является частным случаем задач с использованием доказательства решения или же задач, в которых требуется найти возможные сценария развития. Одним словом методы искусственного интеллекта и поиска решения посредством символьного вычисления используется в области построения игр. Тем самым можно с уверенностью сказать, что LISP активно используется в сферах развлечении.
Известно, что около 90% игрового рынка приходятся на Си-подобные языки программирования: C++, С# и Java. Если С++ и С является основным для разработки приложении, в платформах таких как Linux, Windows, MacOs, Android. Поэтому LISP занимает нишу скриптовых языков программирования, которые нужны для описания бизнес-логики. Аналогично можно увидеть в известном графическом редакторе GIMP7. Gimp – графический редактор, который изначально был написан на C++, но всевозможные дополнения к нему, можно создавать на различных скриптовых языках. Из поддерживаемых языков редактором GIMP – это Tiny Scheme, Python, Ruby, Perl. Tiny Scheme - является ничем иным, как диалектом языка LISP. В свою очередь Tiny Scheme является некоторым расширенным подмножеством языка Scheme. Tiny Scheme – или же как его называют разработчики – ScriptFu. Использование скриптовых языков
в графическом редакторе обусловлено тем, что множеству различных разработчикам, дизайнерам по всему миру требуется решать различные задачи в концепции GIMP имеется ядро, и некоторое количество функционала которое поддерживается самими разработчиками и сообществом разработчиков программ с открытым исходным кодом. Но отдельные дизайнерские фирмы не будут занимается правкой и дополнение GIMP так как это требует огромных ресурсов для внедрения функционала, и не факт что данные изменения примутся остальными разработчиками. Поэтому программа развивается в том направлении что, есть основное ядро и некий функционал который по минимуму необходим большинству дизайнеров и тем пользователем кто пользуется программным продуктом GIMP. А уже для конкретной фирмы занимающейся дизайном, сама фирма может нанять программиста или же самими дизайнерами написать скрипт на языке Scheme – и данный функционал будет доступен из программы GIMP. Из вышесказанного можно сделать, что скрипты, могут быть использованы для расширения функционала программы GIMP. Особенно много различных скриптовых языков используется разработчиками игр, это диалекты LISP – Gambit Scheme, Chiken Scheme, Afair,
Хотя бывают примеры и самостоятельных игр разработанных на языке LISP но в ходе исследовании сделанных в сети «Интернет» можно выделить интересные примеры небольших игр, которые обычно приводится в качестве примеров в обычных языках программирования рассмотрим программу угадывания числа на языке LISP в качестве среды исполнения программы была выбрана IDE –Home LISP. Программа состоит из десятка строк кода.
(defun Угадай-ка (fname &optional (k 3))
  (let* ((fi (gensym 'fi)) (base nil) (word nil))
    (filOpen fi fname _INPUT)
    (loop
       (if (filEOF fi) (return nil))
       (push (filGetLine fi) base))
    (filClose fi)
    (setq word (nth (rnd (length base)) base))
    (dotimes (i k (strCat "Не угадали. Слово " word))
      (printsline "Ваше предположение: ")
      (when (eq word (read)) (return 'ok!)))))  
Файл с данными представляет массив строк.
дедка
бабка
внучка
жучка
кошка
мышка
репка
Этот небольшой отрезок кода демонстрирует использование LISP в программе, в которой требуется с трех попыток угадать персонажа, который загадал компьютер, если угадали, то программа выведет текст «Ok. В отличие от обычных С, Pascal подобных языков программирования сразу видно что текст программы тяжело воспринимается на взгляд, возможно это нарабатывается в процессе работы с языком LISP. Также как в стандартных языках программирования для загрузки данных мы открываем файл, и поэлементно считываем данные, далее производя те или иные логические действия по сравнению строк, запроса данных от пользователя.
Очень интересным показался пример игры в морской бой найдены в сети «Интернет».
(defun chk-pos (i j tmp)
  (or (member (list i (+ j 1)) tmp)
      (member (list i (- j 1)) tmp)
      (member (list (+ i 1) j) tmp)
      (member (list (- i 1) j) tmp)
      (member (list (+ i 1) (+ j 1))tmp)
      (member (list (- i 1) (- j 1)) tmp)
      (member (list (+ i 1) (- j 1)) tmp)
      (member (list (- i 1) (+ j 1)) tmp)))
     
(defun sea-battle (fld)
  (let ((n (- (length fld) 1)) (ships 0) (tmp nil))
    (iter (for i from 0 to n)
      (iter (for j from 0 to n)
        (when (eq '* (nth j (nth i fld)))
          (unless (chk-pos i j tmp) (counting 1 into ships))
          (collecting (list i j) into tmp)))) ships))          
 
 
(sea-battle '((* _ _ _ *)
              (* _ * _ _)
              (* _ * _ *)
              (_ _ * _ *)
              (* _ _ _ _)))
 
 
==> 5
Можно было бы представить сколько строк кода займет программа на языке программирования С++ имеющий такой же функционал. Первое что, можно заметить идет активная работа со множествами, что позволяет намного уменьшить исходный код программы. В тоже время последнее время многие языки программирования впитали в себя от языка LISP. К примеру языки программирования такие как C# и Java также позволяют работать со множествами. Но отличие от объектно-ориентированных языков программирования C# и Java мы видим очень сложное восприятие программы, в силу сложности языковых конструкции. Но в тоже время – это делает язык очень гибким, и мощным. Структура языка такова, что заставляет программистов менять образ мышления. В целом –это отражается в том, что если Cи –подобных языках нас учат делать все пошагово –последовательно, здесь больше делается акцент на работу с множествами и списками. Решение задач сводится к решению задач посредством пересечения и выборки множеств. В языке LISP cсчитывание и вывод данных возможно сделать одним оператором, с одной стороны - это упрощает программу, с другой для программистов разрабатывающих программное обеспечение на языках Cи - это будет выглядеть странно, в силу того что в Си нам придется самому описывать считывание в список, поэлементный вывод данных на экран. Аналогично можно видеть и сравнение с множествами в LISP условие отбора списка можно сделать одним предложением в других языках придется перебирать элементы массива или списка и к каждому применять условие отбора и на основе данных прошедших условие будет создаваться новый массив данных. В силу возможно данных причин язык одновременно является и удобным и трудно воспринимаемым.
4. Моделирование систем.
Моделирование дискретных систем с неполной информацией, также можно рассматривать как одну из областей применения языка LISP. Хотя для моделирование систем использовались как специальные языки такие как Симула, но стандартные объектно-ориентированные языки программирования как С++ , Pascal. Common Lisp не имеет таких возможностей для моделирования систем с точки зрения богатой компонентной базы в своем развитие какие предлагают IDE8 для Pascal – Delphi, Lazarus, или же для С++ Borland, Visual Studio.

Список литературы

Список Литературы.

1. "Программирование на языке ЛИСП в системе muLISP-90". Байдун В.В., Кружилов С.И., Сергиевский А.Е, Чернов П.Л. - М.: Моск. энеpг. ин-т, 1993. - 40 С.
2. "Функциональное программирование". Хендерсон П.: Пер. с англ.-М.: Мир, 2003. - 637 С.
3. "Мир Лиспа". Хювёнен Э., Сеппянен Й. В 2-х т. / Пер. с финск.. - М.: Мир, 2000. - ISBN 5-03-001935-9
4. Язык программирования XLISP". Тужилов И. В. Учеб. пособие. - Пенза: Изд-во Пенз. гос. техн. ун-та, 2004. - 126 С
5. Х. Абельсон, Д. Сассман. Структура и интерпретация компьютерных программ. — Книга и курс лекций MIT. В качестве основного языка используется Scheme.
6. Paul Graham. ANSI Common Lisp. — Prentice Hall, 1995. — ISBN 0-13-370875-6 (англ.). Перевод: Пол Грэм. ANSI Common Lisp. — СПб.: Символ-Плюс, 2012. — 448 с.— ISBN 978-5-93286-206-3.
7. Хювёнен Э., Сеппянен Й. Мир Лиспа. В 2-х т. / Пер. с финск.. — М.: Мир, 1990. — ISBN 5-03-001935-9 (русск.). — ISBN 5-03-001336-9. — ISBN 951-26-2787-6 (финск.)
8. Paul Graham. On Lisp. — Prentice Hall, 1993. — ISBN 0-13-030552-9 (англ.).
9. А.П. Крюков, А.Я. Родионов, А.Ю. Таранов, М.Е. Шаблыгин "Программирование на языке R-Лисп" М. "Радио и связь", 1991
10. Н.Н. Дацун, А.П. Хован "Интернет-учебный курс для обучения языку Лисп" в материалах конф. "Вирт-2001"
11. У. Маурер "Введение в программирование на языке Лисп" М. 1976




12. Т. Пратт "Языки программирования: разработка и реализация" М. 1979
13. Л.В. Городняя "Основы функционального программирования" Новосибирск 2004г.
14. pcl.catap.ru — русский перевод книги en:Practical Common Lisp (англ.)
15. Cookbook — русский перевод (незаконченный) сборника рецептов Common Lisp Cookbook (англ.)
16. lisp.ru — ресурсы по языку Лисп (учебники, статьи).
17.lisper.ru — сайт, посвящённый Common Lisp, написанный на самом Common Lisp
18. lisp.ystok.ru — Лисп у «Истоков» (литература, ссылки, проекты с исходным кодом).
19. ti.arc.nasa.gov›m/pub-archive/archive/0176.pdf – ссылка на систему RemoteAgent от NASA.
20. flownet.com›gat/jpl-lisp.html – описание статьи о системе RemoteAgent
21. http://iloveponies.github.io/120-hour-epic-sax-marathon/index.html - сайт программирование на языке Clojure
22. https://psg.com/~dlamkins/sl/cover.html - статья по языку LISP Successful Lisp:How to Understand and Use Common Lisp
Очень похожие работы
Пожалуйста, внимательно изучайте содержание и фрагменты работы. Деньги за приобретённые готовые работы по причине несоответствия данной работы вашим требованиям или её уникальности не возвращаются.
* Категория работы носит оценочный характер в соответствии с качественными и количественными параметрами предоставляемого материала. Данный материал ни целиком, ни любая из его частей не является готовым научным трудом, выпускной квалификационной работой, научным докладом или иной работой, предусмотренной государственной системой научной аттестации или необходимой для прохождения промежуточной или итоговой аттестации. Данный материал представляет собой субъективный результат обработки, структурирования и форматирования собранной его автором информации и предназначен, прежде всего, для использования в качестве источника для самостоятельной подготовки работы указанной тематики.
bmt: 0.0059
© Рефератбанк, 2002 - 2024