Лисп: различия между версиями

Материал из Викиучебника — открытых книг для открытого мира
Содержимое удалено Содержимое добавлено
мНет описания правки
мНет описания правки
Строка 1: Строка 1:
{{wikipedia}}
{{wikipedia}}<ref>Сноски заключают строго необязательное, второстепенное повествование, призванное дать пояснение неочевидным утверждениям или решить возможные вопросы. Если таковых у Вас не возникает — смело пропускайте примечания, и всевозможные другие элементы интерфейса ;-)</ref>
__NOTOC__
__NOTOC__
__NOEDITSECTION__
__NOEDITSECTION__
<div style="max-width:52em;margin:1em auto 0 4%;">
<div style="max-width:52em;margin:1em auto 0 4%;">
<span style="margin-left:-0.1em"><big>Лисп</big></span>&nbsp;полон&nbsp;выгодных&nbsp;особенностей. Он&nbsp;— старейший из&nbsp;ныне&nbsp;живущих языков программирования.<ref>Ибо [[w:Ассемблер|Ассемблер]] не назовёшь языком программирования, а [[w:Фортран|Фортран]] — ныне живущим языком&nbsp;общего&nbsp;назначения.</ref> Притом по&nbsp;уровню вводимых абстракций и по&nbsp;свободе выражения Лисп превосходит чуть ли не все прочие языки. Например, это также и первый язык [[:Категория:Функциональное программирование|функционального программирования]], хотя все остальные парадигмы, философии и привычки программирования, — включая непопулярные и чисто гипотетические, — он также поддерживает, гибко и эффективно.
<span style="margin-left:-0.1em"><big>Лисп</big></span> полон выгодных особенностей. Он — старейший из ныне живых языков программирования.<ref>Ибо [[w:Ассемблер|Ассемблер]] «язык» машины, а не программирования, а [[w:Фортран|Фортран]] — не вполне жив.</ref> Притом по уровню вводимых абстракций и по свободе выражения Лисп превосходит чуть ли не все прочие языки. Это первый язык [[:Категория:Функциональное программирование|функционального программирования]], но и любые парадигмы, философии, привычки, исторические влияния и стандарты программирования, — он поддерживает гибко и эффективно. <span style="margin-left:-0.1em">Дело</span> в том, что лисповый код представляется…
<code style="display:block;clear:both;width:30em;margin:0 auto;"><source lang="lisp">
(через
(избыточное (на первый взгляд))
нагромождение (круглых) скобок))</source>
…</code>
<span style="margin-left:-1.61803em">— одно[[w:Связный список|связным списком]].<ref>В основных диалектах у символов статическая область видимости, и древо символов со введением связи «обозначения» становится [[:w:en:Series-parallel partial order|последовательно-параллельным частичным порядком]], для начала.</ref>


Всевозможные элементарные части программы: числа, [[Электронный текст|текст]], имена переменных, — в каждом случае абстрагируются до общего понятия [[Лисп/Символы|''символа'']], [[Лисп/Функции|функции]] – до понятия ''формы'', а сплошная типизация «статических языков» заменяется необязательной декларацией типов, — допустимой, практически, на любом шаге программы, как и вкомпиляция произвольного кода. Хотя, даже на встроенных функциях программы на [[Lisp/диалекты|диалекте]] Common Lisp довольно производительны, притом встроенные функции также можно переопределять.
<span style="margin-left:-0.1em">Дело</span> в том, что лисповый код…
<code style="display:block;clear:both;width:30em;margin:0 auto;"><source lang="lisp">(с виду (опять-таки) необычный (весьма)
(из-за
(кажущегося (на первый взгляд) избыточным)
обилия (круглых) скобок))</source></code>
<span style="margin-left:-0.6em">…представляется</span> простой и удобной структурой данных — списком (точнее, одно[[w:Связный список|связным списком]], стало быть [[:w:en:multitree|мультидеревом]]), где всевозможные составные части программы: числа, [[Электронный текст|текст]], имена переменных… — в каждом случае абстрагируются до общего понятия [[Лисп/Символы|''символа'']], [[Лисп/Функции|функции]] – до понятия ''формы'', а сплошная типизация «чистых функций» заменяется необязательной декларацией типов, — допустимой, практически, на любом шаге программы, но равно как и «вкомпиляция» произвольного кода. Хотя и даже на базовых функциях программы общего назначения на Лиспе довольно производительны.


