Логотип Автор24реферат
Задать вопрос
Реферат на тему: Обзор языка программирования LISP
100%
Уникальность
Аа
17271 символов
Категория
Программирование
Реферат

Обзор языка программирования LISP

Обзор языка программирования LISP .doc

Зарегистрируйся в два клика и получи неограниченный доступ к материалам,а также промокод Эмоджи на новый заказ в Автор24. Это бесплатно.

Введение
Сегодня на рынке IT множество языков программирования: многие из них зародились еще в 20 веке, на заре информационной эры, такие как С или Ассемблер, а некоторые появились относительно недавно, вроде Golang. На становление и развитие этих языков влияли многие факторы, но самым важным было тот, какие задачи был призван решить тот или иной язык программирования.
В данной работе нами будет рассмотрен один из самых старых языков программирования – LISP.  Данный язык программирования, задумываемый как эффективный инструмент для работы с искусственным интеллектом, который не растратил своей актуальности в своей предметной области, где до сих пор считается одним из самых важных и удобных инструментов для решения встречающихся задач.
Актуальность: язык LISP является достаточно старым языком программирования, что делает его достаточно изученным. У него есть хорошая документация, а также ряд отличных книг, которые позволяют разобраться в сущности данного языка программирования. Например “Структура и интерпретация компьютерных программ”, книга, по которой некогда учили будущих инженеров в МИТ, является примером классической книги по информатике и программированию, подает ключевые идеи компьютерных наук с точки зрения разработки на LISP.
Цель: рассмотреть особенность языка программирования LISP
Задачи:
Рассмотреть историю становления языка
Рассмотреть ключевые особенности языка: его базовые конструкции и возможности
Обзор языка программирования LISP
История возникновения
История языка программирования LISP начиналась в стенах Стэнфордского университета, где под руководством Дж. Маккарти была разработана первая версия интерпретатора данного языка программирования. 
Джон Маккарти занимался исследованиями в области разработки систем искусственного интеллекта, что требовало наличия инструментов, которые способствовали бы решению возникающих в этой области проблем. Т.к то время было только зарей цифровой эры, то никаких других удобных инструментов не было, было принято решение разработать собственный язык программирования для решения стоящих перед учеными задачи.
Изначально язык задумывался  как расширенная версия языка Fortran, чьи базовые возможности будут расширены функционалом для работы с матрицами, указателями, структурами из указателей. Однако до реализации заложенных идей дело так и не дошло, в силу разных причин. 
Первая версия языка увидела свет в 1958 году. Что позволяет считать LISP одним из двух старейших языков программирования высокого уровня и безусловно первым языком программирования с динамическим управлением памятью. Это очень важная особенность, которая позволяет эффективно управлять памятью: освобождать место из-под ненужных данных и резервировать место под потенциальные нужды. 
В итоге язык получил свои ключевые особенности: единое списковое представление для программ и данных. Это вообще очень важная особенность, т.к в этом языке программирования нет принципиальной разницы между функциями и данными с точки зрения внутренней реализации. Другой важной особенностью языка стала его высокая строгость и особенный, “скобочный” синтаксис, который делает этот язык очень узнаваемым на фоне других языков, включая те, что используют блочные представления (вроде С или Java).
Ключевая задача LISP – это работа со списковыми структурами, для этих задач он необычайно хорош. Собственно говоря, аббревиатура LISP так и расшифровывается, как процессор для списков(LISt Proccessor).
LISP – является старейшим высокоуровневым языком, если не самым старым, то точно входит в лидеры по этому показателю. 
У языков высокого уровня можно выделить две ключевые особенности: человекоориентрованность, если это можно таким образом охарактеризовать, то есть написание кода делается максимально доступным для человеческого восприятия, в то время низкоуровневые языки, такие как Ассемблер, едва ли могут похвастаться такой чертой. 
Код, написанный на LISP, с точки зрения современной разработки, является менее понятным для разработчика чем, скажем, код на таких языках как Python или Ruby, но для своего времени – это был один из самых удобных и легких языков.
Ключевые особенности
Высокоуровневость. Языки позволяет писать человекочитаемый код, который через интерпретатор переводится в машинный код.
Регистронезависимость. Разработчик может использовать любой регистр для написания кода на данном языке

Зарегистрируйся, чтобы продолжить изучение работы

