Знаймо

Додати знання

приховати рекламу

Цей текст може містити помилки.

Common Lisp



План:


Введення

Common Lisp (скор. CL) - діалект мови Лісп, стандартизований ANSI [1]. Був розроблений з метою об'єднання розрізнених на той момент діалектів Ліспу. Доступно декілька реалізацій Common Lisp, як комерційних, так і вільно розповсюджуваних.

Common Lisp - мультіпарадігменний (тобто, що підтримує кілька парадигм) мова програмування загального призначення. Він підтримує комбінацію процедурного, функціонального і об'єктно-орієнтованого програмування.

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


1. Синтаксис

Common Lisp використовує S-вирази для позначення як коду, так і даних. Виклики функцій і макросів є списками, де перший елемент, або голова списку, є ім'ям функції, а інші, - "хвіст" списку, - аргументами.

 (  +  2  2  )  ; Складає 2 і 2, повертаючи результат 4.  (  -  8  3  )  ; Віднімає з восьми три, повертаючи результат 5.  (  reverse  "Здрастуй, світ!"  )  ; Перевертає рядок, повертаючи ""! Рим, йувтсвардЗ ""  ;; Визначення змінних і функцій:  (  defvar * x *  )  ; Визначає змінну * x *, не привласнюючи їй будь-якого  ; Значення. Дві зірочки, які є частиною імені - прийнятий  ; Стандарт для іменування динамічних змінних.  (  setf  * X *  42.1  )  ; Присвоює змінної * x * значення з плаваючою комою 42,1.  (  defun  square  (  x  )  ; Визначення функції square, що одержує один аргумент  (  * Xx  )  )  ; І повертає його квадрат.  (  square * x *  )  ; Викликає функцію square, передаючи їй значення змінної * x *  ; І повертає її квадрат (1772,41).  (  let  (  (  a  3  )  (  b  4  )  )  (  + Ab  )  )  ; Функція let створює локальні змінні, присвоює їм значення  ; (В даному випадку змінної a присвоюється значення 3, а b - 4),  ; Після чого обчислює і повертає результат функції  ; (В даному випадку 7). Змінні локальні, отже  ; Спроба порахувати значення (+ ab) поза тілом let призведе до помилки. 

2. Типи даних

2.1. Скалярні типи

Числові типи включають в себе цілі, дробу, числа з плаваючою комою і комплексні числа. [2] Common Lisp дає можливість використовувати великі числа для подання будь-яких величин з більшою точністю.

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

Поняття Символу досить близько Лісп, хоча, практично невідомо в такому вигляді в інших мовах. В Ліспі символ - це унікальний об'єкт з даних, що включають в себе: ім'я, значення, функцію, список властивостей і пакет (простір імен). Символи в Ліспі часто використовуються так само, як ідентифікатори в інших мовах: для зберігання значення змінної. Однак, у них є безліч інших застосувань. Зазвичай, коли символу присвоюється значення, воно тут же їм і повертається. Деякі символи присвоюють значення самі собі, так, наприклад, булеві значення представлені в якості двох самовизначаються символів, - T та NIL.

Є кілька функцій для округлення скалярних типів різними способами. Функція round округлює аргумент до найближчого цілого числа, а якщо число стоїть "посередині", то до найближчого парного. Функція truncate округлює числа у напрямку до нуля. Опції floor ("підлогу") і ceiling ("стелю") округляють до найближчого меншого і найближчого більшого числа відповідно. Всі функції повертають дробову частину як вторинної результату.


3. Реалізації

Common Lisp відрізняється від таких мов, як C #, Java, Perl, Python тим, що він визначається своїм стандартом і не існує його єдиною або канонічної реалізації. Будь-який бажаючий може ознайомитися зі стандартом і створити свою власну реалізацію. Common Lisp автоматично визнає ці типи як рівні. [3]

