Common Lisp

Материал из Seo Wiki - Поисковая Оптимизация и Программирование
Перейти к навигацииПерейти к поиску
Common Lisp
Семантика:

мультипарадигмальный: объектно-ориентированный, функциональный, императивный, метаязык

Тип исполнения:

компилируемый

Появился в:

1984, стандартизирован ANSI в 1994 г.

Автор(ы):

комитет X3J13

Типизация данных:

сильная, динамическая, с опциональными декларациями типов

Основные реализации:

Allegro Common Lisp, ABCL, CLISP, Clozure CL, CMUCL, Corman Common Lisp, ECL, LispWorks, Scieneer CL, SBCL

Испытал влияние:

Lisp, Lisp Machine Lisp, MacLisp, InterLisp, Scheme

Повлиял на:

Clojure, Factor, Dylan, EuLisp, ISLisp, SKILL, Stella, SubL

Common Lisp (в переводе с англ. «Общий Лисп», сокр. CL) — диалект языка Лисп, стандартизированный ANSI (ANSI INCITS 226—1994 (R2004), ранее X3.226-1994 (R1999)). Разработанный с целью привести к общему знаменателю множество существовавших на тот момент диалектов Лиспа, является скорее стандартом языка, нежели отдельной реализацией. Доступно несколько реализаций Common Lisp, как коммерческих, так и свободно распространяемых.

Common Lisp — мультипарадигменный (то есть, поддерживающий несколько парадигм) язык программирования общего назначения. Он поддерживает комбинацию процедурного, функционального и объектно-ориентированного программирования.

Common Lisp включает в себя CLOS, систему Lisp макросов, позволяющую вводить в язык новые синтаксические конструкции, использовать техники метапрограммирования и обобщённого программирования.

Синтаксис

Common Lisp использует S-выражения для обозначения как кода, так и данных. Вызовы функций и макросов являются списками, где первый элемент, или голова списка, является именем функции, а остальные, — «хвост» списка, — аргументами. <source lang="lisp"> (+ 2 2)  ; складывает 2 и 2, возвращая результат 4. (- 8 3)  ; вычитает из восьми три, возвращая результат 5. (reverse "Здравствуй, мир!")  ; переворачивает строку, возвращая «"!рим ,йувтсвардЗ"»

определения переменных и функций

(defvar *x*)  ; Определяет переменную *x*, не присваивая ей какого-либо

                             ; значения. Две звёздочки, являющиеся частью имени — принятый 
                             ; стандарт для именования глобальных переменных.  

(setf *x* 42.1)  ; присваивает переменной *x* значение с плавающей запятой 42,1.

(defun square (x)  ; Определение функции square, получающей один аргумент

 (* x x))                    ; и возвращающей его квадрат. 

(square *x*)  ; вызывает функцию square, передавая ей значение переменной *x*

                             ; и возвращает её квадрат (1772,41).

</source>

Типы данных

Скалярные типы

Числовые типы включают в себя целые, отношения, числа с плавающей запятой и комплексные числа.[1] Common Lisp даёт возможность использовать большие числа для представления любых величин с большей точностью. Отношения могут быть представлены дробями.

Литеры в Common Lisp не ограничены ASCII. Большинство современных реализаций поддерживают Юникод.

Понятие Символа довольно близко Лиспу, хотя практически неизвестно в таком виде в других языках. В Лиспе символ — это уникальный объект из данных, включающих в себя: имя, значение, функцию, список свойств и пакет (пространство имён). Символы в Лиспе часто используются так же, как идентификаторы в других языках: для хранения значения переменной. Однако у них есть множество других применений. Обычно, когда символу присваивается значение, оно тут же им и возвращается. Некоторые символы присваивают значение сами себе. Например, булевы значения представлены в качестве двух самоопределяющихся символов, — T и NIL.

