Лисп: различия между версиями
Ramir (обсуждение | вклад) Утверждение целиком доказуемо, и является вступительной "хваткой" за читателя. Важно вернуть. |
Ramir (обсуждение | вклад) мНет описания правки |
||
Строка 12: | Строка 12: | ||
<span style="margin-left:-0.6em">…представляется</span> простой и удобной структурой данных — списком (точнее, одно[[w:Связный список|связным списком]], стало быть [[w:Дерево (теория графов)|древом]]), где всевозможные составные части программы: числа, [[Лисп/Текст|текст]], имена переменных, [[Лисп/Функции|функции]], [[Лисп/Спецоператоры|особые операторы]]… — абстрагируются до общего понятия [[Лисп/Символы|''символа'']]. А ведь Лисп на короткой ноге со всевозможными [[Лисп/Структуры данных|структурами данных]]. Вот и получается, что [[Лисп/Метапрограммирование|метапрограммирование]] — в самой основе этого языка. Но и не только оно, разумеется. |
<span style="margin-left:-0.6em">…представляется</span> простой и удобной структурой данных — списком (точнее, одно[[w:Связный список|связным списком]], стало быть [[w:Дерево (теория графов)|древом]]), где всевозможные составные части программы: числа, [[Лисп/Текст|текст]], имена переменных, [[Лисп/Функции|функции]], [[Лисп/Спецоператоры|особые операторы]]… — абстрагируются до общего понятия [[Лисп/Символы|''символа'']]. А ведь Лисп на короткой ноге со всевозможными [[Лисп/Структуры данных|структурами данных]]. Вот и получается, что [[Лисп/Метапрограммирование|метапрограммирование]] — в самой основе этого языка. Но и не только оно, разумеется. |
||
Здесь мы намерены научить читателя программировать на Лиспе, хотя бы в одном из его [[Лисп/Диалекты|диалектов]]. Ответственный подход к этой задаче требует (перед изучением языка или же одновременно) изучение искусства программирования как такового, — дело многих лет академического занятия, чтения и практики. Притом, независимо от наличия навыка программирования на иных языках, начинающему лиспнику нужно изучать много нового, порою старательно отвыкая от привычных ограничений, дабы окунуться в бездонную многомерность «программируемого языка программирования»… Задача перед нами гигантская. |
|||
<span style="margin-left:-0.1em">О</span>днако, Лисп заслужил всестороннего внимания величайших мыслителей информатики и компьютерной технологии, и нам остаётся лишь попытаться вскарабкаться на плечи гигантов, — хотя бы в дидактическом плане, — уместно ссылаясь на избранную [[Лисп/Литература|литературу о Лиспе]], часто общедоступную по Сети. Ясно также, что кратчайший путь к поставленной нами цели не единственен, а расходится по локальным оптимумам для разных людей с разными задачами. Здесь нам опять повезло: перед вами — [[Викиучебник:Введение|'''вики'''учебник]], а это больше, чем просто учебник в свободном доступе: это домашняя страница <big>открытой школы Лиспа</big>, где каждый может быть слушателем или добавить к экспертизе преподавателей.<ref>Изучите [[Справка|справку]] по сайту Викиучебник, освойтесь с [[вики]]-средой, общайтесь с читателями и соавторами (<code>[[Обсуждение:Лисп]]</code>, <code>[[Обсуждение:Лисп/Типы данных]]</code> и так далее.) Проект [[Вики в образовании]] даёт общий взгляд на такой способ открытого сетевого обучения.</ref> |
<span style="margin-left:-0.1em">О</span>днако, Лисп заслужил всестороннего внимания величайших мыслителей информатики и компьютерной технологии, и нам остаётся лишь попытаться вскарабкаться на плечи гигантов, — хотя бы в дидактическом плане, — уместно ссылаясь на избранную [[Лисп/Литература|литературу о Лиспе]], часто общедоступную по Сети. Ясно также, что кратчайший путь к поставленной нами цели не единственен, а расходится по локальным оптимумам для разных людей с разными задачами. Здесь нам опять повезло: перед вами — [[Викиучебник:Введение|'''вики'''учебник]], а это больше, чем просто учебник в свободном доступе: это домашняя страница <big>открытой школы Лиспа</big>, где каждый может быть слушателем или добавить к экспертизе преподавателей.<ref>Изучите [[Справка|справку]] по сайту Викиучебник, освойтесь с [[вики]]-средой, общайтесь с читателями и соавторами (<code>[[Обсуждение:Лисп]]</code>, <code>[[Обсуждение:Лисп/Типы данных]]</code> и так далее.) Проект [[Вики в образовании]] даёт общий взгляд на такой способ открытого сетевого обучения.</ref> |
||
Строка 19: | Строка 19: | ||
==Содержание== |
==Содержание== |
||
<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> |
||
*[[Лисп/Историософия|Историософия]] |
*[[Лисп/Историософия|Историософия]]<small>: происхождение и философские основы Лиспа, его силы и слабости</small> |
||
**[[Лисп/Превосходство|Превосходство]] |
|||
**[[Лисп/Слабые стороны|Слабые стороны]] |
|||
*[[Лисп/Рабочая среда|Рабочая среда]]<small>: диалект и интеграция разработки</small> |
*[[Лисп/Рабочая среда|Рабочая среда]]<small>: диалект и интеграция разработки</small> |
||
*[[Лисп/Литература|Литература]]<small>: о Лиспе или даже ''про'' Лисп</small> |
*[[Лисп/Литература|Литература]]<small>: о Лиспе или даже ''про'' Лисп</small> |
||
Строка 45: | Строка 43: | ||
*[[Лисп/Математика|Математика]] |
*[[Лисп/Математика|Математика]] |
||
*[[Лисп/Графика|Графика]] |
*[[Лисп/Графика|Графика]] |
||
*[[Лисп/Инкапсуляция|Инкапсуляция]] |
*[[Лисп/Инкапсуляция|Инкапсуляция]] и [[Лисп/Модули|модули]] |
||
**[[newLISP/Контексты|«Контексты»]] языка newLISP |
|||
*[[Лисп/Базы данных|Базы данных]] |
*[[Лисп/Базы данных|Базы данных]] |
||
*[[Лисп/Отложенное вычисление|Отложенное вычисление]] |
*[[Лисп/Отложенное вычисление|Отложенное вычисление]] |
||
Строка 76: | Строка 75: | ||
*[[Лингвоанализ]]: распознание речи и смысла, говороботы |
*[[Лингвоанализ]]: распознание речи и смысла, говороботы |
||
*[[Различение образов]] и [[раскопка данных]] |
*[[Различение образов]] и [[раскопка данных]] |
||
*[[Поиск]] |
|||
[…] |
|||
**[[Лисп/Многомерная оптимизация|Многомерная оптимизация]] в химическом кластере |
|||
===Более конкретное применение=== |
|||
*[[Лисп/Применение|Небольшое вступление]] |
|||
*[[Лисп/Описание_задачи|Описание задачи]] |
|||
</div> |
</div> |
||
==Примечания== |
==Примечания== |
Версия от 07:43, 2 января 2009
Лисп полон выгодных особенностей. Он — старейший из ныне живущих языков программирования.[1] Притом по уровню вводимых абстракций и по свободе выражения Лисп превосходит чуть ли не все прочие языки. Например, это также и первый язык функционального программирования, хотя все остальные парадигмы, философии и привычки программирования, — включая непопулярные и чисто гипотетические, — он также поддерживает, гибко и эффективно.
Дело в том, что лисповый код…
(с виду (опять-таки) необычный (весьма)
(из-за
(кажущегося (на первый взгляд) избыточным)
обилия (круглых) скобок))
…представляется простой и удобной структурой данных — списком (точнее, односвязным списком, стало быть древом), где всевозможные составные части программы: числа, текст, имена переменных, функции, особые операторы… — абстрагируются до общего понятия символа. А ведь Лисп на короткой ноге со всевозможными структурами данных. Вот и получается, что метапрограммирование — в самой основе этого языка. Но и не только оно, разумеется.
Здесь мы намерены научить читателя программировать на Лиспе, хотя бы в одном из его диалектов. Ответственный подход к этой задаче требует (перед изучением языка или же одновременно) изучение искусства программирования как такового, — дело многих лет академического занятия, чтения и практики. Притом, независимо от наличия навыка программирования на иных языках, начинающему лиспнику нужно изучать много нового, порою старательно отвыкая от привычных ограничений, дабы окунуться в бездонную многомерность «программируемого языка программирования»… Задача перед нами гигантская.
Однако, Лисп заслужил всестороннего внимания величайших мыслителей информатики и компьютерной технологии, и нам остаётся лишь попытаться вскарабкаться на плечи гигантов, — хотя бы в дидактическом плане, — уместно ссылаясь на избранную литературу о Лиспе, часто общедоступную по Сети. Ясно также, что кратчайший путь к поставленной нами цели не единственен, а расходится по локальным оптимумам для разных людей с разными задачами. Здесь нам опять повезло: перед вами — викиучебник, а это больше, чем просто учебник в свободном доступе: это домашняя страница открытой школы Лиспа, где каждый может быть слушателем или добавить к экспертизе преподавателей.[2]
Покамест же учебник только начат, и для средоточения наших усилий положим такое требование читателю: знание Лиспа Вам нужно для решения некоей сложной задачи, либо определённого класса задач. Вы — не языковед, из любопытства знакомящийся с программистской латынью, а деловой человек, нуждающий верно, точно и красиво излагать на языке творческие мысли. В толстый академико-промышленный справочник по отдельному диалекту вы заглянете лишь изредка, за объяснением выражения, непонятного из контекста. Наш учебник постремится избывать такие неясности добавлением всё новых уроков и уместными ссылками на литературу. Совершенствованию помогут, опять-таки, ваши отзывы и замечания.Содержание
- Историософия: происхождение и философские основы Лиспа, его силы и слабости
- Рабочая среда: диалект и интеграция разработки
- Литература: о Лиспе или даже про Лисп
- Введение в наш порядок изучения
Элементы
- Синтаксис
- Символы и символьное исчисление
- Типы данных
- Функции и функциональный стиль
- Структуры данных: от последовательностей и структур к сетям и системам
- Макросы, введение в метапрограммирование
- Спецоператоры
Частности
- Обход: итерация и обход сложных структур
- Текст: обработка, индексация, структурный анализ
- Чтение всевозможных источников
- Служебные подпрограммы для общих задач
- Математика
- Графика
- Инкапсуляция и модули
- «Контексты» языка newLISP
- Базы данных
- Отложенное вычисление
- Постоянные объекты
- Библиотеки
Тонкости
- Метапрограммирование
- Поток выполения
- Оптимизация
- Амортизация, приспособляющиеся структуры
- Общение: от программных интерфейсов к код-генераторам и интерпретаторам
- Низкоуровневое программирование
Разности
- Аспектно-ориентированное программирование (сопоставление с Java)
- Введение в язык Scheme для школьников
- Восходящее программирование
Применения
- Прототипирование
- Информационные сети
- Человеческие интерфейсы
- Делопроизводство
- Системы автоматического управления
- Агенты
- Лингвоанализ: распознание речи и смысла, говороботы
- Различение образов и раскопка данных
- Поиск
- Многомерная оптимизация в химическом кластере
Примечания
0. Сноски в этом учебнике заключают строго необязательное, второстепенное повествование, призванное дать пояснение неочевидным утверждениям или решить возможные вопросы. Если таковых у Вас не возникает — смело пропускайте примечания.
- ↑ Ибо Ассемблер не назовёшь языком программирования, а Фортран — ныне живущим языком общего назначения.
- ↑ Изучите справку по сайту Викиучебник, освойтесь с вики-средой, общайтесь с читателями и соавторами (
Обсуждение:Лисп
,Обсуждение:Лисп/Типы данных
и так далее.) Проект Вики в образовании даёт общий взгляд на такой способ открытого сетевого обучения.