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

1830 байт убрано ,  9 лет назад
ПРЯЧУ КРАСНОТУ ДО ЛУЧШИХ ВРЕМЕН
м (Правки Kgvklhjul (обсуждение) откачены к версии 89.232.105.200)
(ПРЯЧУ КРАСНОТУ ДО ЛУЧШИХ ВРЕМЕН)
__NOEDITSECTION__
<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">Дело</span> в том, что лисповый код…
<span style="margin-left:-0.6em">…представляется</span> простой и удобной структурой данных — списком (точнее, одно[[w:Связный список|связным списком]], стало быть [[w:Дерево (теория графов)|деревом]]), где всевозможные составные части программы: числа, [[Лисп/Текст|текст]], имена переменных, [[Лисп/Функции|функции]], [[Лисп/Спецоператоры|особые операторы]]… — абстрагируются до общего понятия [[Лисп/Символы|''символа'']]. А ведь Лисп на короткой ноге со всевозможными [[Лисп/Структуры данных|структурами данных]]. Вот и получается, что [[Лисп/Метапрограммирование|метапрограммирование]] — в&nbsp;самой&nbsp;основе&nbsp;этого языка. Но и не только оно, разумеется.
 
Здесь мы намерены научить читателя программировать на Лиспе, хотя бы в одном из его [[Лисп/Диалекты|диалектов]]. Ответственный подход к этой задаче требует (перед изучением языка или же одновременно) изучение искусства программирования как такового, — дело многих лет академического занятия, чтения и практики. Притом, независимо от наличия навыка программирования на иных языках, начинающему лиспнику нужно изучать много нового, порою старательно отвыкая от привычных ограничений, дабы окунуться в бездонную многомерность «программируемогонепрограммируемых языкаязыков программирования»… Задача перед нами гигантская.
 
<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>
*[[Лисп/Введение|Введение]]<small> в наш порядок изучения</small>
 
===ЭлементыОсновы===
*[[Лисп/Синтаксис|Синтаксис]]
*[[Лисп/Символы|Символы]] и символьное исчисление
*[[Лисп/Типы данных|Типы данных]]
*[[Лисп/Функции|Функции]] и функциональный стиль
*:→ [[:Категория:Функциональное программирование|Категория «Функциональное программирование»]]
**[[Лисп/Рекурсия|Рекурсия]]
*[[Лисп/Структуры данных|Структуры данных]]<small>: от последовательностей и структур к сетям и системам</small>
*[[Лисп/Макросы|Макросы]], введение в метапрограммирование
*[[Лисп/Спецоператоры|Спецоператоры]]
 
===ЧастностиРазности===
*[[Лисп/Обход|Обход]]: итерация и обход сложных структур
*[[Лисп/Текст|Текст]]: обработка, индексация, структурный анализ
*[[Лисп/Чтение|Чтение]] всевозможных источников
*[[Лисп/Служебные подпрограммы|Служебные подпрограммы]] для общих задач
*[[Лисп/Математика|Математика]]
*[[Лисп/Графика|Графика]]
*[[Лисп/Инкапсуляция|Инкапсуляция]] и [[Лисп/Модули|модули]]
**[[newLISP/Контексты|«Контексты»]] языка newLISP
*[[Лисп/Базы данных|Базы данных]]
*[[Лисп/Отложенное вычисление|Отложенное вычисление]]
*[[Лисп/Постоянные объекты|Постоянные объекты]]
*[[Лисп/Библиотеки|Библиотеки]]
 
===Тонкости===
*[[Лисп/Метапрограммирование|Метапрограммирование]]
*[[Лисп/Поток выполнения|Поток выполения]]
**[[Лисп/Условия и возобновления|Условия и возобновления]]
**[[Лисп/Параллелизм|Паралеллизм]]
*[[Лисп/Оптимизация|Оптимизация]]
*[[Лисп/Амортизация|Амортизация]], [[Лисп/Приспособляющиеся структуры|приспособляющиеся структуры]]
<!-- КРАСНОТА
*[[Лисп/Общение|Общение]]<small>: от программных интерфейсов к код-генераторам и интерпретаторам</small>
*[[Лисп/Подпрограммы]]<small>: как локализовать эффекты низкоуровневых процедур. Импорт из Си.
*[[Лисп/Низкоуровневое программирование|Низкоуровневое программирование]]
 
===Разности===
*[[Аспектно-ориентированное программирование]]<small> (примеры на [[Java]])</small>-->
*[[Введение в язык Scheme для школьников]]
*[[Восходящее программирование]]
 
<!-- ПРЯЧУ КРАСНОТУ ДО ЛУЧШИХ ВРЕМЕН
===Применения===
*[[Лисп/Прототипирование|Прототипирование]]
*[[Агенты]]
*[[Лингвоанализ]]: распознание речи и смысла, говороботы
*[[Различение образов]] и [[раскопка данных]]-->
</div>
==Примечания==
<div style="max-width:52em;margin:0 auto 0 3%;">
<p style="margin-left:1.7em;">0. Сноски в этом учебнике заключают строго необязательное, второстепенное повествование, призванное дать пояснение неочевидным утверждениям или решить возможные вопросы. Если таковых у Вас не возникает — смело пропускайте примечания.</p>
<references />
</div>
3210

правок