Познание вычисления как такового — стезя академического курса и лет практики. Притом же надо примером отразить привычные ограничения «непрограммируемых языков программирования». Задача гигантская, однако, на Лисп упало внимание многих компьютерно-математических гениев, а нам следует вскарабкаться на плечи гигантов, уместно освещая избранную [[Лисп/Литература|литературу о Лиспе]]. Ясно также, что кратчайшие пути обучения расплетаются по локальным оптимумам для разных задач. Здесь нам опять повезло: перед вами — не просто [[:w:Викиучебник|учебник в свободном доступе]], а домашняя страница <big>открытой школы</big>, где каждый может быть и слушателем, и автором.<ref>Изучите [[Справка|справку]] по сайту Викиучебник, освойтесь с [[вики]]-средой, общайтесь с читателями и соавторами (<code>[[Обсуждение:Лисп]]</code>, <code>[[Обсуждение:Лисп/Типы данных]]</code> и так далее.)<ref></div>
Здесь мы намерены научить читателя программировать на Лиспе, хотя бы в одном из его [[Лисп/Диалекты|диалектов]]. Ответственный подход к этой задаче требует (перед изучением языка или же одновременно) преподать искусство вычисления вообще, — стязи многих лет академического занятия, практики, чтения и практики. Притом же надо передумать привычные ограничения «непрограммируемых языков программирования»… Задача перед нами гигантская.

<span style="margin-left:-0.1em">О</span>днако, Лисп заслужил всестороннего внимания величайших мыслителей информатики и компьютерной технологии, и нам остаётся лишь попытаться вскарабкаться на плечи гигантов, — хотя бы в дидактическом плане, — уместно ссылаясь на избранную [[Лисп/Литература|литературу о Лиспе]], часто общедоступную по Сети. Ясно также, что кратчайший путь к поставленной нами цели не единственен, а расплетается по локальным оптимумам для разных вычислительных применений компьютера. Здесь нам опять повезло: перед вами — не просто учебник в свободном доступе: это домашняя страница <big>открытой школы</big>, где каждый может быть слушателем или добавить к экспертизе преподавателей.<ref>Изучите [[Справка|справку]] по сайту Викиучебник, освойтесь с [[вики]]-средой, общайтесь с читателями и соавторами (<code>[[Обсуждение:Лисп]]</code>, <code>[[Обсуждение:Лисп/Типы данных]]</code> и так далее.) Проект [[Вики в образовании]] даёт общий взгляд на такой способ открытого сетевого обучения.</ref>

Пока же учебник только намечается, и для средоточения наших усилий положим такое требование читателю: знание Лиспа Вам нужно для решения некоей сложной задачи, либо определённого класса задач. Вы — не языковед, из любопытства знакомящийся с программистской латынью, а деловой человек, нуждающий верно, точно и красиво излагать на языке творческие мысли. В толстый академико-промышленный справочник по отдельному диалекту вы заглянете лишь изредка, за объяснением выражения, непонятного из контекста. Наш учебник постремится избегать такие неясности добавлением всё новых уроков и уместными ссылками на литературу. Совершенствованию помогут, опять-таки, ваши отзывы и замечания.</div>
==Содержание==
==Содержание==
<div style="max-width:52em;margin:2em auto 0 4%;padding-left:0.1em;"><small>''([[(несуществующая страница)|Красным]] — даже не начатое.)''</small>
<div style="max-width:52em;margin:2em auto 0 4%;padding-left:0.1em;"><small>''([[(несуществующая страница)|Красным]] — даже не начатое.)''</small>

Версия от 05:57, 8 мая 2011


Лисп полон выгодных особенностей. Он — старейший из ныне живых языков программирования.[1] Притом по уровню вводимых абстракций и по свободе выражения Лисп превосходит чуть ли не все прочие языки. Это первый язык функционального программирования, но и любые парадигмы, философии, привычки, исторические влияния и стандарты программирования, — он поддерживает гибко и эффективно. Дело в том, что лисповый код представляется…

(через
  (избыточное (на первый взгляд))
  нагромождение (круглых) скобок))

— односвязным списком.[2]

Всевозможные элементарные части программы: числа, текст, имена переменных, — в каждом случае абстрагируются до общего понятия символа, функции – до понятия формы, а сплошная типизация «статических языков» заменяется необязательной декларацией типов, — допустимой, практически, на любом шаге программы, как и вкомпиляция произвольного кода. Хотя, даже на встроенных функциях программы на диалекте Common Lisp довольно производительны, притом встроенные функции также можно переопределять.

Познание вычисления как такового — стезя академического курса и лет практики. Притом же надо примером отразить привычные ограничения «непрограммируемых языков программирования». Задача гигантская, однако, на Лисп упало внимание многих компьютерно-математических гениев, а нам следует вскарабкаться на плечи гигантов, уместно освещая избранную литературу о Лиспе. Ясно также, что кратчайшие пути обучения расплетаются по локальным оптимумам для разных задач. Здесь нам опять повезло: перед вами — не просто учебник в свободном доступе, а домашняя страница открытой школы, где каждый может быть и слушателем, и автором.<ref>Изучите справку по сайту Викиучебник, освойтесь с вики-средой, общайтесь с читателями и соавторами (Обсуждение:Лисп, Обсуждение:Лисп/Типы данных и так далее.)<ref>

Содержание

(Красным — даже не начатое.)

Основы

Разности

Примечания

  1. Ибо Ассемблер «язык» машины, а не программирования, а Фортран — не вполне жив.
  2. В основных диалектах у символов статическая область видимости, и древо символов со введением связи «обозначения» становится последовательно-параллельным частичным порядком, для начала.