Функциональное программирование. Язык COMMON LISP

История создания и особенности языка COMMON LISP

Язык COMMON LISP является стандартизованным и наиболее распространенным языком из группы языков, базирующихся на языке LISP. До появления языка COMMON LISP было достаточно много нестандартизированных разновидностей языка LISP. Инициатором стандартизации и появления языка COMMON LISP было Министерство обороны США.

В то время язык Ada был выбран базовым языком, который должен использоваться для военных разработок. В языке Ada не предусмотрены встроенные возможности символьной обработки, и язык не предназначен для решения задач искусственного интеллекта.

В отличие от традиционных программ, в программах искусственного интеллекта нужна возможность обрабатывать данные, представленные не в числовом, а в символьном виде, в том числе предложения на естественном языке, математические формулы. По данным причинам в Министерстве обороны США было принято решение для задач искусственного интеллекта и близких к ним задач использовать не язык Ada, а другой язык, которым стал COMMON LISP.

Язык LISP является первым языком, в котором данные и программы представляются в одном виде. Соответственно, этим свойством обладает и язык COMMON LISP. Представление данных в виде символьных выражений является важной особенностью языка COMMON LISP. Данная особенность предоставляет инженерам широкие возможности символьной обработки в программах на COMMON LISP, что делает язык удобным для решения задач в области искусственного интеллекта.

Кроме того, представление данных и программ в виде символьных выражений позволяет программам на COMMON LISP генерировать новый код, то есть символьные выражения, и немедленно выполнять его. Инженерам предоставляется возможность разрабатывать программы, которые создают новые программы в процессе своей работы. Более подробно перечисленные возможности будут рассмотрены ниже.

Типы и структуры данных

В языке COMMON LISP существуют два основных типа данных. Этими типами являются атомы и списки.

Атомами в языке COMMON LISP называются символы, числа и специальные константы. Символы в терминах языка COMMON LISP — это слова, состоящие из последовательности знаков, например: АВ. Знаками называются буквы, цифры и другие типы символов из таблицы символов ASCII.

COMMON LISP предоставляет большинство типов данных, которые есть в других языках программирования. В их числе множество различных числовых типов: целые числа, рациональные числа, числа с плавающей запятой. Целое число (integer) записывается в виде последовательности цифр: 2014. Рациональная дробь (ratio) представляется в виде отношения двух целых чисел: 2/3. Числа с плавающей запятой (float) кроме цифр содержат точку в качестве десятичного разделителя и представляются в виде десятичной дроби, например, 758.3, или в экспоненциальном виде: 7.583е2. Иерархия числовых типов представлена на рис. 7.1.

Списком называется последовательность из нуля или более разделенных между собой элементов, заключенных в скобки. Эти элементы могут принадлежать к любому типу, в том числе могут являться другими списками.

Элементы простых списков являются атомами, как в приведенном примере:

(А в С)

Вложенные структуры списков также указываются с помощью скобок. Например, список

((А В) С (В (Е F))) представляет собой список из четырех элементов. Первый элемент — подсписок (А В); второй элемент — атом С; третий элемент — подсписок (В (Е F)), который содержит в качестве своего второго элемента подсписок (Е F).

В COMMON LISP возможны два типа представления пустого списка: пара пустых скобок и специальная константа NIL.

Иерархия числовых типов

Рис. 7.7. Иерархия числовых типов

Кроме списков в языке COMMON LISP существуют и другие способы хранения данных, в том числе одномерные и многомерные массивы, структуры и хеш-таблицы. Обсуждение большинства из перечисленных способов хранения данных выходит за пределы данного пособия, с ними можно ознакомиться в [4].

Строкой в языке COMMON LISP является одномерный массив, состоящий из знаков. Строки представляются как набор знаков, заключенный в двойные кавычки: «alpha”. Одиночный знак, например «а», задается так: #а.

 
Посмотреть оригинал
< Пред   СОДЕРЖАНИЕ   ОРИГИНАЛ     След >