Есть несколько функций для округления скаларных типов разными способами. Функция round округляет аргумент до ближайшего целого числа, а если число стоит «посередине», то до ближайшего чётного. Функция truncate округляет числа по направлению к нулю. Функции floor («пол») и ceiling («потолок») округляют к ближайшему большему и ближайшему меньшему числу соответственно. Все функции возвращают дробную часть в качестве вторичного результата. Например: <source lang="lisp"> (round 2.5)  ; возвращает 2 и 0.5 (round 3.5)  ; возвращает 4 и -0.5 (truncate 1.5)  ; возвращает 1 и 0.5 (truncate -4.5)  ; возвращает -4 и -0.5 (floor -2.5)  ; возвращает -3, 0.5 (ceiling -2.5)  ; возвращает -2, -0.5; </source>

Реализации

Common Lisp отличается от таких языков как C#, Java, Perl, Python тем, что он определяется своим стандартом и не существует его единственной или канонической реализации. Любой желающий может ознакомиться со стандартом и создать свою собственную реализацию. Common Lisp автоматически признаёт эти типы как равные.

Таблица сравнения основных реализаций[2][3]
Название Поддерживаемые платформы Компиляция Возможности Лицензия
CLISP Windows, Mac, *nix Байт-код GNU GPL
CMUCL[4] Linux, FreeBSD, Solaris, Darwin Байт-код, Native, Block Compilation Общественное достояние с частями под BSD License
ECL Microsoft Windows, *nix, Mac OS X Байт-код, native via C GNU GPL с частями под другими лицензиями
GCL Windows, *nix Native via C GNU GPL
Clozure CL (бывший OpenMCL)[5] Linux/PPC, Linux/X86-64, Darwin/PPC, Darwin/X86-64, FreeBSD/X86-64, Windows Native LGPL
SBCL Linux, BSD, Solaris, Mac OS X (Darwin), Windows (экспериментально) Native Общественное достояние с частями под MIT License и BSD License
ABCL[6] *nix, MacOS X (Darwin), Windows JVM bytecode LGPL
emacs-cl[7] Emacs - Неполная реализация GPL
Allegro Common Lisp Windows, Unix, Linux, Mac OS X Native Коммерческая, доступна ограниченная демоверсия
LispWorks[8] Windows, *nix, Mac OS X Native CAPI - кросс-платформенная GUI-библиотека Коммерческая, доступна ограниченная демоверсия
Corman Common Lisp Windows Native Shareware
YLisp[9] Windows (консоль) Итерпретатор Неполная реализация Freeware

Примечания

  1. http://abhishek.geek.nz/docs/features-of-common-lisp
  2. Список основных реализаций Common Lisp
  3. Lisp Implementations
  4. CMUCL
  5. Clozure CL
  6. Armed Bear Common Lisp
  7. Emacs Common Lisp
  8. LispWorks. Разработчик — LispWorks, LLC (ранее Xanalys, Inc.)
  9. YLisp. Компактный, усечённый CLOS. Разработчики — Д.Иванов и А.Слободюк

Ссылки

  • lisper.ru — Русскоязычное сообщество Common Lisp разработчиков.
  • lisp.ystok.ru — Лисп у «Истоков»: русский LispWorks, проекты с исходным кодом, форумы.
  • CLiki — Common Lisp Wiki.
  • common-lisp.net — хостинг для размещения открытых программных проектов.

Документация и учебники


de:Common Lisp en:Common Lisp es:Common Lisp fi:Common Lisp fr:Common Lisp gl:Common Lisp hr:Common Lisp it:Common LISP ja:Common Lisp ko:커먼 리스프 pl:Common Lisp pt:Common Lisp ro:Common Lisp sv:Common Lisp uk:Common Lisp zh:Common Lisp

Если вам нравится SbUP.com Сайт, вы можете поддержать его - BTC: bc1qppjcl3c2cyjazy6lepmrv3fh6ke9mxs7zpfky0 , TRC20 и ещё....

News https://bukowina.org.ua/ read online