. Отдельные новые версии языка поддерживают Unicode.
Данные и функции - одно и то же. Ключевая черта LISP – списочные структуры, при помощи которых определяются как данные, так и функции. С точки зрения интерпретатора нет разницы, что им обрабатывается в данный момент, данные или функция.
Скобочная структура. В силу того, что язык является по своей сути обработчиком списков, это накладывает свою специфику. Для форматирования логических блоков кода, которые делятся на атомарные единицы при помощи скобочных блоков. Это не является существенной проблемой для небольшого кода, сложную логику, таким образом, воспринимать очень сложно, что делает код менее воспринимаемым.
Префиксаная нотация. Стиль написания кода на LISP имеет отличительную особенность, которая выделяет его на фоне других языков программирования – префиксаная нотация. Префиксаная нотация – это стиль написания кода, когда оператор указывается перед операндами. Пример такого кода на LISP:
(+ 200 200)
Таким образом записывается код, который выполняет сложение 200 + 200. Примерно, таким образом строится весь программный код, который заключается в вычислении операндов, а затем в порядковом применении оператора к операндам слева на право.
Динамическое управление памятью. Интерпретатор LISP сам управляет резервированием и освобождением памяти при интерпретировании кода.
Динамическая типизация. Под динамической типизацией понимается автоматическое определение типов данных при выполнении программного кода.
Большое количество диалектов. Диалекты, не что иное, как отдельные версии языка, которые расширяют базовую версию языка, добавляя в нее какие-то дополнительные функции. У LISP большое количество диалектов, однако, на сегодня, наиболее распространенными являются Common Lisp и Racket.
Направленность на обработку списочных структур. У языка есть функционал для удобной обработки списковых структур.
Поддержка множества парадигм программирования. Парадигма программирования – это некоторый набор техник по написанию программного кода, определяющих принцип построения программного обеспечения. LISP поддерживает следующие парадигмы:
А) Функциональное программирование – программирование, в центре которого находятся функции. Ключевой особенностью функционального программирования является то, что при вычислениях не сохраняется внутреннее состояние функции или объекта. 
Б) Императивное программирование. Эта парадигма о последовательном вычислении значений. То есть программа работает с данными, которые в свою очередь являются результатом вычисления выполненных в потоке выполнения программы.
В) Многопоточное программирование. Парадигма, в центре которой параллельный запуск потоков выполнения программ.
Г) Объектно-ориентированное программирование. Строится вокруг идеи об объектах. Некоторых вычислительных абстракций, совокупности данных и функций, которые инкапсулированы внутри программной сущности (объекта). Ключевой идеей объектно-ориентированного программирования является идея о сохранении внутреннего состояния объекта в переменных состояния объекта.
Структуры данных и базовые конструкции
В основе построения программ на LISP являются специализированные списочные структуры – S-выражения, которые строятся на основе символов, атомов и их совокупностей. S-выражения позволяют записывать программный код в определённом виде, который является набором инструкций обернутых скобками.
Символ – объект в памяти компьютера, который представляет собой совокупность ячеек, хранящих ссылки. Назначение ячеек:
Имя — строка, состоящая из знаков, по которой программа ссылается на данный символ.
Функциональный слот — лямбда-выражение, связанное с символом. В этом случае обращение к символу в программе синтаксически соответствует вызову функции, в результате вычисляется лямбда-выражение, связанное с символом.
Значение — объект, который можно трактовать как данные. Если программа обращается к символу как переменной, она извлекает значение данной ячейки.
Все остальные.
Атомы — минимальные единицы в LISP, представляют собой символьные и численные значения. Числа, сами по себе, не являются символами в LISP, т.к. могут иметь только собственное числовое значение, однако могут наравне с символами входить в списки.
Базовая структура данных в LISP— динамический список, состоящий из атомов, определяемый рекурсивно как головной объект и присоединённый к нему список-хвост

50% реферата недоступно для прочтения

Закажи написание реферата по выбранной теме всего за пару кликов. Персональная работа в кратчайшее время!

Промокод действует 7 дней 🔥

Магазин работ

Посмотреть все
Посмотреть все
Больше рефератов по программированию:

Машинное и глубокое обучение

20580 символов
Программирование
Реферат
Уникальность

Этапы разработки мобильного приложения

8675 символов
Программирование
Реферат
Уникальность

Современные демографические проблемы и пути их решения

28986 символов
Программирование
Реферат
Уникальность
Все Рефераты по программированию
Найди решение своей задачи среди 1 000 000 ответов
Крупнейшая русскоязычная библиотека студенческих решенных задач