Таблиця порівняння основних реалізацій [4] [5]
Назва Підтримувані платформи Компіляція Можливості Ліцензія
CLISP [6] Windows, Mac, * Nix Байт-код, JIT Маленький розмір образу Лісп-системи. Дуже ефективна довга целочисленная арифметика. Можливість створення виконуваних файлів. FFI (інтерфейс для виклику низькорівневих функцій (функцій з бібліотек, написаних на Сі і т. п.) і для оперування "некерованою" пам'яттю). Функції зворотного виклику (інтеграція з "рідним" кодом платформи). GNU GPL
CMUCL [7] Linux, FreeBSD, Solaris, Darwin Байт-код, машинний код Високоякісний компілятор в машинний код. FFI. Функції зворотного виклику (інтеграція з "рідним" кодом платформи). Суспільне надбання з частинами під BSD License
ECL Windows, * nix, Mac OS X Байт-код, машинний код через C Гарна інтеграція з програмами на Сі і з "рідним" кодом платформи (FFI, функції зворотного дзвінка, можливість створення "рідних" для платформи динамічних та статичних бібліотек). Можливість створення виконуваних файлів. "Рідна" багатопоточність на всіх підтримуваних платформах. GNU GPL з частинами під іншими ліцензіями
Clozure CL (колишній OpenMCL) [8] Linux / PPC, Linux/X86-64, Darwin / PPC, Darwin/X86-64, FreeBSD/X86-64, Windows Машинний код Швидкий компілятор. Потужний і зручний FFI. Функції зворотного виклику (інтеграція з "рідним" кодом платформи). Можливість створення виконуваних файлів. "Рідна" багатопоточність на всіх підтримуваних платформах. LGPL
SBCL [9] Linux, BSD, Solaris, Mac OS X (Darwin), Windows (експериментально) Машинний код Високоякісний компілятор в машинний код. Можливість створення виконуваних файлів. FFI. Функції зворотного виклику (інтеграція з "рідним" кодом платформи). "Рідна" багатопоточність на Linux, Solaris 10 і Mac OS X. Суспільне надбання з частинами під MIT License та BSD License
ABCL [10] JVM байт-код JVM Інтерфейс до платформи Java. Нить. Платформонезавісімость. LGPL
Allegro Common Lisp [11] Windows, Unix, Linux, Mac OS X Машинний код http://franz.com/products/allegrocl/ Комерційна, доступна обмежена демоверсія
LispWorks [12] Windows, * nix, Mac OS X Машинний код Високоякісна IDE. CAPI - бібліотека для створення інтерфейсу користувача. Гарна інтеграція з програмами на Сі і з "рідним" кодом платформи (FFI, функції зворотного дзвінка, можливість створення "рідних" для платформи динамічних та статичних бібліотек). Можливість створення виконуваних файлів. "Рідна" багатопоточність на всіх підтримуваних платформах. Повний список можливостей: http://www.lispworks.com/products/features.html Комерційна, доступна обмежена демоверсія
Corman Common Lisp Windows Машинний код http://www.cormanlisp.com/features.html Shareware, вихідний код системи (виключаючи IDE) доступний

Примітки

  1. ANSI INCITS 226-1994 (R2004), раніше X3.226-1994 (R1999)
  2. Features of Common Lisp - abhishek.geek.nz / docs / features-of-common-lisp
  3. Lisp - програмований мова програмування. - lisper.ru / pcl / lather-rinse-repeat-a-tour-of-the-repl # fnt__3
  4. Перелік основних реалізацій Common Lisp - www.cliki.net / Common Lisp implementation
  5. Lisp Implementations - wiki.alu.org / Implementation
  6. GNU CLISP (Англ.) . - clisp.sourceforge.net /
  7. CMUCL - www.cons.org/cmucl/
  8. Clozure CL - openmcl.clozure.com /
  9. Steel Bank Common Lisp (Англ.) - Sbcl.sourceforge.net /
  10. Armed Bear Common Lisp - armedbear.org / abcl.html
  11. Allegro CL - розробник Franz Inc. (Англ.) - Www.franz.com/
  12. LispWorks - www.lispworks.com / products / lispworks.html. Розробник - LispWorks, LLC (раніше Xanalys, Inc.)

Цей текст може містити помилки.

Схожі роботи | скачати

Схожі роботи:
Lisp
Common Criteria
Common Language Runtime
IBM Common User Access
© Усі права захищені
написати до нас